利用sklearn库决策树模型对iris数据多分类并进行评估
1.导入所需要的库
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
2.加载iris数据
iris = load_iris()x, y = iris.data, iris.target
在这里我们输出前十行的iris.data看看
print(x[:10,:])
3.使用sklearn库对iris数据集进行乱序切分为训练集和测试集(7:3比例)
from sklearn.model_selection import train_test_splitfrom sklearn.metrics import classification_reportx_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.3)
切分训练集和测试集这里我们使用train_test_split(),test_size为测试集所占的比例。
sklearn的train_test_split()各函数参数含义解释(非常全) - The-Chosen-One - 博客园
4.使用决策树模型对测试集进行分类
decisionTree = DecisionTreeClassifier()decisionTree.fit(x_train, y_train)#训练决策树y_predict = decisionTree.predict(x_test)#在x_test上进行测试
5.利用classification_report()对分类的结果进行评估
print(classification_report(y_test,y_predict))
详细介绍见博客https://blog.csdn.net/weixin_48964486/article/details/122881350
6.使用sklearn库的决策树模型对iris数据集进行10折交叉验证,评估每折的正确率,并计算平均准确率:
K折交叉验证:将训练集分成K份,每次用其中一份做测试集,其余的k-1份作为训练集,循环k次,取每次训练结果的平均值作为评分。
from sklearn.model_selection import cross_val_score# 声明决策树模型decisionTree = DecisionTreeClassifier() #定义决策树模型# K折交叉验证(K=10)scores = cross_val_score(decisionTree,x,y,cv=10) #算出10折交叉验证每折的准确率# 打印10次准确率for i, score in enumerate(scores):print('{:d}: {:.2f}%'.format(i, 100*score))# 打印平均准确率print('Average Accuracy: {:.2f}%'.format(100*scores.mean()))
7.修改决策树模型中的参数(如criterion、max_depth、spliter等)评估10折交叉验证下的平均准确率,至少验证4组不同参数的决策树模型
params_list = ({'criterion': 'gini', 'max_depth': None, 'splitter': 'best'},{'criterion': 'gini', 'max_depth': None, 'splitter': 'random'},{'criterion': 'entropy', 'max_depth':None,'splitter':'best'},{'criterion': 'gini', 'max_depth':5,'splitter':'best'})for params in params_list:# 声明决策树模型print('model params:', params)decisionTree=DecisionTreeClassifier(criterion=params['criterion'],max_depth=params['max_depth'],splitter=params['splitter']) # K折交叉验证(K=10)scores =cross_val_score(decisionTree,x,y,cv=10) # 你的代码# 打印平均准确率print('Average Accuracy: {:.2f}%'.format(100*scores.mean()))
下面是参数的介绍:
class_weight : 指定样本各类别的的权重,主要是为了防止训练集某些类别的样本过多导致训练的决策树过于偏向这些类别。这里可以自己指定各个样本的权重,如果使用“balanced”,则算法会自己计算权重,样本量少的类别所对应的样本权重会高。
criterion : gini或者entropy,前者是基尼系数,后者是信息熵;
max_depth : int or None, optional (default=None) 设置决策随机森林中的决策树的最大深度,深度越大,越容易过拟合,推荐树的深度为:5-20之间;
max_features: None(所有),log2,sqrt,N 特征小于50的时候一般使用所有的;
max_leaf_nodes : 通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。
min_impurity_split: 这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息增益,均方差,绝对差)小于这个阈值则该节点不再生成子节点。即为叶子节点 。
min_samples_leaf : 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。
min_samples_split : 设置结点的最小样本数量,当样本数量可能小于此值时,结点将不会在划分。
min_weight_fraction_leaf: 这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝默认是0,就是不考虑权重问题。
splitter : best or random 前者是在所有特征中找最好的切分点 后者是在部分特征中,默认的”best”适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐”random” 。
————————————————
原文链接:https://blog.csdn.net/qq_39885465/article/details/104523125
关于参数的介绍详细博客:https://www.cnblogs.com/juanjiang/p/11003369.html
8.分析决策树模型中的参数对平均准确率的影响
max_depth限制树的最大深度,超过设定深度的树枝全部剪掉 这是用得最广泛的剪枝参数,在高维度低样本量时非常有效。决策树多生长一层,对样本量的需求会增加一倍,所以限制树深度能够有效地限制过拟合。
criterion参数是用来设置不纯度的判决方法,默认的criterion参数使用的是‘gini’基尼系数,还可以设置为‘entropy’信息增益。比起基尼系数,信息熵对不纯度更加敏感,对不纯度的惩罚最强。对于高维数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往比较好。
random_state用来设置分枝中的随机模式的参数,默认None,在高维度时随机性会表现更明显,低维度的数据(比如鸢尾花数据集),随机性几乎不会显现。输入任意整数,会一直长出同一棵树,让模型稳定下来。
利用sklearn库决策树模型对iris数据多分类并进行评估相关推荐
- ID3决策树 Python实现 + sklearn库决策树模型的应用
本文介绍机器学习中决策树算法的python实现过程 共介绍两类方法: (1)亲手实习Python ID3决策树经典算法 (2)利用sklearn库实现决策树算法 关于决策树的原理,指路:机器学习 第四 ...
- DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型
DL之CNN:自定义SimpleConvNet[3层,im2col优化]利用mnist数据集实现手写数字识别多分类训练来评估模型 目录 输出结果 设计思路 核心代码 更多输出 输出结果 设计思路 核心 ...
- 【Python-ML】SKlearn库决策树(DecisionRegression) 使用
# -*- coding: utf-8 -*- ''' Created on 2018年1月15日 @author: Jason.F @summary: Scikit-Learn库决策树算法 '''f ...
- 机器学习之使用sklearn构造决策树模型
一.任务基础 导入所需要的库 import matplotlib.pyplot as plt import pandas as pd%matplotlib inline 加载sklearn内置数据集 ...
- python+sklearn实现决策树模型
决策树 基本算法原理 核心思想: 相似的输入必会产生相似的输出. 年龄: 1-青年, 2-中年, 3-老年 学历: 1-本科, 2-硕士, 3-博士 经历: 1-出道, 2-一般, 3-老手, 4-骨 ...
- (1-4)sklearn库的----模型评估
5,模型评估与选择 务必记住那些指标适合分类,那些适合回归. 一,分类问题 常见的分类模型包括:逻辑回归.决策树.朴素贝叶斯.SVM.神经网络等, 分类的模型评估指标包括以下几种: 1.TPR.FPR ...
- Python 机器学习 利用sklearn构建决策树的实现 2
决策树 import numpy as npimport os%matplotlib inlineimport matplotlibimport matplotlib.pyplot as pltplt ...
- python sklearn 绘制决策树模型的节点图
绘制决策树的图片可以使用sklearn.tree.plot_tree这个方法 详情可以参考官方文档:https://scikit-learn.org/stable/modules/generated/ ...
- 利用docxtpl库将excel里的数据向一个word模板里填充数据,并保存为一个word文档
###程序功能说明:该功能是将excel里的数据向一个word模板里填充数据,并保存为一个word文档. from docxtpl import DocxTemplate import openpyx ...
最新文章
- oracle12path,Oracle 12c R2 注意事项:login.sql 改变
- 发现华为才是真·手机公司,小米确实不靠卖手机赚钱...
- 期末考试前的预习,科目:化工设备与反应器(1)
- 物联网python教程慕课_物联网小白入门
- Linux 组合命令/命令组合的符号
- python qt5 数据改变 触发信号_pyqt5 使用 QTimer, QThread, pyqtSignal 实现自动执行,多线程,自定义信号触发。...
- Office 2007打开提示The setup controller has encountered
- linux设置gmt时区,关于GMT UTC CST和Linux时区设置
- linux ip地址配置
- 信息学奥赛一本通2061
- Mahout实例(UserCF,ItermCF,SlopOne)
- opencv半透明填充不规则区域
- 2022年京东618店庆活动优惠力度怎么样?
- 使用 EasyExcel 操作exsel文件
- 线性代数1:向量、线性组合、张成的空间和基
- 广告联盟源码java_Android启动页广告(腾讯广告联盟)解决方法及源码下载
- ffmpeg 分辨率 压缩_视频怎么在尽量不损害画质的前提下压缩?
- Direct3D 12入门教程之 ---- 渲染流水线介绍
- 基于Netty和Kafka的物联网数据采集系统
- Reader和Writer