决策树分类的一个入门示例

https://www.shiyanlou.com/courses/863 参考教程

决策树进行鸢尾花分类

使用决策树一些关键步骤:

  • 特征选取:信息增益越大,该特征越重要
  • 节点划分算法:
    1. ID3,利用信息增益进行节点划分,选取信息增益最大的特征作为划分依据,进行节点分裂,不断迭代,直到信息增益足够小或者为0
    2. C4,5,利用信息增益比进行划分
    3. ID3,C4,5共同缺点是容易造成过拟合over-fitting,因此要进行节点修剪
  • 决策树修剪:即优化误差函数:从叶子节点出发,向根节点收缩,如果去掉划分节点的特征后可以使误差函数变小,即删去该节点的分支;
  • CART算法:上述算法,要先生成决策树,然后修剪,效率低;
    因此有一种一步到位的方法:CART算法,同时兼顾决策树的生成和修剪,可以应用在分类和回归问题上;CART在生成分类树使用基尼指数(Gini index)最小化,在生成回归树使用平方损失函数最小化;

决策树中的一个典型的数据–鸢尾花

from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score


# 这是决策树中的一个典型的数据--鸢尾花
iris = datasets.load_iris()
# 特征数据
iris_feature = iris.data
# 分类数据
iris_target = iris.target
#print iris_target
# 此时数据是按不同的类别顺序排列的,将数据随机的分为训练集和测试集
feature_train, feature_test, target_train, target_test = train_test_split(iris_feature, iris_target, test_size=0.33,
                                                                          random_state=56)
# test_size测试数据占比,一般是70%训练,30%测试
# random_state乱序程度

# 模型训练

# 导入决策树,所有参数为默认,还可以引入损失函数(信息熵,基尼指数);
# 树深度;叶上最少样本数量,进行裁剪;节点的分裂策略
dt_model = DecisionTreeClassifier()
# 用决策树训练
dt_model.fit(feature_train, target_train)
# 使用测试数据测试
predict_results = dt_model.predict(feature_test)

# 利用测试数据测试
print predict_results
print target_test

# 以下两种评比测试结果,传入参数有区别
scores = dt_model.score(feature_test, target_test)
print accuracy_score(predict_results, target_test)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值