## 支持向量分类
> 基于`libsvm`实现支持向量机的分类器。
### 构造函数参数
`$kernel(int)` - 算法中使用的内核类型(默认内核:: RBF)
`$cost(float)` - C-SVC的参数C(默认值为1.0)
`$degree(int)` - `Kernel :: POLYNOMIAL`函数的度数(默认为3)
`$gamma(float)` - 'Kernel :: RBF',`Kernel :: POLYNOMIAL'和'Kernel :: SIGMOID`的内核系数。如果gamma为`null`,则将使用1 / features。
`$coef0(float)` - 内核函数中的独立项。它仅在`Kernel :: POLYNOMIAL'和'Kernel :: SIGMOID`中有效(默认为0.0)
`$ tolerance(float)` - 终止标准的容差(默认值为0.001)
`$cacheSize(int)` - 以MB为单位的缓存内存大小(默认为100)
`$shrinking(bool)` - 是否使用收缩启发式(默认为true)
`$probabilityEstimates(bool)` - 是否启用概率估计(默认为false)
```
$classifier = new SVC(Kernel::LINEAR, $cost = 1000);
$classifier = new SVC(Kernel::RBF, $cost = 1000, $degree = 3, $gamma = 6);
```
*****
## 训练
训练分类器只需提供训练样本(`$samples`)和标签(`$labels`)。例:
```php
use Phpml\Classification\SVC;
use Phpml\SupportVectorMachine\Kernel;
$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];
$classifier = new SVC(Kernel::LINEAR, $cost = 1000);
$classifier->train($samples, $labels);
```
您可以使用多个数据集训练分类器,预测将基于所有训练数据。
*****
## 预测
预测样本标签使用`predict`方法。您可以提供一个样本或样本数组:
```
$classifier->predict([3, 2]);
// return 'b'
$classifier->predict([[3, 2], [1, 5]]);
// return ['b', 'a']
```
*****
## 概率估计
要预测概率,必须构建一个`$probabilityEstimates`设置为true的分类器。例:
```
use Phpml\Classification\SVC;
use Phpml\SupportVectorMachine\Kernel;
$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];
$classifier = new SVC(
Kernel::LINEAR, // $kernel
1.0, // $cost
3, // $degree
null, // $gamma
0.0, // $coef0
0.001, // $tolerance
100, // $cacheSize
true, // $shrinking
true // $probabilityEstimates, set to true
);
$classifier->train($samples, $labels);
```
然后使用`predictProbability`方法代替`predict`:
```
$classifier->predictProbability([3, 2]);
// return ['a' => 0.349833, 'b' => 0.650167]
$classifier->predictProbability([[3, 2], [1, 5]]);
// return [
// ['a' => 0.349833, 'b' => 0.650167],
// ['a' => 0.922664, 'b' => 0.0773364],
// ]
```
- 基本介绍
- 关联规则学习
- 分类
- SVC
- k近邻算法
- NaiveBayes
- 回归
- 最小二乘法
- SVR
- 聚类
- k均值聚类算法
- DBSCAN聚类算法
- 公
- 准确性
- 混乱矩阵
- 分类报告
- 工作流程
- 神经网络
- 交叉验证
- 随机拆分
- 分层随机分裂
- 特征选择
- 方差阈值
- 特征选择
- 预处理
- 标准化
- 缺失值补全
- 特征提取(自然语言)
- 令牌计数矢量化器(文本处理)
- Tf-idf转换
- 数据集
- ArrayDataset
- CsvDataset
- FilesDataset
- SvmDataset
- MnistDataset
- 准备使用数据集
- Iris Dataset
- Wine Dataset
- Glass Dataset
- 模型管理
- 数学
- 距离
- 矩阵
- 组
- 统计