写一个SVM多分类代码
时间: 2024-04-29 19:22:26 浏览: 19
好的,以下是一个使用SVM实现多分类的代码示例:
```python
from sklearn import svm
import numpy as np
import pandas as pd
# 读取数据,假设数据集已经被划分为训练集、验证集和测试集
train_data = pd.read_csv('train_data.csv')
train_labels = pd.read_csv('train_labels.csv')
val_data = pd.read_csv('val_data.csv')
val_labels = pd.read_csv('val_labels.csv')
test_data = pd.read_csv('test_data.csv')
test_labels = pd.read_csv('test_labels.csv')
# 将数据转换为numpy数组格式
X_train = np.array(train_data)
y_train = np.array(train_labels).flatten()
X_val = np.array(val_data)
y_val = np.array(val_labels).flatten()
X_test = np.array(test_data)
y_test = np.array(test_labels).flatten()
# 初始化SVM分类器并训练
clf = svm.SVC(kernel='linear', C=1.0, decision_function_shape='ovr')
clf.fit(X_train, y_train)
# 使用验证集评估性能
val_pred = clf.predict(X_val)
val_acc = np.sum(val_pred == y_val) / len(y_val)
print("Validation accuracy:", val_acc)
# 使用测试集评估性能
test_pred = clf.predict(X_test)
test_acc = np.sum(test_pred == y_test) / len(y_test)
print("Test accuracy:", test_acc)
```
在这个示例中,我们使用SVM作为分类器,并使用线性核函数。我们将分类问题转换为一对多的形式,针对每个类别训练一个分类器,并使用所有分类器的输出进行分类。我们使用训练集训练分类器,并通过验证集和测试集评估性能。