from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载 iris 数据集
iris = load_iris()
X, y = iris.data, iris.target
from sklearn.ensemble import RandomForestClassifier
# 使用 train_test_split 函数留出 1/3 的样本作为测试集,并确保同分布取样
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)
# 创建随机森林分类器
rf_classifier = RandomForestClassifier(random_state=42)
# 使用训练集训练模型
rf_classifier.fit(X_train, y_train)
from sklearn.model_selection import cross_val_score
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 使用五折交叉验证评估模型性能
cv_scores = cross_val_score(rf_classifier, X_train, y_train, cv=5)
# 计算平均性能指标
accuracy = accuracy_score(y_train, rf_classifier.predict(X_train))
precision = precision_score(y_train, rf_classifier.predict(X_train), average='macro')
recall = recall_score(y_train, rf_classifier.predict(X_train), average='macro')
f1 = f1_score(y_train, rf_classifier.predict(X_train), average='macro')
print(f"Cross-validated scores: {cv_scores}")
print(f"Accuracy: {accuracy}")
print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1 Score: {f1}")
# 使用测试集测试模型
y_pred = rf_classifier.predict(X_test)
# 计算测试集上的准确度、精度、召回率和 F1 值
accuracy_test = accuracy_score(y_test, y_pred)
precision_test = precision_score(y_test, y_pred, average='macro')
recall_test = recall_score(y_test, y_pred, average='macro')
f1_test = f1_score(y_test, y_pred, average='macro')
print(f"Test Accuracy: {accuracy_test}")
print(f"Test Precision: {precision_test}")
print(f"Test Recall: {recall_test}")
print(f"Test F1 Score: {f1_test}")
浙公网安备 33010602011771号