juliardi / c45
0.1.0
2018-05-20 07:08 UTC
Requires
- php: >=5.5
- juliardi/data-reader: ^1.0
This package is auto-updated.
Last update: 2024-08-29 04:31:14 UTC
README
纯PHP实现的C45算法
注意:此实现不支持数据训练的数值。我没有计划实现它。欢迎提交pull request。
安装
建议通过composer安装此扩展。
运行
php composer.phar require --prefer-dist juliardi/c45 "*"
或将以下内容添加到您的composer.json文件中的require部分:
"juliardi/c45": "*"
要求
此库不需要任何特殊配置。您可以直接使用它。但是,为了使库按照预期运行,必须满足以下一些要求。
- 您只能使用CSV文件作为训练数据的输入。这是一个糟糕的决定,我承认。然而,目前我还没有时间实现读取训练数据的更通用方式。
- CSV文件的第一行必须是属性名,并且必须用双引号引起来。
以下是一个有效的训练CSV示例
"outlook", "windy", "humidity", "play"
sunny, false, high, no
sunny, true, high, no
sunny, false, high, no
sunny, false, medium, yes
sunny, true, medium, yes
overcast, false, medium, yes
overcast, true, medium, yes
overcast, true, high, yes
overcast, false, medium, yes
rain, false, high, yes
rain, false, medium, yes
rain, true, medium, no
rain, false, medium, yes
rain, true, medium, no
使用方法
假设您有以下的目录结构
.
├── src
| ├── index.php
| └── data.csv
├── vendor
├── composer.json
您可以在index.php
中使用PHP-C45,如下所示
<?php require_once __DIR__ . '/../vendor/autoload.php'; use C45\C45; $filename = __DIR__ . '/data.csv'; $c45 = new C45([ 'targetAttribute' => 'play', 'trainingFile' => $filename, 'splitCriterion' => C45::SPLIT_GAIN, ]); $tree = $c45->buildTree(); $treeString = $tree->toString(); // print generated tree echo '<pre>'; print_r($treeString); echo '</pre>'; $testingData = [ 'outlook' => 'sunny', 'windy' => 'false', 'humidity' => 'high', ]; echo $tree->classify($testingData); // prints 'no'