首页 > 其他分享 >机器学习 实验三

机器学习 实验三

时间:2024-12-31 12:20:07浏览次数:1  
标签:机器 macro print 学习 4f score 实验 scores test

# 导入必要的库
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score, cross_validate
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
import seaborn as sns

# (1)加载iris数据集,并留出1/3的样本作为测试集
iris = load_iris()
X = iris.data
y = iris.target

# 使用留出法,留出1/3的样本作为测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)
# (2)使用训练集训练分类带有预剪枝和后剪枝的决策树模型
# 预剪枝可以通过设置max_depth参数来实现
# 后剪枝可以通过设置min_samples_split和min_samples_leaf参数来实现
clf_pre_pruning = DecisionTreeClassifier(max_depth=3, random_state=42)
clf_pre_pruning.fit(X_train, y_train)

# (3)使用五折交叉验证对模型性能进行评估和选择
scores = cross_validate(clf_pre_pruning, X_train, y_train, cv=5,
                        scoring=['accuracy', 'precision_macro', 'recall_macro', 'f1_macro'])

# 打印交叉验证结果
print("五折交叉验证结果:")
print(f"准确度:{scores['test_accuracy'].mean():.4f} ± {scores['test_accuracy'].std():.4f}")
print(f"精度:{scores['test_precision_macro'].mean():.4f} ± {scores['test_precision_macro'].std():.4f}")
print(f"召回率:{scores['test_recall_macro'].mean():.4f} ± {scores['test_recall_macro'].std():.4f}")
print(f"F1值:{scores['test_f1_macro'].mean():.4f} ± {scores['test_f1_macro'].std():.4f}")

# (4)使用测试集测试模型的性能
y_pred = clf_pre_pruning.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("测试集性能指标:")
print(f"准确度:{accuracy:.4f}")
print(f"精度:{precision:.4f}")
print(f"召回率:{recall:.4f}")
print(f"F1值:{f1:.4f}")

# 绘制混淆矩阵
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()

  

标签:机器,macro,print,学习,4f,score,实验,scores,test
From: https://www.cnblogs.com/youxiandechilun/p/18643698

相关文章

  • 机器学习 实验五
    #导入必要的库fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_split,cross_val_scorefromsklearn.neural_networkimportMLPClassifierfromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_scorei......
  • 机器学习 实验四
    importnumpyasnpfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_split,cross_val_score,KFoldfromsklearn.treeimportDecisionTreeClassifierfromsklearn.metricsimportaccuracy_score,precision_score,recall_scor......
  • 机器学习 实验七
    #导入必要的库fromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.clusterimportKMeansfromsklearn.metricsimportsilhouette_score,accuracy_score,adjusted_rand_scoreimportnumpyasnp#(1)加载数据集并划分数据......
  • 机器学习 实验六
    #导入必要的库fromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_split,cross_validatefromsklearn.naive_bayesimportGaussianNBfromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_scoreimportnumpyasnp......
  • 机器学习 实验八
    #导入必要的库fromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_split,cross_validatefromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_scoreimportnu......
  • 飞书lark机器人 自动化发版
    飞书lark机器人自动化发版#1介绍开发飞书机器人接收消息并调用构建接口,实现自动化发版发送指令->机器人接收指令->调用jenkins-job远程构建与部署jenkins配置,勾选job配置的触发远程构建并设置身份验证令牌#测试触发远程构建curl-ks-uuser:user_token-......
  • 学习 lambda
    JavaLambda表达式|菜鸟教程(runoob.com)根据菜鸟教程学习Lambda表达式概述定义:Lambda表达式是Java8引入的一个特性,它允许开发者以更加简洁和紧凑的方式编写匿名类的替代品。它们通常用于实现函数式接口(即只有一个抽象方法的接口)。语法:(parameters)->expressio......
  • 学习 stream 流
    Java8引入了StreamAPI,这是一个处理集合数据的强大工具,它允许你以声明式的方式对数据进行各种操作,如过滤、映射、排序、归约等。Stream不存储数据,而是像管道一样传输和转换数据元素。你可以将Stream看作是高级迭代器,它提供了一种更抽象的方式来遍历和操作数据集。Stream的......
  • GO 学习笔记之零 (四)字符串处理集锦
    1、遍历字符串中的每个字符 2、去掉字符串前后空格strings.TrimSpace(str)3、字符串长度len(str)4、缓存方式拼接字符串var_bufferbytes.Buffer//定义缓存字符串变量_buffer.WriteString(str1)//拼接字符串_buffer.WriteString(str2[0:1])//拼接字符_buffer......
  • 计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了
    前言许多学子选择踏上计算机这条充满挑战与机遇的道路。但在大学四年中,如何规划自己的学习路线,才能在毕业时脱颖而出,成为行业的佼佼者呢?第一学年:基础知识的奠基1.1课程安排在大学的第一年,重点是打好基础,掌握计算机科学的核心概念。通常你会接触到以下课程:计算机科学导......