12.7 每日总结(随机森林算法实现与测试)
今天学习机器学习算法
一、实验目的 深入理解随机森林的算法原理,进而理解集成学习的意义,能够使用Python语言实现 随机森林算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容 (1)从scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注意同分布取样); (2)使用训练集训练随机森林分类算法; (3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选择; (4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验八的部分。
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
import numpy as np
# 1. 加载iris数据集
iris = load_iris()
X = iris.data
y = iris.target
# 2. 使用留出法将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42)
# 3. 初始化随机森林模型
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)
# 4. 使用训练集训练随机森林模型
rf_clf.fit(X_train, y_train)
# 5. 使用五折交叉验证评估模型性能
cv_scores = cross_val_score(rf_clf, X_train, y_train, cv=5, scoring='accuracy')
print(f"Cross-validation scores: {cv_scores}")
print(f"Mean CV accuracy: {np.mean(cv_scores)}")
# 6. 训练集上的性能评估
y_pred = rf_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
f1 = f1_score(y_test, y_pred, average='macro')
print(f"Test set performance:")
print(f"Accuracy: {accuracy}")
print(f"Precision: {precision}")
print(f"Recall: {recall}")
print(f"F1 Score: {f1}")
# 7. 分析测试结果并完成实验报告
# 这里可以根据输出的性能指标进行分析,撰写实验报告

浙公网安备 33010602011771号