2024/12/15

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载iris数据集
iris = load_iris()
X, y = iris.data, iris.target

# 使用留出法留出1/3的样本作为测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42)
from sklearn.tree import DecisionTreeClassifier

# 创建决策树分类器,设置预剪枝参数
clf = DecisionTreeClassifier(criterion='entropy', random_state=42, max_depth=None, min_samples_split=2)

# 训练模型
clf.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

# 五折交叉验证
scores = cross_val_score(clf, X_train, y_train, cv=5, scoring='accuracy')

# 训练集上的性能评估
y_pred = clf.predict(X_train)
accuracy = accuracy_score(y_train, y_pred)
precision = precision_score(y_train, y_pred, average='weighted')
recall = recall_score(y_train, y_pred, average='weighted')
f1 = f1_score(y_train, y_pred, average='weighted')

print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1 Score: {f1:.2f}")
# 使用测试集测试模型性能
y_pred_test = clf.predict(X_test)

# 测试集上的性能评估
accuracy_test = accuracy_score(y_test, y_pred_test)
precision_test = precision_score(y_test, y_pred_test, average='weighted')
recall_test = recall_score(y_test, y_pred_test, average='weighted')
f1_test = f1_score(y_test, y_pred_test, average='weighted')

print(f"Test Accuracy: {accuracy_test:.2f}")
print(f"Test Precision: {precision_test:.2f}")
print(f"Test Recall: {recall_test:.2f}")
print(f"Test F1 Score: {f1_test:.2f}")
posted @ 2024-12-15 19:59  为20岁努力  阅读(12)  评论(0)    收藏  举报