多分类支持向量机代码
时间: 2024-06-10 18:03:02 浏览: 189
多分类支持向量机(Multi-class Support Vector Machine, SVM)是一种监督学习算法,用于解决分类问题,特别适用于非线性可分数据。SVM的核心思想是找到最优的超平面来最大化类别间的间隔。在多分类问题中,通常采用一些策略如一对一(One-vs-One)、一对多(One-vs-Rest)或多元分类核方法(如线性SVM扩展到多类)。
以下是使用Python的scikit-learn库实现多分类支持向量机的一对多(One-vs-Rest)策略的一个简单示例:
```python
from sklearn import svm
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 将标签转换为二进制编码
lb = LabelBinarizer()
y_one_hot = lb.fit_transform(y)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y_one_hot, test_size=0.2, random_state=42)
# 创建一个One-vs-Rest的SVC分类器
multi_classifier = svm.SVC(kernel='linear', probability=True)
# 训练模型
multi_classifier.fit(X_train, y_train)
# 预测
y_pred = multi_classifier.predict(X_test)
# 评估模型
print("Accuracy:", multi_classifier.score(X_test, y_test))
```
在这个例子中,我们首先加载了鸢尾花数据集,并将其标签转换为二进制表示。然后将数据划分为训练集和测试集,创建了一个SVC分类器,并指定使用线性内核。`probability=True`参数使得模型能够输出预测的概率。最后,我们训练模型并进行预测,同时计算模型的准确率。
阅读全文