azure011328

导航

 
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}")

 

posted on 2024-12-13 10:53  淮竹i  阅读(12)  评论(0)    收藏  举报