SVM实现多分类,使用OneVsOneClassifier()并输出tn, fp, fn, tp
时间: 2024-02-11 19:08:37 浏览: 67
好的,以下是一个使用SVM实现多分类的例子,并输出混淆矩阵的代码:
```python
from sklearn.datasets import make_classification
from sklearn.svm import SVC
from sklearn.multiclass import OneVsOneClassifier
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
# 生成数据集
X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_classes=4, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 建立SVM分类器
svm_clf = SVC(kernel='linear', C=1, decision_function_shape='ovr')
# 使用OneVsOneClassifier进行多分类
ovr_clf = OneVsOneClassifier(svm_clf)
# 训练模型
ovr_clf.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = ovr_clf.predict(X_test)
# 输出混淆矩阵
tn, fp, fn, tp = confusion_matrix(y_test, y_pred).ravel()
print('True Negative:', tn)
print('False Positive:', fp)
print('False Negative:', fn)
print('True Positive:', tp)
```
其中,`OneVsOneClassifier`可以实现SVM在多类别分类中的应用,`confusion_matrix`函数可以计算混淆矩阵,`.ravel()`可以将混淆矩阵展平成一维数组,最后输出tn, fp, fn, tp即可。
阅读全文