支持向量机算法实现分类预测python代码,输入excel文件,多个特征值,一个目标向量,训练后再输入新的excel文件进行预测,输出预测结果excel,以及精度和混淆矩阵图
时间: 2024-01-27 17:05:23 浏览: 27
好的,以下是使用Python实现支持向量机算法进行分类预测的代码示例,包括输入excel文件、训练、预测和输出预测结果excel、精度和混淆矩阵图:
首先,我们需要导入需要的库,包括numpy、pandas、sklearn、matplotlib和xlrd:
``` python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
import xlrd
```
接下来,我们定义一个函数用于加载excel文件并进行预处理:
``` python
def load_data(filename):
data = pd.read_excel(filename)
data.dropna(inplace=True)
X = data.drop('label', axis=1)
X = (X - X.mean()) / X.std()
y = data['label']
return X, y
```
然后,我们定义一个函数用于训练SVM分类器:
``` python
def train_svm(X_train, y_train, kernel='rbf', C=1, gamma=0.1):
clf = SVC(kernel=kernel, C=C, gamma=gamma)
clf.fit(X_train, y_train)
return clf
```
接着,我们定义一个函数用于预测新的excel文件并输出预测结果excel、精度和混淆矩阵图:
``` python
def predict_svm(clf, X_test, y_test, filename):
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
cm = confusion_matrix(y_test, y_pred)
# 输出预测结果excel
data = pd.read_excel(filename)
data['predicted_label'] = pd.Series(y_pred, index=data.index)
data.to_excel('predicted_result.xlsx', index=False)
# 绘制混淆矩阵图
plt.imshow(cm, cmap=plt.cm.Blues)
plt.title('Confusion matrix')
plt.colorbar()
tick_marks = np.arange(len(set(y_test)))
plt.xticks(tick_marks, sorted(set(y_test)), rotation=45)
plt.yticks(tick_marks, sorted(set(y_test)))
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.show()
return accuracy
```
最后,我们将以上函数组合起来,实现对新的excel文件进行预测:
``` python
# 加载训练数据集
X_train, y_train = load_data('train_data.xlsx')
# 训练SVM分类器
clf = train_svm(X_train, y_train)
# 加载测试数据集
X_test, y_test = load_data('test_data.xlsx')
# 预测新的excel文件
accuracy = predict_svm(clf, X_test, y_test, 'test_data.xlsx')
# 输出精度
print('Accuracy:', accuracy)
```
希望这个示例代码能帮到您!如果有任何问题,请随时联系我。