本文主要介绍一下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
参考: