python 中 机器学习算法 --决策树
现在计算这些的实际值
主队和客队最后一场比赛赢了吗?
决策树是一种有监督的机器学习算法,它看起来就像是由一系列节点组成的流程图,其中位
于上层节点的值决定下一步走向哪个节点。
<img src = ‘https://blog.csdn.net/jcjic/article/details/image/决策树1.png’,width=100,height=100>
跟大多数分类算法一样,决策树也分为两大步骤。
首先是训练阶段,用训练数据构造一棵树大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。上一章的近邻算法没有训练阶段,但是决策
树需要。从这个意义上说,近邻算法是一种惰性算法,在用它进行分类时,它才开始干
活。相反,决策树跟大多数机器学习方法类似,是一种积极学习的算法,在训练阶段完
成模型的创建。
其次是预测阶段,用训练好的决策树预测新数据的类别。以上图为例,[“is raining”,
“very windy”]的预测结果为“Bad”(坏天气)。
创建决策树的算法有多种,大都通过迭代生成一棵树大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。它们从根节点开始,选取最佳特征,
用于第一个决策,到达下一个节点,选择下一个最佳特征,以此类推。当发现无法从增加树的层
级中获得更多信息时,算法启动退出机制。
scikit-learn库实现了分类回归树(Classification and Regression Trees,CART)算法并将
其作为生成决策树的默认算法,它支持连续型特征和类别型特征。
我们试试看哪个队在阶梯上更好。使用上一年的梯子
5 rows × 24 columns
#这里好像所有的特征都转变为只有几类,例如True和false ,不然那个信息增益要算很多
#谁赢了最后一场比赛?我们忽略了家/访客这一点
最后我们来看一下,决策树在训练数据量很大的情况下,能否得到有效的分类模型。我们将
会为决策树添加球队,以检测它是否能整合新增的信息。
虽然决策树能够处理特征值为类别型的数据,但scikit-learn库所实现的决策树算法要求
先对这类特征进行处理。用LabelEncoder转换器就能把字符串类型的球队名转化为整型。代码
如下
决策树可以用这些特征值进行训练,但DecisionTreeClassifier仍把它们当作连续型特
征。例如,编号从0到16的17支球队,算法会认为球队1和2相似,而球队4和10不同。但其实这没
意义,对于两支球队而言,它们要么是同一支球队,要么不同,没有中间状态!
为了消除这种和实际情况不一致的现象,我们可以使用OneHotEncoder转换器把这些整数转
换为二进制数字。每个特征用一个二进制数字①来表示。例如,LabelEncoder为芝加哥公牛队分配
的数值是7,那么OneHotEncoder为它分配的二进制数字的第七位就是1,其余队伍的第七位就是0大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!。
每个可能的特征值都这样处理,而数据集会变得很大。代码如下:
正确率为60%,比基准值要高,但是没有之前的效果好。原因可能在于特征数增加后,决策
树处理不当。鉴于此,我们尝试修改算法,看看会不会起作用。数据挖掘有时就是不断尝试新算
法、使用新特征这样一个过程。
我们也可以尝试CridSearchCV类的其他参数
<<机器学习>> --周志华
<<数据挖掘概念与技术>> 中文版的
评论