文章目录

  • sklearn中利用决策树实现隐形眼镜类型的预测
    • 一、准备数据集
    • 二、环境的准备
    • 三、DecisionTreeClassifier构建决策树的部分参数说明
    • 四、利用决策树实现隐形眼镜类型的预测
  • sklearn中利用决策树实现鸢尾花分类
    • 一、数据集
    • 二、利用决策树实现鸢尾花分类
  • 总结
    • sklearn实现决策树的过程
  • 参考资料

sklearn中利用决策树实现隐形眼镜类型的预测

一、准备数据集

  1. 数据集的介绍
    隐形眼镜数据集是非常著名的数据集,它包含很多眼部状态的观察条件以及医生推荐的隐形眼镜类型。隐形眼镜类型包括硬材质(hard)、软材质(soft)以及不适合佩戴隐形眼镜(no lenses)。整个数据集一共有24组数据,数据的Labels依次是age、prescript、astigmatic、tearRate、class,也就是第一列是年龄,第二列是症状,第三列是是否散光,第四列是眼泪数量,第五列是最终的分类标签。
  2. 数据集的下载
    下载地址:https://github.com/Jack-Cherish/Machine-Learning/blob/master/Decision%20Tree/lenses.txt

二、环境的准备

  1. 安装sklearn

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sklearn
    
  2. 安装pydotplus
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pydotplus
    
  3. 安装Graphviz
    下载地址:https://www.graphviz.org/download/
    安装过程,按照安装向导的指示进行。如果按照过程,没有选择自动添加PATH,需要自行手动添加环境变量。
    添加环境变量过程:
    选择我的电脑->属性->高级->环境变量。在系统变量的Path变量中,添加Graphviz的环境变量,若Graphviz安装在了D盘的根目录,则添加:D:\Graphviz\bin

三、DecisionTreeClassifier构建决策树的部分参数说明

  1. criterion
    特征选择标准,可选参数,默认是gini,可以设置为entropy。gini是基尼系数,使用该参数的时候,是采用的CART算法实现决策树的。entropy是信息增益,也就是采用的ID3算法实现决策树的。
  2. splitter
    特征划分点选择标准,可选参数,默认是best,可以设置为random。best参数是根据算法选择最佳的切分特征,random随机的在部分划分点中找局部最优的划分点。“best"适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐使用"random”。
  3. max_depth
    决策树最大深度,可选参数,默认是None。当模型样本很多的时候,可以取值10-100。
  4. 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),数是向上取整的。如果样本量数量级非常大,则增大这个值。
  5. 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

    说明:一般都使用决策树默认的参数设置,若自行设置参数的值,根据实际情况进行设定。

四、利用决策树实现隐形眼镜类型的预测

  1. 读取数据集

    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

  2. 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])
    


    序列化

  3. 构建决策树
        clf = tree.DecisionTreeClassifier(max_depth = 4)                        #创建DecisionTreeClassifier()类clf = clf.fit(lenses_pd.values.tolist(), lenses_target)                    #使用数据,构建决策树
    
  4. 决策树的可视化
        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")
    

  5. 预测
    可以根据自己的眼睛情况和年龄等特征,看一看自己适合何种材质的隐形眼镜

    print(clf.predict([[1,1,1,0]]))
    

sklearn中利用决策树实现鸢尾花分类

一、数据集

  1. 数据集获取

    #导入相应的包
    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)
    

  2. 数据集划分
    #划分训练集和测试集,按照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)
    

二、利用决策树实现鸢尾花分类

  1. 构建决策树

    clf = tree.DecisionTreeClassifier()
    lenses = clf.fit(X_train, Y_train)
    
  2. 决策树可视化
    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")
    

  3. 预测准确率
    predict_results = clf.predict(X_test) # 使用模型对测试集进行预测
    print(accuracy_score(predict_results, Y_test))
    

总结

sklearn实现决策树的过程

  1. 对数据集进行处理
  2. 使用tree.DecisionTreeClassifier()进行构建
  3. 使用clf.fit(X_train, Y_train)进行训练
  4. 将构建的决策树可视化
  5. 给相应的数据进行预测

参考资料

  1. 机器学习实战教程(三):决策树实战篇之为自己配个隐形眼镜
  2. https://scikit-learn.org/stable/modules/tree.html#tree
  3. https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html

