python实现-决策树2-sklearn
sklearn代码
sklearn步骤:
1,实例化 2,通过模型接口训练数据 3,通过模型接口提取需要的信息
主要代码:
from sklearn import tree #导入模块
clf = tree.DecisionTreeClassifier() #实例化
clf = clf.fit(x_train, y_train,) #用训练集数据训练模型
result = clf.score(X_test, y_test) #导入测试集,得结果
sklearn用不纯度Criterion来确定确定最佳节点,可选信息熵或者基尼系数作为Criterion
from sklearn import tree #导入树模块
from sklearn.datasets import load_wine #导入红酒数据
from sklearn.model_selection import train_test_split #划分训练集测试集
wine = load_wine() #下载数据,字典形式
wine.data #标签列
wine.data.shape
wine.target #标签列
import pandas as pd
pd.concat([pd.DataFrame(wine.data),pd.DataFrame(wine.target)],axis=1)
#连接起来,形成表格式
wine.feature_names #特征名
wine.target_names #目标列的类
xtrain,xtest,ytrain,ytest=train_test_split(wine.data,wine.target,test_size=0.3)
#按30%测试集,70%训练集划分数据
xtrain.shape
xtest.shape
clf=tree.DecisionTreeClassifier(criterion='entropy')
#实例化 criterion选择信息增益,默认的是基尼系数
#
#random_state设置了一个随机种子,保证了每次结果输出一致
clf=clf.fit(xtrain,ytrain) #训练模型
score=clf.score(xtest,ytest) #返回预测的准确度
score
import graphviz
feature_name = ['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','od280/od315稀释葡萄酒','脯氨酸']
#特征名转成了中文dot_data = tree.export_graphviz(clf,feature_names = feature_name,class_names=["威士忌","伏特加","琴酒"],filled=True,rounded = True)
#filled - 是否填充颜色
#rounded - 框的形状graph = graphviz.Source(dot_data)
graph
#不纯度为0 时,可以选择出叶子节点clf.feature_importances_
#显示决策树选择的特征,以及其对应的贡献
#没有使用的特征,重要性是0[*zip(feature_name,clf.feature_importances_)]
#将特征的名字和对应的重要性进行匹配
#根节点 类黄酮 贡献最大#训练集上的拟合效果
score_train=clf.score(xtrain,ytrain)
score_train
#不能认为过拟合,因为测试集score也不错
剪枝参数1
正确的剪枝是优化的核心
max_depth 限制树的最大深度,建议从3开始测试
min_samples_leaf 限定n,一个节点在分支后的每个子节点都至少有n个训练样本,建议从5开始
min_samples_split 限定n,一个节点至少有n个训练样本,建议从5开始
#重新生成模型,加上剪枝参数
clf=tree.DecisionTreeClassifier(criterion='entropy',random_state=30,splitter='random',max_depth=3# ,min_samples_leaf=10,min_samples_split=10)
#
clf = clf.fit(xtrain,ytrain) #训练模型
dot_data = tree.export_graphviz(clf,feature_names = feature_name,class_names=["威士忌","伏特加","琴酒"],filled=True,rounded = True)
graph = graphviz.Source(dot_data)
graph
#不纯度为0 时,可以选择出叶子节点#训练集上的拟合效果
score_train=clf.score(xtrain,ytrain)
score_train
#剪枝后的拟合效果score=clf.score(xtest,ytest)
score
剪枝参数2
max_features 限制可以使用的特征数量,例如特征900个太多了
min_impurity_decrease 设定一个阈值,信息增益在小于该阈值时,不再进行分支
确定最优的剪枝参数,最优参数不能一个一个的尝试
# 默认的max_depth是1,但是由于分到最后一个可能会导致过拟合的情况出现,因此经常使用几个常见的剪枝参数来预防过拟合。这边就只用了max_depth这个参数
import matplotlib.pyplot as plt
test=[]
for i in range(10):clf=tree.DecisionTreeClassifier(criterion='entropy',max_depth=i+1,random_state=30)clf=clf.fit(xtrain,ytrain)score=clf.score(xtest,ytest)test.append(score)
plt.plot(range(1,11),test,color='red',label='max_depth')
plt.show()
# 可以看出在3的时候,数据是相对最好的。
目标权重参数
class_weight 给少量的标签更多的权重,让模型更加偏向少数类。 该参数默认None,表示自动给相同的权重
weight_fraction_leaf 对应的剪枝参数
重要属性与接口
属性:模型训练后,能够调用查看模型的各种性质 feature_import sklearn 接口:fit和score apply 和predict
apply返回每个测试样本所在的叶子节点的索引
predict 返回每个测试样本的分类、回归结果
所有接口中要求输入xtest和x_train部分,输入的特征矩阵必须至少至少是一个二维矩阵,不接受一维矩阵!!!!
#apply返回每个测试样本所在的叶子节点的索引
clf.apply(xtest)#predict 返回每个测试样本的分类、回归结果
clf.predict(xtest)
python实现-决策树2-sklearn相关推荐
- python利用决策树进行特征选择
python利用决策树进行特征选择(注释部分为绘图功能),最后输出特征排序: import numpy as np import tflearn from tflearn.layers.core im ...
- 监督学习 | 决策树之Sklearn实现
文章目录 1. Sklearn中决策树的超参数 1.1 最大深度 max_depth 1.2 每片叶子的最小样本数 min_samples_leaf 1.3 每次分裂的最小样本数 min_sample ...
- 手把手教你用python实现决策树的策略规则挖掘
在之前的文章中关于策略涉及内容较多,有基于iv.随机森林筛选策略规则,有xgb挖掘规则的,今天手把手教大家如何用python实现决策树的策略规则挖掘的. 一.项目案例 策略规则的制定与实际业务是分不开 ...
- 数据分享|PYTHON用决策树分类预测糖尿病和可视化实例
全文下载链接:http://tecdat.cn/?p=23848 在本文中,决策树是对例子进行分类的一种简单表示.它是一种有监督的机器学习技术,数据根据某个参数被连续分割.决策树分析可以帮助解决分类和 ...
- 【sklearn入门】决策树在sklearn中的实现--实战红酒分类案例
scikit-learn简介 scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包.它通过NumPy, SciPy和 Matplotlib等python数值 ...
- 使用Python、Pandas、Sklearn预测NBA比赛结果
Abstract: 作为课程作业,下面的内容是利用每场胜负数据.球员的生物数据等进行的NBA比赛预测.内容包括:1. 获得数据 2. 构造特征 3. 学习验证.最后能够提升16%的准确率. 获取数据集 ...
- python实现决策树分类模型(小白入门超简单实战)
注:由于我不喜欢研究机器学习的原理而更关注于实战,所以本文只讲解python实现决策树模型的代码. 数据集:Iris(鸢尾花卉数据集),是一类多重变量分析的数据集.数据集包含150个数据样本,分为3类 ...
- 决策树在sklearn中的实现
1 概述 1.1 决策树是如何工作的 1.2 构建决策树 1.2.1 ID3算法构建决策树 1.2.2 简单实例 1.2.3 ID3的局限性 1.3 C4.5算法 & CART算法 1.3.1 ...
- Python进行决策树和随机森林
Python进行决策树和随机森林 一.决策树 第一步,导入库: 第二步,导入数据: 第三步,数据预处理: 第四步,决策树: 第五步,决策树评价: 第六步,生成决策树图. 二.随机森林 第一步,随机森林 ...
- Python中机器学习神器——sklearn模块
参考文章 Python机器学习笔记:sklearn库的学习 ML神器:sklearn的快速使用 机器学习与Sklearn的初识 传统的机器学习任务从开始到建模的一般流程是:获取数据 → 数据预处理 → ...
最新文章
- SpringCloud系列——Zuul 动态路由
- 2010年3月4日参加由张应杭老师主讲的关于传统文化的培训-一个有益的PPT分享给大家...
- ccf a类期刊_喜报:我院2篇学生论文被CCFA类会议AAAI(2020)接收
- eclipse开发android的好处,从Eclipse切换到IntelliJ IDEA for Android开发的好处
- python 整数 1字节_Python程序打印代表整数的字节数组
- django 模板mysql_59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用...
- 『转』死去度百飞鸽传书
- Python gevent学习笔记 1
- 直播电商只能卖便宜货吗?
- 怎么用bat关闭远程协助计算机,Windows批处理请求远程协助
- python是什么 自学-Python怎样自学?
- 加速网站速度的最佳做法_(2)把样式表放在顶部
- Linux内存管理之页面回收
- linux so fprintf,Linux下printf、fprintf、sprintf的区别
- SharePoint2016 - How to create App Catalog site?
- 《我的第一本思维导图》读书笔记
- 如何在数字经济浪潮中脱颖而出?荣联科技集团的创新与转型
- RAC学习笔记(2)-DB2和Oracle体系结构
- sx html5编辑器,SX HTML5全栈可视编辑器
- [编程题] 创造新世界
热门文章
- java版我的世界_我的世界Java版1.16
- 你肯定想学习的顶级Python项目(附代码)
- IBM面试题 50条狗 有病狗 有几条病狗?
- ElasticSearch 狂神说
- 知识总结--性能优化总结(摘录+转载)
- msf之进阶免杀技术,无视360
- android 获取drawable 对象,Android 实现将本地资源图片转换成Drawable的方法
- python使用pandas模块介绍以及使用,dataframe结构,Series结构,基本数据操作,DataFrame运算,pandas画图,存储,缺失值处理,离散化,合并
- 网格建模资源管理(第一次翻译老外的东西,嘿嘿!)
- BitTorrent网络中基于Kademlia协议到DHT无服务器泛互联网搜索软件推荐