代码练习--使用load_ iris的iris数据完成K折交叉验证代码练 习 •加载iris数据集,进行数据划分,数据标准化处理 ·进行模型训练 ·输出模型的预测结果和准确率 ·要求:代码和程序运行结果截图
时间: 2024-09-23 21:11:49 浏览: 29
首先,你需要安装必要的Python库,如scikit-learn用于数据预处理、交叉验证以及模型评估。以下是使用`iris`数据集完成K折交叉验证的一段示例代码:
```python
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
# 加载iris数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 数据划分(70%训练,30%测试),并进行标准化处理
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 使用Logistic Regression作为模型实例
model = LogisticRegression()
# K折交叉验证,这里假设k=5
kfold = 5
cv_scores = cross_val_score(model, X_train_scaled, y_train, cv=kfold, scoring='accuracy')
# 训练模型
model.fit(X_train_scaled, y_train)
# 预测并计算准确率
y_pred = model.predict(X_test_scaled)
accuracy = model.score(X_test_scaled, y_test)
# 输出预测结果和准确率
print("Predictions:")
print(y_pred[:10]) # 打印前10个预测结果
print("\nAccuracy on test set:", accuracy)
# 可能需要截取屏幕截图,这取决于你的环境设置,可以使用matplotlib等库展示混淆矩阵(classification report)
from sklearn.metrics import classification_report, confusion_matrix
print("\nClassification Report:\n", classification_report(y_test, y_pred))
conf_mat = confusion_matrix(y_test, y_pred)
plt.figure(figsize=(6, 6))
sns.heatmap(conf_mat, annot=True, fmt="d")
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion Matrix')
plt.show()
# 把屏幕截图保存到本地,这里是理论操作,实际操作需看具体环境
# screenShot = plt.savefig('cross_validation_result.png', dpi=300) # 这里只是模拟,不需要真的保存
```