实验三:比较K折交叉验证每一轮的结果 输出交叉验证的每一轮的正确率,绘制折线图(matplotlib绘图)
时间: 2024-09-23 17:11:35 浏览: 53
matplotlib绘制折线图
5星 · 资源好评率100%
实验三的目的是观察K折交叉验证过程中每一轮的具体预测效果,而不是简单地取平均得分。这有助于理解模型在整个验证过程中的稳定性和波动情况。以下是步骤:
1. 首先,对每个模型执行`cross_val_predict()`函数,它不仅返回平均得分,还会返回每一轮预测的准确率数组。
```python
from sklearn.model_selection import cross_val_predict
# 对线性回归的每一轮预测
lr_predictions = cross_val_predict(lr, X, y, cv=10, method='predict')
# 对逻辑回归的每一轮预测
lor_predictions = cross_val_predict(lor, X, y, cv=10, method='predict')
# 分别计算每轮正确率
lr_round_scores = [np.mean(lr_predictions[y[i] == i]) for i in range(10)]
lor_round_scores = [np.mean(lor_predictions[y[i] == i]) for i in range(10)]
# 将正确率转化为列表形式
round_results = {'Linear Regression': lr_round_scores, 'Logistic Regression': lor_round_scores}
```
2. 使用matplotlib库绘制折线图,显示每一轮的正确率变化。
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
for model_name, scores in round_results.items():
plt.plot(range(1, len(scores)+1), scores, label=model_name)
plt.xlabel('Cross-validation Fold')
plt.ylabel('Accuracy')
plt.title('Cross-validation Accuracy per Round')
plt.legend()
plt.show()
阅读全文