机器学习——sklearn实现决策树(隐形眼镜预测和鸢尾花分类)
文章目录
- sklearn中利用决策树实现隐形眼镜类型的预测
- 一、准备数据集
- 二、环境的准备
- 三、DecisionTreeClassifier构建决策树的部分参数说明
- 四、利用决策树实现隐形眼镜类型的预测
- sklearn中利用决策树实现鸢尾花分类
- 一、数据集
- 二、利用决策树实现鸢尾花分类
- 总结
- sklearn实现决策树的过程
- 参考资料
sklearn中利用决策树实现隐形眼镜类型的预测
一、准备数据集
- 数据集的介绍
隐形眼镜数据集是非常著名的数据集,它包含很多眼部状态的观察条件以及医生推荐的隐形眼镜类型。隐形眼镜类型包括硬材质(hard)、软材质(soft)以及不适合佩戴隐形眼镜(no lenses)。整个数据集一共有24组数据,数据的Labels依次是age、prescript、astigmatic、tearRate、class,也就是第一列是年龄,第二列是症状,第三列是是否散光,第四列是眼泪数量,第五列是最终的分类标签。
- 数据集的下载
下载地址:https://github.com/Jack-Cherish/Machine-Learning/blob/master/Decision%20Tree/lenses.txt
二、环境的准备
- 安装sklearn
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sklearn
- 安装pydotplus
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pydotplus
- 安装Graphviz
下载地址:https://www.graphviz.org/download/
安装过程,按照安装向导的指示进行。如果按照过程,没有选择自动添加PATH
,需要自行手动添加环境变量。
添加环境变量过程:
选择我的电脑->属性->高级->环境变量。在系统变量的Path变量中,添加Graphviz的环境变量,若Graphviz安装在了D盘的根目录,则添加:D:\Graphviz\bin
三、DecisionTreeClassifier构建决策树的部分参数说明
- criterion
特征选择标准,可选参数,默认是gini,可以设置为entropy。gini是基尼系数,使用该参数的时候,是采用的CART算法实现决策树的。entropy是信息增益,也就是采用的ID3算法实现决策树的。 - splitter
特征划分点选择标准,可选参数,默认是best,可以设置为random。best参数是根据算法选择最佳的切分特征,random随机的在部分划分点中找局部最优的划分点。“best"适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐使用"random”。 - max_depth
决策树最大深度,可选参数,默认是None。当模型样本很多的时候,可以取值10-100。 - min_samples_split
内部节点再划分所需最小样本数,可选参数,默认是2。当min_samples_split为整数,min_samples_split作为划分的最小样本数,若样本已经少于min_samples_split个样本,则停止继续划分。当min_samples_split为浮点数,那么min_samples_split就是一个百分比,ceil(min_samples_split * n_samples),数是向上取整的。如果样本量数量级非常大,则增大这个值。 - min_samples_leaf
叶子节点最少样本数,可选参数,默认是1。如果min_samples_leaf是整数,那么min_samples_leaf作为最小的样本数。如果是浮点数,那么min_samples_leaf就是一个百分比,celi(min_samples_leaf * n_samples),数是向上取整的。如果样本量数量级非常大,则增大这个值。
更多参数的详细信息内容参考下面链接:
https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html说明:一般都使用决策树默认的参数设置,若自行设置参数的值,根据实际情况进行设定。
四、利用决策树实现隐形眼镜类型的预测
- 读取数据集
from sklearn.preprocessing import LabelEncoder, OneHotEncoder #from sklearn.externals.six import StringIO from six import StringIO from sklearn import tree import pandas as pd import numpy as np import pydotplus if __name__ == '__main__':fr = open('lenses.txt')lenses = [inst.strip().split('\t') for inst in fr.readlines()]print(lenses)
得到的是string
- string类型的数据序列化
lenses_target = [] #提取每组数据的类别,保存在列表里for each in lenses:lenses_target.append(each[-1])lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate'] #特征标签 lenses_list = [] #保存lenses数据的临时列表lenses_dict = {} #保存lenses数据的字典,用于生成pandasfor each_label in lensesLabels: #提取信息,生成字典for each in lenses:lenses_list.append(each[lensesLabels.index(each_label)])lenses_dict[each_label] = lenses_listlenses_list = []print(lenses_dict) #打印字典信息lenses_pd = pd.DataFrame(lenses_dict) #生成pandas.DataFrameprint(lenses_pd)le = LabelEncoder() #创建LabelEncoder()对象,用于序列化 for col in lenses_pd.columns: #序列化lenses_pd[col] = le.fit_transform(lenses_pd[col])
序列化
- 构建决策树
clf = tree.DecisionTreeClassifier(max_depth = 4) #创建DecisionTreeClassifier()类clf = clf.fit(lenses_pd.values.tolist(), lenses_target) #使用数据,构建决策树
- 决策树的可视化
dot_data = StringIO()tree.export_graphviz(clf, out_file = dot_data, #绘制决策树feature_names = lenses_pd.keys(),class_names = clf.classes_,filled=True, rounded=True,special_characters=True)graph = pydotplus.graph_from_dot_data(dot_data.getvalue())graph.write_pdf("tree.pdf")
- 预测
可以根据自己的眼睛情况和年龄等特征,看一看自己适合何种材质的隐形眼镜print(clf.predict([[1,1,1,0]]))
sklearn中利用决策树实现鸢尾花分类
一、数据集
- 数据集获取
#导入相应的包 from sklearn import datasets #导入方法类 from sklearn.model_selection import train_test_split from sklearn.preprocessing import LabelEncoder, OneHotEncoder #from sklearn.externals.six import StringIO from six import StringIO from sklearn import tree import pandas as pd import numpy as np import pydotplus from sklearn.metrics import accuracy_score # 获取所需数据集 iris=datasets.load_iris() #每行的数据,一共四列,每一列映射为feature_names中对应的值 X=iris.data #每行数据对应的分类结果值(也就是每行数据的label值),取值为[0,1,2] Y=iris.target #通过Y=iris.target.size,可以得到一共150行数据,三个类别个50条数据,并且数据是按照0,1,2的顺序放的 #print(iris)
- 数据集划分
#划分训练集和测试集,按照7:3的比例划分 X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=42) print(X_train.shape) print(X_test.shape)
二、利用决策树实现鸢尾花分类
- 构建决策树
clf = tree.DecisionTreeClassifier() lenses = clf.fit(X_train, Y_train)
- 决策树可视化
dot_data = StringIO() tree.export_graphviz(clf, out_file = dot_data, #绘制决策树feature_names = iris.feature_names,class_names = iris.target_names,filled=True, rounded=True, special_characters=True) graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) graph.write_pdf("treeiris.pdf")
- 预测准确率
predict_results = clf.predict(X_test) # 使用模型对测试集进行预测 print(accuracy_score(predict_results, Y_test))
总结
sklearn实现决策树的过程
- 对数据集进行处理
- 使用tree.DecisionTreeClassifier()进行构建
- 使用clf.fit(X_train, Y_train)进行训练
- 将构建的决策树可视化
- 给相应的数据进行预测
参考资料
- 机器学习实战教程(三):决策树实战篇之为自己配个隐形眼镜
- https://scikit-learn.org/stable/modules/tree.html#tree
- https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
机器学习——sklearn实现决策树(隐形眼镜预测和鸢尾花分类)相关推荐
- Python机器学习基础教程(1)Irises(鸢尾花)分类之新手上路
一.感谢博客的内容提供的参考 标题:最新版学习笔记---Python机器学习基础教程(1)Irises(鸢尾花)分类---附完整代码 作者:非鱼子焉 地址:https://zhu-rui.blog.c ...
- 机器学习--sklearn之决策树(分类+回归)
什么是决策树? 决策树算法实现分类问题可以被理解为不断地进行条件语句判断,最终实现分类,如下图: 进行判断的分支很像树的枝干,被分出来的类别像是枝干上的叶子,所以将这个图称为决策树.所以,用决策树算法 ...
- 机器学习sklearn实战-----随机森林调参乳腺癌分类预测
机器学习sklearn随机森林乳腺癌分类预测 机器学习中调参的基本思想: 1)非常正确的调参思路和方法 2)对模型评估指标有深入理解 3)对数据的感觉和经验 文章目录 机器学习sklearn随机森林乳 ...
- HuaPu在学:机器学习——sklearn【决策树】
决策树 文章目录 决策树 一.决策树[sklearn.tree] 二.DecisionTreeClassifier[分类树] [criterion]: [random_state][splitter] ...
- 【机器学习】逻辑回归-基础认识与鸢尾花分类实操案例
文章目录 前言 一.基本理解 二.数学原理 三.简单二元分类算法实现 四.实战案例 总结 前言 本文将会对逻辑回归的基础理解,数学原理,简单算法实现,鸢尾花分类问题实操案例去学习我们的逻辑回归. 一. ...
- 机器学习代码实战——决策树(预测泰坦尼号船员生存情况)
文章目录 1.实验目的 2.数据预处理 3.导入必要模块 4.训练+计算模型得分 1.实验目的 1.建立决策树模型以根据某些参数预测泰坦尼克号人是否得以生存 2.在泰坦尼克数据中,使用以下各列构建一个 ...
- python 机器学习 sklearn——手把手教你预测心脏病
文章目录 流程 前期准备 数据 导包 数据操作 准备 样本数据 结果数据 切分训练集 训练数据 逻辑回归 决策树 结果 总结 流程 1.数据导入,清洗拆分 2.通过sklearn得到数据模型 3.开始 ...
- 【机器学习sklearn】决策树(Decision Tree)算法
提示:这里是一只努力肯
- 最新版学习笔记---Python机器学习基础教程(1)Irises(鸢尾花)分类---附完整代码
开始学习机器学习基础,在此留下学习心得与自己的理解. 啥也不说,先看一下鸢尾花啥样 好看吧~~~~ Iris 1.环境搭建 2.了解数据 2.1读取数据 2.2查看数据 3.分离数据 4.构建模型(k ...
- sklearn中的KNN算法实现鸢尾花分类
简介 使用sklearn自带的鸢尾花数据集,通过kNN算法实现了对鸢尾花的分类. 算法思路 通过计算每个训练样例到待分类样品的距离,取和待分类样品距离最近的K个训练样例,K个样品中哪个类别的训练样例占 ...
最新文章
- tensorflow1.0代码迁移到2.0官方指导
- python软件怎么用-如何使用Python自动控制windows桌面
- calendar前推n天_Shell获取ES3天的索引列表进行迁移操作
- 06 使用VS2012开发简单控制器程序 1214
- BN、LN、IN、GN、SN归一化
- 华为和新华三OSPF单区域配置
- c语言的程序的基本示例
- 三菱PLC编程软件操作快捷键汇总
- csdn中下载资源入口查找
- 核爆rpg学院站计算机,《核爆RPG》控制台代码及使用方法
- 身份证号码识别(golang)
- snipaste设置开机启动后失效失败问题解決方法
- 适合初学者使用的Mac绘图软件推荐
- Pano2VR制作全景漫游
- 三星dex安装linux软件,三星DeX应用试玩体验 无需扩展坞就能把PC变成工作站
- c++ 序列化库iguana使用总结
- 解决Android Studio等开发软件出现更新TKK失败的两种方案
- java计算出现负数吗,请问一个计算器的有关问题,怎么实现负数计算
- 1e9个兵临城下 - 容斥原理
- 数据基础---数据可视化