前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2021年战胜机器学习纸老虎-第二周 决策树(一)

2021年战胜机器学习纸老虎-第二周 决策树(一)

原创
作者头像
到不了的都叫做远方
修改2021-02-01 11:18:09
5700
修改2021-02-01 11:18:09
举报

大家好,很高兴来到了2021年战胜机器学习纸老虎-第二周 决策树(一)的内容时间。我一步一步从简单的例子,进入机器学习的世界。(PPT大小限制,压缩了会变形,就一页一页贴吧)

【这段交代了解即可,咱们在未来的实例当中,会不断遇到,然后逐渐学习。我说不出过程,但我会做,岂不是也很好?】

机器学习的关键是统计学习,是从大量的数据经验中学会如何判断和反馈,就恰似一个小朋友,他看到了、学到了一个汽车是什么样子的,下一次他可能遇到汽车,就能认出汽车。说回机器学习,在数据的基础上,用策略、算法、模型来模拟学习过程,最终输出结果。

机器学习的步骤,概括下来就是以上六个步骤,每次做机器学习的时候,走一遍完整的过程,就能得到一个结果,无论它是否满足需求,优化它,是不变的追求。

实现统计学习方法的步骤如下:

1、得到一个有限的训练数据集合

2、确定包含所有可能的模型的假设空间,即学习模型的集合

3、确定模型选择的准则,即学习的策略

4、实现求解最优模型的算法,即学习的算法

5、通过学习方法选择最优模型

6、利用学习的最优模型对新数据进行预测或分析

好了,正文开始咱们还是从简单的慢慢深入,慢慢学习!

假设机器学习也是个打怪升级的任务,初入新手村,我们接到了第一个任务,总会出现一个老铁匠说,选件武器防身吧!对于机器学习的方法,我觉得它们也像是武器一样,你得做出选择,哪个好?还得看看你遇到的实际情况。

这些个奇怪的武器,我先不进行一一的介绍,我要化身成为老铁匠,来带你逐一领略一番,看看哪个兵器适合你。随手抛给你一个叫做决策树的玩意儿,让你试试!

看到这颗树了吗,倒过来就是咱们的决策树,从根部按照一定的条件分叉,满足条件走一边,不满足就走另一边就好了,像极了非黑即白的思考方式,每次的选择并不多,做出选择就好。走到了尽头,你将获得一个答案,下面就由一个小例子,试试身手吧。

你看到了一只叫蟒蛇的动物,你想判断它是否是哺乳动物。你以前就认识一些动物,像【人,野猪、狮子】什么的,其实或许也没亲眼看到它们,但是我们知道它们的一些特点,比如会不会飞?是不是生活在水里,是不是靠生个蛋来孕育下一代,是不是啥都吃什么的,现在通过悄悄的观察,发现这蟒蛇【吃肉,生蛋繁衍下一代,不喜欢生活在水里,不会飞】,那它是哺乳动物吗?

1、导入用到的库:

代码语言:python
复制
import pandas as pd
from sklearn import tree
from sklearn.feature_extraction import DictVectorizer  # 字典特征向量化

2、加载数据

代码语言:python
复制
df = pd.read_csv(r'./data-animals.csv')
df.columns  # 查看下列名,数据量少,数据量多的话选取哪些特征
Index(['动物', '饮食习性', '胎生动物', '水生动物', '会飞', '哺乳动物'], dtype='object')

以下是数据集:
动物	饮食习性	胎生动物	水生动物	会飞	哺乳动物
0	人类	杂食动物	是	否	否	是
1	野猪	杂食动物	是	否	否	是
2	狮子	肉食动物	是	否	否	是
3	苍鹰	肉食动物	否	否	是	否
4	鳄鱼	肉食动物	否	是	否	否
5	巨蜥	肉食动物	否	否	否	否
6	蝙蝠	杂食动物	是	否	是	是
7	野牛	草食动物	是	否	否	是
8	麻雀	杂食动物	否	否	是	否
9	鲨鱼	肉食动物	否	是	否	否
10	海豚	肉食动物	是	是	否	是
11	鸭嘴兽	肉食动物	否	否	否	是
12	袋鼠	草食动物	是	否	否	是
13	蟒蛇	肉食动物	否	否	否	否
14	海豚	肉食动物	是	是	否	是
15	鸭嘴兽	肉食动物	否	否	否	是
16	袋鼠	草食动物	是	否	否	是
17	蟒蛇	肉食动物	否	否	否	否

3、构造方法

代码语言:python
复制
vec = DictVectorizer()  # 将分类数据向量化
clf = tree.DecisionTreeClassifier()  # 构建决策树,这里default:criterion='gini'

4、构造训练数据集

代码语言:python
复制
train_x = df[['饮食习性', '胎生动物', '水生动物', '会飞']]  # 选择了这四个特征
train_y = df['哺乳动物']  # 这是分类结果,标签列,也就是想知道的答案

5、操作模型

代码语言:python
复制
X = vec.fit_transform(train_x.to_dict('records')).toarray()  # 分类特征向量化
vec.get_feature_names()  # 可了解新列各代表的意义
['会飞=否',
 '会飞=是',
 '水生动物=否',
 '水生动物=是',
 '胎生动物=否',
 '胎生动物=是',
 '饮食习性=杂食动物',
 '饮食习性=肉食动物',
 '饮食习性=草食动物']
 
clf.fit(X, y)  # 将数据喂给模型,进行训练,这样我们就学习了第一个模型。

6、决策树结果输出

代码语言:python
复制
import graphviz
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=vec.get_feature_names(),class_names=y)  
graph = graphviz.Source(dot_data)  
graph 

以上图左为构建的决策树,简单说下格子当中的数据含义,例如第一格内:

第一行:代表决策树首先按照【胎生动物=否 <= 0.5】这个条件进行判断,由于分类数据的向量化,该特征不是0,就是1,按照这个条件,就是以0.5为界,那这行的意思,该特征为0的是True走左侧支线,1则是False,走右侧支线。

第二行:代表用‘gini’系数算出来的值

第三行:表示训练集当中的样本数

第四行:代表训练集全部样本中,标签值的类型,如本数据集,有7个非哺乳动物,11个哺乳动物

第五行:不太懂,等我再学一下

7、进行预测:

代码语言:python
复制
df.iloc[17]
clf.predict([X[17,:]])  # 预测特定的特征下,样本的标签值

现在蟒蛇的位置在第17个,我们来预测它是否是哺乳动物,答案是否定的。

好了,第一个模型咱们就掌握了,拥有了构造这个模型的能力,遇到了分类问题和数据,就可以用决策树试试了。

决策树的第一次分享,就到这里了,下周将迎来关于决策树的第二次分享,谢谢大家。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档