写一个用支持向量机将一维数据分成三类的代码
时间: 2024-03-11 17:48:00 浏览: 43
好的,以下是一个用支持向量机将一维数据分成三类的 Python 代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
# 生成数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(60, 1), axis=0)
Y = np.zeros((60, ), dtype=int)
Y[X[:, 0] < 1.5] = 0
Y[(X[:, 0] >= 1.5) & (X[:, 0] < 3)] = 1
Y[X[:, 0] >= 3] = 2
# 拟合 SVM 模型
clf = svm.SVC(kernel='linear', C=10, decision_function_shape='ovr')
clf.fit(X, Y)
# 画出决策边界和支持向量
plt.scatter(X, Y, cmap=plt.cm.Paired)
plt.plot([1.5, 1.5], [-0.5, 2.5], 'k--', lw=2)
plt.plot([3, 3], [-0.5, 2.5], 'k--', lw=2)
plt.xticks(())
plt.yticks(())
plt.show()
```
上面的代码中,我们首先生成了一些一维数据,其中包含三个类别,每个类别包含20个样本。然后,我们使用 `svm.SVC` 类来拟合一个线性 SVM 模型,并用 `fit` 方法拟合数据。需要注意的是,当分类的类别数大于二时,我们需要设置 `decision_function_shape='ovr'`,表示采用 one-vs-rest 的策略。最后,我们使用 `plt.scatter` 和 `plt.plot` 函数画出数据点和决策边界。
阅读全文