作家
登录

从决策树到随机森林:树型算法的原理与实现

作者: 来源: 2017-08-06 12:48:29 阅读 我要评论


正如上图所示,有两行描述了小我的教导:Eduction 和 EdNum。我们假设这两个特点十分相干,是以我们可以移除 Education 列。Country 列对猜测收入并不会起到什么感化,所以我们须要移除它。

df_train_set.drop(["Country", "Education"], axis=1, inplace=True)df_test_set.drop(["Country", "Education"], axis=1, inplace=True)

Age 和 EdNum 列是数值型的,我们可以将持续数值型转化为更高效的方法,例如将年纪换为 10 年的┞符数倍,教导年限换为 5 年的┞符数倍,实现的代码如下:

colnames = list(df_train_set.columns)colnames.remove('Age')colnames.remove('EdNum')colnames = ['AgeGroup', 'Education'] + colnameslabels = ["{0}-{1}".format(i, i + 9) for i in range(0, 100, 10)]df_train_set['AgeGroup'] = pd.cut(df_train_set.Age, range(0, 101, 10), right=False, labels=labels)df_test_set['AgeGroup'] = pd.cut(df_test_set.Age, range(0, 101, 10), right=False, labels=labels)labels = ["{0}-{1}".format(i, i + 4) for i in range(0, 20, 5)]df_train_set['Education'] = pd.cut(df_train_set.EdNum, range(0, 21, 5), right=False, labels=labels)df_test_set['Education'] = pd.cut(df_test_set.EdNum, range(0, 21, 5), right=False, labels=labels)df_train_set = df_train_set[colnames]df_test_set = df_test_set[colnames]
df_train_set.Income.value_counts()
<=50K 24720
>50K 7841
df_test_set.Income.value_counts()
<=50K 12435
>50K 3846
Name: Income, dtype: int64

在练习集和测试集中,我们发明 <=50K 的类别要比>50K 的多 3 倍。大年夜这里我们就可以看出来样本数据并不是均衡的数据,然则在这里为了简化问题,我们在这老将该数据集看作惯例问题。

EDA

如今,让我们以图像的情势看一下练习数据中的不合特点的分布和互相依存(inter-dependence)关系。起首看一下关系(Relationships)和婚姻状况(MaritalStatus)特点是若何互相接洽关系的。

(ggplot(df_train_set, aes(x = "Relationship", fill = "MaritalStatus"))+ geom_bar(position="fill")+ theme(axis_text_x = element_text(angle = 60, hjust = 1)))

Relationship

让我们起首看一下不合年纪组中,教导对收入的影响(用受教导的年数进行衡量)。

(ggplot(df_train_set, aes(x = "Education", fill = "Income"))+ geom_bar(position="fill")+ theme(axis_text_x = element_text(angle = 60, hjust = 1))+ facet_wrap('~AgeGroup'))

比来,有很多关于性别对收入差距的影响的相干说法。我们可以分别看见男性和女性的教导水平和种族间的影响。

(ggplot(df_train_set, aes(x = "Race", fill = "Income"))+ geom_bar(position="fill")+ theme(axis_text_x = element_text(angle = -90, hjust = 1))+ facet_wrap('~Sex'))
(ggplot(df_train_set, aes(x = "Education", fill = "Income"))+ geom_bar(position="fill")+ theme(axis_text_x = element_text(angle = -90, hjust = 1))+ facet_wrap('~Sex'))

分类和回归树(简称 CART)是 Leo Breiman 惹人的术语,指用来解决分类或回归猜测建模问题的决定计划树算法。它常应用 scikit 生成并实现决定计划树: sklearn.tree.DecisionTreeClassifier 和 sklearn.tree.DecisionTreeRegressor 分别构建分类和回归树。



直到如今,我们仅存眷了非数值特点(non-numeric)的互相关系。如今我们看一下本钱收益(CapitalGain)和本钱损掉(CapitalLoss)对收入的影响。

(ggplot(df_train_set, aes(x="Income", y="CapitalGain"))+ geom_jitter(position=position_jitter(0.1)))

(ggplot(df_train_set, aes(x="Income", y="CapitalLoss"))+ geom_jitter(position=position_jitter(0.1)))

树分类器

如今我们懂得了我们数据中的一些关系,所以就可以应用 sklearn.tree.DecisionTreeClassifier 创建一个简单的树分类器模型。然而,为了应用这一模型,我们须要把所有我们的非数值数据转化成数值型数据。我们可以直接在 Pandas 数据框架中应用 sklearn.preprocessing.LabeEncoder 模块和 sklearn_pandas 模块就可以轻松地完成这一步调。


  推荐阅读

  Linux下awk内置变量使用介绍

我们将逐渐揭开 awk 功能的神秘面纱,在本节中,我们将介绍 awk 内置built-in变量的概念。你可以在 awk 中应用两种类型的变量,它们是:用户自定义user-defined变量和内置变量。我们将逐>>>详细阅读


本文标题:从决策树到随机森林:树型算法的原理与实现

地址:http://www.17bianji.com/lsqh/36558.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)