机器学习——sklearn实现决策树(隐形眼镜预测和鸢尾花分类)相关推荐

  1. Python机器学习基础教程(1)Irises(鸢尾花)分类之新手上路

    一.感谢博客的内容提供的参考 标题:最新版学习笔记---Python机器学习基础教程(1)Irises(鸢尾花)分类---附完整代码 作者:非鱼子焉 地址:https://zhu-rui.blog.c ...

  2. 机器学习--sklearn之决策树(分类+回归)

    什么是决策树? 决策树算法实现分类问题可以被理解为不断地进行条件语句判断,最终实现分类,如下图: 进行判断的分支很像树的枝干,被分出来的类别像是枝干上的叶子,所以将这个图称为决策树.所以,用决策树算法 ...

  3. 机器学习sklearn实战-----随机森林调参乳腺癌分类预测

    机器学习sklearn随机森林乳腺癌分类预测 机器学习中调参的基本思想: 1)非常正确的调参思路和方法 2)对模型评估指标有深入理解 3)对数据的感觉和经验 文章目录 机器学习sklearn随机森林乳 ...

  4. HuaPu在学:机器学习——sklearn【决策树】

    决策树 文章目录 决策树 一.决策树[sklearn.tree] 二.DecisionTreeClassifier[分类树] [criterion]: [random_state][splitter] ...

  5. 【机器学习】逻辑回归-基础认识与鸢尾花分类实操案例

    文章目录 前言 一.基本理解 二.数学原理 三.简单二元分类算法实现 四.实战案例 总结 前言 本文将会对逻辑回归的基础理解,数学原理,简单算法实现,鸢尾花分类问题实操案例去学习我们的逻辑回归. 一. ...

  6. 机器学习代码实战——决策树(预测泰坦尼号船员生存情况)

    文章目录 1.实验目的 2.数据预处理 3.导入必要模块 4.训练+计算模型得分 1.实验目的 1.建立决策树模型以根据某些参数预测泰坦尼克号人是否得以生存 2.在泰坦尼克数据中,使用以下各列构建一个 ...

  7. python 机器学习 sklearn——手把手教你预测心脏病

    文章目录 流程 前期准备 数据 导包 数据操作 准备 样本数据 结果数据 切分训练集 训练数据 逻辑回归 决策树 结果 总结 流程 1.数据导入,清洗拆分 2.通过sklearn得到数据模型 3.开始 ...

  8. 【机器学习sklearn】决策树(Decision Tree)算法

    提示:这里是一只努力肯

  9. 最新版学习笔记---Python机器学习基础教程(1)Irises(鸢尾花)分类---附完整代码

    开始学习机器学习基础,在此留下学习心得与自己的理解. 啥也不说,先看一下鸢尾花啥样 好看吧~~~~ Iris 1.环境搭建 2.了解数据 2.1读取数据 2.2查看数据 3.分离数据 4.构建模型(k ...

  10. sklearn中的KNN算法实现鸢尾花分类

    简介 使用sklearn自带的鸢尾花数据集,通过kNN算法实现了对鸢尾花的分类. 算法思路 通过计算每个训练样例到待分类样品的距离,取和待分类样品距离最近的K个训练样例,K个样品中哪个类别的训练样例占 ...

最新文章

  1. tensorflow1.0代码迁移到2.0官方指导
  2. python软件怎么用-如何使用Python自动控制windows桌面
  3. calendar前推n天_Shell获取ES3天的索引列表进行迁移操作
  4. 06 使用VS2012开发简单控制器程序 1214
  5. BN、LN、IN、GN、SN归一化
  6. 华为和新华三OSPF单区域配置
  7. c语言的程序的基本示例
  8. 三菱PLC编程软件操作快捷键汇总
  9. csdn中下载资源入口查找
  10. 核爆rpg学院站计算机,《核爆RPG》控制台代码及使用方法
  11. 身份证号码识别(golang)
  12. snipaste设置开机启动后失效失败问题解決方法
  13. 适合初学者使用的Mac绘图软件推荐
  14. Pano2VR制作全景漫游
  15. 三星dex安装linux软件,三星DeX应用试玩体验 无需扩展坞就能把PC变成工作站
  16. c++ 序列化库iguana使用总结
  17. 解决Android Studio等开发软件出现更新TKK失败的两种方案
  18. java计算出现负数吗,请问一个计算器的有关问题,怎么实现负数计算
  19. 1e9个兵临城下 - 容斥原理
  20. 数据基础---数据可视化

热门文章

  1. 2019年程序员薪资报告,网友:年薪20万只是起薪?
  2. c语言ctype函数,C语言函数--ctype.h库函数
  3. 串口协议包的接收及解析处理
  4. 批量标准矢量shp转txt工具shp2txt、批量txt转shp矢量工具txt2shp(Arcgis之国土报备、预审报批、勘测定界、自然资源系统)
  5. CSS单行文本溢出时显示省略号
  6. fscanf()函数详解
  7. uniapp-UI设计
  8. 2017云栖大会Tech Insight亮点大剧透
  9. HTML页面调用打印机打印pdf文件
  10. 快速制作index.html,介绍一个h5快速制作平台鲁班H5