文章目录

  • 1.课本课后习题
  • 2.视频课后作业

1.课本课后习题

import graphviz
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn import preprocessing
from sklearn import tree
import matplotlib.pyplot as pltfeatures = ["年龄", "有工作", "有自己的房子", "信贷情况"]
x_train = pd.DataFrame([["青年", "否", "否", "一般"],["青年", "否", "否", "好"],["青年", "是", "否", "好"],["青年", "是", "是", "一般"],["青年", "否", "否", "一般"],["中年", "否", "否", "一般"],["中年", "否", "否", "好"],["中年", "是", "是", "好"],["中年", "否", "是", "非常好"],["中年", "否", "是", "非常好"],["老年", "否", "是", "非常好"],["老年", "否", "是", "好"],["老年", "是", "否", "好"],["老年", "是", "否", "非常好"],["老年", "否", "否", "一般"]
])
y_train = pd.DataFrame(["否", "否", "是", "是", "否", "否", "否", "是", "是", "是", "是", "是", "是", "是", "否"])# 数据预处理
# LabelEncoder()打标签,对特征进行硬编码
le_x = preprocessing.LabelEncoder()
le_x.fit(np.unique(x_train))
x_train = x_train.apply(le_x.transform)le_y = preprocessing.LabelEncoder()
le_y.fit(np.unique(y_train))
y_train = y_train.apply(le_y.transform)# 建立模型
model_tree = DecisionTreeClassifier()
model_tree.fit(x_train,y_train)# 可视化
dot_data = tree.export_graphviz(model_tree,out_file='tree.dot',feature_names=features,class_names=[str(k) for k in np.unique(y_train)],filled= True,rounded=True,special_characters=True)graph = graphviz.Source(dot_data)

解决graphiz使用问题

链接

2.视频课后作业



一般默认使用基尼指数即可,因为熵中有对数运算,耗时
from sklearn.tree import DecisionTreeClassifier
from sklearn import preprocessing
import numpy as np
import pandas as pd
import time# 可视化
from IPython.display import Image
from sklearn import tree
import pydotplusdef show(clf,features,y_types):"""决策树的可视化"""dot_data = tree.export_graphviz(clf, out_file=None,feature_names=features,class_names=y_types,filled=True, rounded=True,special_characters=True)graph = pydotplus.graph_from_dot_data(dot_data)Image(graph.create_png())  #jupyter里可以显示,pycharm显示不出graph.write_png(r'DT_show.png')def main():star=time.time()# 原始样本数据features=["age","work","house","credit"]X_train=pd.DataFrame([["青年", "否", "否", "一般"],["青年", "否", "否", "好"],["青年", "是", "否", "好"],["青年", "是", "是", "一般"],["青年", "否", "否", "一般"],["中年", "否", "否", "一般"],["中年", "否", "否", "好"],["中年", "是", "是", "好"],["中年", "否", "是", "非常好"],["中年", "否", "是", "非常好"],["老年", "否", "是", "非常好"],["老年", "否", "是", "好"],["老年", "是", "否", "好"],["老年", "是", "否", "非常好"],["老年", "否", "否", "一般"]])y_train = pd.DataFrame(["否", "否", "是", "是", "否", "否", "否", "是", "是", "是", "是", "是", "是", "是", "否"])# 数据预处理le_x=preprocessing.LabelEncoder()le_x.fit(np.unique(X_train))X_train=X_train.apply(le_x.transform)le_y=preprocessing.LabelEncoder()le_y.fit(np.unique(y_train))y_train=y_train.apply(le_y.transform)# 调用sklearn.DT建立训练模型clf=DecisionTreeClassifier()clf.fit(X_train,y_train)# 可视化show(clf,features,[str(k) for k in np.unique(y_train)])# 用训练得到模型进行预测X_new=pd.DataFrame([["青年", "否", "是", "一般"]])X=X_new.apply(le_x.transform)y_predict=clf.predict(X)# 结果输出X_show=[{features[i]:X_new.values[0][i]} for i in range(len(features))]print("{0}被分类为:{1}".format(X_show,le_y.inverse_transform(y_predict)))print("time:{:.4f}s".format(time.time()-star))if __name__=="__main__":main()
[{'age': '青年'}, {'work': '否'}, {'house': '是'}, {'credit': '一般'}]被分类为:['是']
time:0.1602s

