Scikit-learn——Decision Tree(Classifier)

本文主要介绍一下sklearn中分类决策树的简单用法。

决策树优点:
1.简单易于理解,能够可视化;
2.训练集规模不大,值得注意的是该模型不接受缺失值;
3.使用代价仅为训练样本数取对数;
4.既能够处理数值型数据集(numerical)也能够处理标签型(categorical)数据集
5.能够处理多输出问题;
6.能够用布尔逻辑来表示一种情况的决策过程,不像神经网络完全黑箱;
7.性能良好

决策树缺点:
1.容易导致过拟合,以至于泛华能力若,需要剪枝;
2.稳定性差,即使数据集微小的变化也可能导致生成一个与之前完全不同的决策树;

sklearn.tree.DecisionTreeClassifier

参数表 含义
criterion 划分标准;可选项,默认值为”gini”,即基尼指数,”entropy”信息增益
max_depth 最大深度;可选项,默认值为”None”,即不限深度,直到达到某种阈值
min_samples_split 阈值;可选项,默认值为2,当某个结点的样本数小于该值时,停止划分;若为浮点型,则当某个结点的样本数小于n_samples*min_samples_splies时,停止
min_samples_leaf 叶结点中,样本点的最小值;默认值为1;若为浮点型,则叶结点的最小样本数为min_samples_leaf*n_samples
属性表 含义
n_classes_ 列出类数目
classes_ 列出类标签
feature_importances_ 列出每一维特征的重要性
n_features_ 特征数目
方法表 含义
fix(X,y) 拟合
get_params() 获取参数表中的参数
predict(X) 返回预测出的结果
score(X,y) 返回准确率

举例

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn import svm
from sklearn.cross_validation import train_test_split


iris = load_iris()
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,test_size=0.3)

clf = DecisionTreeClassifier()
clf.fit(X_train,y_train)
print clf.score(X_test,y_test)


svc = svm.SVC()# 拿支持向量机做对比
svc.fit(X_train,y_train)
print svc.score(X_test,y_test)

>>
>>
0.933333333333
0.955555555556

参考:

猜你喜欢

转载自blog.csdn.net/the_lastest/article/details/79006933
今日推荐