实验楼项目
https://www.shiyanlou.com/
决策树是一种特殊的树形结构,一般由节点和有向边组成。
其中,节点表示特征、属性或者一个类。而有向边包含有判断条件。
决策树学习(Decision Tree Learning),亦简称为决策树。
决策树可以用来解决分类或回归问题,分别称之为分类树或回归树。
其中,分类树的输出是一个标量,而回归树的一般输出为一个实数。
熵(shāng) 表示随机变量不确定性的度量,熵越大,随机变量的不确定性就越大。
每一个特征针对训练数据集的前后信息变化的影响是不一样的,信息增益越大,即代表这种影响越大。而影响越大,就表明该特征更加重要。
鸢尾花实验 数据集下载地址 https://archive.ics.uci.edu/ml/datasets/iris 12
使用sklearn
我们直接使用 sklearn 这个模块,它里面内置了鸢尾花的学习数据集
# -*- coding: utf-8 -*- from sklearn import datasets # 导入方法类 iris = datasets.load_iris() # 加载 iris 数据集 iris_feature = iris.data # 特征数据 iris_target = iris.target # 分类数据 iris_target # 查看 iris_target """ iris_target array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) iris_feature array([[ 5.1, 3.5, 1.4, 0.2], # 一个样本,四个特征 [ 4.9, 3. , 1.4, 0.2], [ 4.7, 3.2, 1.3, 0.2], 。。。。。。。 """
12345678910111213141516171819202122232425scikit-learn 已经将花的原名称进行了转换,其中 0, 1, 2 分别代表 Iris Setosa, Iris Versicolour 和 Iris Virginica。
scikit-learn 还为我们提供了训练集和数据集的方法
from sklearn.model_selection import train_test_split feature_train, feature_test, target_train, target_test = train_test_split(iris_feature, iris_target, test_size=0.33, random_state=42) target_train 12345
feature_train,训练集特征
feature_test,测试集特征
target_train,训练集目标值
target_test ,测试集目标值
test_size 测试集数据占全部数据的百分比,
train_size 来指定训练集所占全部数据的百分比。
一般情况下,我们会将整个训练集划分为 70% 训练集和 30% 测试集。最后的 random_state 参数表示乱序程度.
模型训练及预测
from sklearn.tree import DecisionTreeClassifier # 决策树分类器 dt_model = DecisionTreeClassifier() # 所以参数均置为默认状态 dt_model.fit(feature_train,target_train) # 使用训练集训练模型 predict_results = dt_model.predict(feature_test) # 使用模型对测试集进行预测 12345
DecisionTreeClassifier() 模型方法中也包含非常多的参数值。例如:
criterion = gini/entropy 可以用来选择用基尼指数或者熵来做损失函数。splitter = best/random 用来确定每个节点的分裂策略。支持 “最佳” 或者“随机”。max_depth = int 用来控制决策树的最大深度,防止模型出现过拟合。min_samples_leaf = int 用来设置叶节点上的最少样本数量,用于对树进行修剪。我们可以将预测结果和测试集的真实值分别输出,对照比较。
print('predict_results:', predict_results) print('target_test:', target_test) 12
内置方法,查看精准度
from sklearn.metrics import accuracy_score print(accuracy_score(predict_results, target_test)) 123
相关知识
决策树可视化:鸢尾花数据集分类(附代码数据集)
鸢尾花分类与直方图、散点图的绘制及可视化决策树
Python语言基于CART决策树的鸢尾花数据分类
决策树对鸢尾花数据的处理实践
对鸢尾花进行分类预测
基于决策树构建鸢尾花数据的分类模型并绘制决策树模型
机器学习算法之决策树实现鸢尾花数据分类
基于机器学习的鸢尾花数据集的三分类算法的实现 C++
【机器学习小实验5】基于决策树和随机森林的鸢尾花种类预测
【python数据挖掘课程】十九.鸢尾花数据集可视化、线性回归、决策树花样分析
网址: 决策树完成鸢尾花分类 https://m.huajiangbk.com/newsview746321.html
上一篇: = 和 == 的优先级 |
下一篇: 用int[] arr=new i |