学习决策树原理,包括熵、交叉熵和信息增益;掌握决策树函数语法;使用Python加载数据集,并对数据集进行分析;划分数据集的规模和方式;训练模型;验证模型,计算精确率、召回率和准确率,并绘制混

一、实验目的

  1. 学习决策树原理,包括熵、交叉熵和信息增益;
  2. 掌握决策树函数语法;
  3. 使用Python加载数据集,并对数据集进行分析;
  4. 划分数据集的规模和方式;
  5. 训练模型;
  6. 验证模型,计算精确率、召回率和准确率,并绘制混淆矩阵。

二、实验环境

Pycharm

三、实验内容

决策树是一种监督学习算法,用于分类和回归任务。决策树的基本原理如下:

  • 熵:熵是度量数据集中随机变量不确定性的指标。在构建决策树时,我们希望选择具有最小熵的特征进行分割。
  • 交叉熵:交叉熵是衡量预测概率分布与实际概率分布之间差异的指标。在构建决策树时,我们希望选择能够最大化样本类别之间的交叉熵的特征进行分割。
  • 信息增益:信息增益是衡量特征对于分类或回归任务的贡献的指标。在构建决策树时,我们希望选择具有最大信息增益的特征进行分割。

本实验使用鸢尾花数据集(Iris dataset),包含4个特征(sepal length (cm)sepal width (cm)petal length (cm)petal width (cm))3个类别(setosaversicolorvirginica)。数据集已经进行了预处理,将缺失值填充为np.nan,并将类别标签转换为整数编码

Python中,可以使用sklearn库中的DecisionTreeClassifierDecisionTreeRegressor类来构建决策树模型。以下是一个简单的示例:

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.tree import DecisionTreeClassifier

from sklearn.metrics import accuracy_score, confusion_matrix

import pandas as pd



# 加载数据集

iris = load_iris()

X = iris.data

y = iris.target

df = pd.DataFrame(X,
columns=iris.feature_names)

df[
'target'] = y



# 将数据集划分为训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)



# 创建决策树模型并训练

clf = DecisionTreeClassifier()

clf.fit(X_train, y_train)




# 对测试集进行预测并计算准确率、召回率和混淆矩阵

y_pred = clf.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)

confusion = confusion_matrix(y_test, y_pred)


print("Accuracy:", accuracy)

print("Confusion Matrix:\n", confusion)

1.准确率(accuracy):准确率是指模型正确预测的样本数占总样本数的比例。计算公式为

accuracy = (TP + TN) / (TP + TN + FP + FN)

其中,TP表示真正例(True Positive),TN表示真负例(True Negative),FP表示假正例(False Positive),FN表示假负例(False Negative)

2.精确率(precision):精确率是指模型正确预测为正例的样本数占所有被预测为正例的样本数的比例。计算公式为

precision = TP / (TP + FP)

3.召回率(recall):召回率是指模型正确预测为正例的样本数占所有实际为正例的样本数的比例。计算公式为

recall = TP / (TP + FN)

接下来,我们将使用混淆矩阵来可视化这些指标。混淆矩阵是一个二维表格,用于显示分类器在各个类别上的预测结果与实际结果之间的差异。以下是一个简单的混淆矩阵绘制函数:



import seaborn as sns

import matplotlib.pyplot as plt

from sklearn.metrics import confusion_matrix


def plot_confusion_matrix(y_true, y_pred, classes, title='Confusion Matrix'):

    cm = confusion_matrix(y_true, y_pred)

    sns.heatmap(cm,
annot=True, fmt='d', cmap=plt.cm.Blues, xticklabels=classes, yticklabels=classes)

    plt.title(title)

    plt.show()



# 在训练模型后调用该函数绘制混淆矩阵

plot_confusion_matrix(y_test, y_pred, classes=['Positive', 'Negative'])


 

五、实验总结

决策树是一种常用的机器学习算法,它在分类和回归任务中都表现出色。本实验通过使用Pythonsklearn库,实现了对鸢尾花数据集的决策树建模。

首先,我们了解了决策树的基本原理,包括熵、交叉熵和信息增益。这些概念有助于我们更好地理解决策树的构建过程。接着,我们掌握了决策树函数语法,学会了如何使用DecisionTreeClassifierDecisionTreeRegressor类来构建决策树模型。

在数据集分析阶段,我们使用了鸢尾花数据集,并将其划分为训练集和测试集。然后,我们使用训练集训练了一个决策树模型,并使用测试集对模型进行了评估。最后,我们计算了模型的准确率、召回率和混淆矩阵,以便对模型性能进行量化分析。

总之,本实验加深了我们对决策树算法的理解,提高了我们的编程能力和实践能力。通过本次实验,我们学会了如何使用Python进行数据预处理、特征选择和模型训练等操作,同时也了解了如何评估模型性能以及如何优化模型参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值