支持向量机预测python代码,包含'高程', '起伏度', '桥梁长', '道路长', '平均坡度', '平均地温', 'T小于0', '相态'特征变量和一个因变量“交通风险”,输入excel表格作为训练集和验证集,训练完后输入新的excel表格数据进行预测,最后输出新的excel表格。同时输出精度和混淆矩阵图片文件
时间: 2023-08-06 18:20:31 浏览: 164
好的,以下是实现您所需的代码:
```python
import pandas as pd
import numpy as np
from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix, accuracy_score
import matplotlib.pyplot as plt
# 读取训练集和验证集数据
train_data = pd.read_excel("train_data.xlsx")
test_data = pd.read_excel("test_data.xlsx")
# 提取特征和标签
X_train = train_data[['高程', '起伏度', '桥梁长', '道路长', '平均坡度', '平均地温', 'T小于0', '相态']]
y_train = train_data['交通风险']
X_test = test_data[['高程', '起伏度', '桥梁长', '道路长', '平均坡度', '平均地温', 'T小于0', '相态']]
y_test = test_data['交通风险']
# 建立SVM模型
model = SVC(kernel='linear')
model.fit(X_train, y_train)
# 预测新的数据
y_pred = model.predict(X_test)
# 输出预测结果和精度
print("预测结果:", y_pred)
accuracy = accuracy_score(y_test, y_pred)
print("精度:", accuracy)
# 输出混淆矩阵并绘制热力图
confusion_mat = confusion_matrix(y_test, y_pred)
print("混淆矩阵:\n", confusion_mat)
labels = np.unique(y_test)
plt.imshow(confusion_mat, cmap="Blues")
plt.colorbar()
plt.title("Confusion Matrix")
plt.xlabel("Predicted Labels")
plt.ylabel("True Labels")
plt.xticks(ticks=range(len(labels)), labels=labels, rotation=45)
plt.yticks(ticks=range(len(labels)), labels=labels)
plt.tight_layout()
plt.savefig("confusion_matrix.png")
# 将预测结果添加到新的excel表格中
test_data['预测结果'] = y_pred
test_data.to_excel("predicted_data.xlsx", index=False)
```
请确保您已经正确安装了所需的库,然后将`train_data.xlsx`和`test_data.xlsx`替换为您的训练集和验证集文件名,运行以上代码即可。最终会生成一个名为`predicted_data.xlsx`的新的excel表格文件,其中包含了预测结果。同时,会生成一个名为`confusion_matrix.png`的混淆矩阵图片文件。
阅读全文