sklearn入门与决策树 笔记
顺口溜:
两种决策树,8参数,1属性,4接口。
8个参数:criterion;random_state/splitter;max_depth;min_samples_leaf;min_samples_split;max_feature;min_impurity_decrease。
1个属性:feature_importances_
4接口:fit,score,apply,predict
sklearn简介
sklearn几乎涵盖了所有主流的机器学习语言包,它的三个好cp是:numpy,scipy,matplotlib。
分为六大模块:分类,回归,聚类,降维,模型选择以及数据预处理。
这里算法原理不赘述,若想要深挖数学原理,请参照《数据挖掘导论》和瓜书。
决策树简介:
是一种非参数的有监督学习方法,用简单的树状图解决回归和分类问题,Adaboost,随机森林在各大公司处理实际问题中都有使用。
决策树解决两个最重要的问题:
1)如何从数据表中找出最佳节点和最佳分支
2)如何让决策树停止生长 ,防止过拟合
sklearn中的决策树类:
回归树和分类树
sklearn的基本建模流程:
so easy!建模过程三步走
1.实例化
clf = tree.DecisionTreeClassifier()
2.训练模型
clf = clf.fit(xtrain,ytrain)%对模型喂数据
3.模型评估,得到测试集上的得分
score = clf.score(xtest,ytest)
重要参数
1.criterion =['entropy','gini']
信息系数以及gini系数的严格定义参照瓜书和《统计学习方法》。
2.random_state
用来设置分枝中的随机模式的参数,默认None
- splitter
是用来控制决策树中的随机选项的,有两种输入值。输入”best":分枝是随机的,但是还是选择更重要的特征进行分枝。输入“random”:决策树在分枝时更加随机,是防止过拟合的一种方法。
random_state和splitter可以帮助我们降低树模型建立之后过拟合的可能性。树模型一旦建立,依然使用剪枝参数防止过拟合。
剪枝参数
max_depth:
限制树的最大深度,超过设定的深度的树枝全部剪掉。实际应用中,建议从3开始,看看你和效果再决定是否增加深度。
min_samples_leaf,min_samples_split
这两个参数搭配max_depth食用更佳哦~
min_samples_leaf:一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练样本,否则分枝就不会发生。
min_samples_split:一个节点必须要包含至少min_samples_split个训练样本,这个节点才允许被分枝。
max_features , min_impurity_decrease
max_features限制分枝时考虑的特征个数;min_impurity_decrease限制信息增益的大小。
重要属性以及接口
所有接口中要求输入xtrain,xtest部分,输入的矩阵必须至少是一个二维矩阵。sklearn不接受任何一维矩阵作为特征矩阵被输入。如果数据只有一个特征,必须使用reshape(-1,1)给矩阵增维;如果数据只有一个特征和一个样本,使用reshape(1,-1)给矩阵增维。
clf.apply(xtest)
clf.predict(xtest)
上述两行代码分别返回每个测试样本所在的叶子节点的索引,每个测试样本的分类or回归结果