统计学习方法读书笔记11-决策树课后习题相关推荐

  1. 统计学习方法读书笔记(六)-逻辑斯蒂回归与最大熵模型(迭代尺度法(IIS))

    全部笔记的汇总贴:统计学习方法读书笔记汇总贴 逻辑斯谛回归 (logistic regression )是统计学习中的经典分类方法.最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(m ...

  2. 统计学习方法读书笔记(九)-EM算法及其推广

    全部笔记的汇总贴:统计学习方法读书笔记汇总贴 EM算法用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步组成:E步,求期望(ex ...

  3. 统计学习方法读书笔记15-逻辑斯蒂回归习题

    文章目录 1.课后习题 2.视频课后习题 1.课后习题 import numpy as np import time import matplotlib.pyplot as plt from mpl_ ...

  4. 统计学习方法 读书笔记(五)

    读书笔记仅供个人学习使用 本文主要参考书籍为<统计学习方法>(李航)第二版 参考 Sunning_001的博客 决策树 决策树的定义 if-then 的理解 条件概率分布的理解 决策树学习 ...

  5. 李航《统计学习方法》AdaBoost算法(课后习题)

    AdaBoost:https://blog.csdn.net/v_JULY_v/article/details/40718799 提升树:https://www.cnblogs.com/daguank ...

  6. 大数据之路读书笔记-11事实表设计

    大数据之路读书笔记-11事实表设计 文章目录 大数据之路读书笔记-11事实表设计 11.1 事实表基础 11.1.1 事实表特性 11.1.2 事实表设计原则 11.1.3 事实表设计方法 11.2 ...

  7. 李航《统计学习方法》第四章课后答案链接

    李航<统计学习方法>第四章课后答案链接 本博客转载自:http://blog.csdn.net/xiaoxiao_wen/article/details/54097917

  8. 李航《统计学习方法》第三章课后答案链接

    李航<统计学习方法>第三章课后答案链接 我的天呐竟然木有百度到...是因为太简单了吗...

  9. 统计学习方法 学习笔记(十):决策树

    这一个学习笔记将要了解决策树,在研一上机器学习这门课的时候,老师在讲到这一节的时候,举了一个例子我现在还能记得:你们坐在这里上课,就像这个决策树一样,在你人生中的每一个重要结点,你都做出了选择,经过多 ...

  10. 复现经典:《统计学习方法》​第 11 章 条件随机场

    本文是李航老师的<统计学习方法>[1]一书的代码复现. 作者:黄海广[2] 备注:代码都可以在github[3]中下载. 我将陆续将代码发布在公众号"机器学习初学者", ...

最新文章

  1. Spring框架是怎么解决Bean之间的循环依赖的 (转)
  2. 邬贺铨:工业互联网的网络技术
  3. C#从服务器下载文件到客户端源码
  4. MySQL show binlog events命令查看binlog日志内容
  5. Linux内核最新的连续内存分配器(CMA)——避免预留大块内存【转】
  6. 掌握python编程语言tensorflow_手把手教你eclipse集成Python语言+Tensorflow环境
  7. Tomcat startup.bat 原理分析
  8. 6DoF视频:通往下一代高自由度视频体验
  9. 英语口语小组PPT--袁隆平
  10. matlab气相分解反应动力学,第十二章 化学动力学.ppt
  11. Microsoft C++ 异常: 内存位置处的 std::bad_alloc问题解决办法
  12. 蚂蚁金服双 11 大促全面揭秘:百万支付、容器化和平台智能化
  13. .NetCore Redis使用及帮助类
  14. 软件著作权算法软件设计说明书_软件著作权说明书模板
  15. SaaSpace:最好的免费网络安全工具
  16. 建筑智能化资质办理条件
  17. 九宫格日记 2017年12月19日(周二)
  18. 利用Multipart上传文件报错:The field fileUpload exceeds its maximum permitted size of 1048576 bytes
  19. android 声明一个空数组
  20. PyQT股票看板软件界面设计

热门文章

  1. 普通Java类获取Spring的bean
  2. JSON Assertion(JSON断言)
  3. mysqljoin的原理和优化
  4. 【MySQL】Unknown column 'column_name' in 'field list'
  5. jquery获取父级元素、子级元素、兄弟元素
  6. python 条件判断和循环
  7. 设计模式 创建型 工厂方法模式
  8. UVa 10400 记忆化搜索
  9. 性能测试场景设计--混合业务场景下的脚本比例控制
  10. 喜欢使用VMware的.net程序员要注意呀(Visual Studio启动不了的问题)