Sklearn初识决策树,以泰坦尼克号相关数据为例.

  • 决策树,目前在我的认知里就是以一个树形结构来对一类数据进行分类,一个分类模型.我也看到了Sklearn里面提供了决策树回归的api,暂时还没有了解,主要理解为用于分类.
  • 决策树的相关原理为利用数据里的信息熵,信息含量比较多的就用于前面那决策,能够快速分类,而且可以将决策树可视化.比较清晰看出决策过程.
  • 再具体点的原理…我就不是特别了解(跳过了),信息增益,基尼增益…暂时先会当个调参侠…

仍然是sklearn.数据集在这

http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

需要导入的包

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier,export_graphviz

首先使用pandas包读取数据
查看数据,选择决策相关的特征,pclass,age,sex可能会与最终生存有较大关系,所以选择这三个.当然船的相关位置也会有影响,也可以添加.

data = pd.read_csv('./泰坦尼克号.txt')
x=data[['pclass','age','sex']]
y=data[['survived']]

在这里插入图片描述

然后,对数据进行一定处理,大部分的数据没有问题,但是年龄的话三等舱的乘客大部分是没有统计,NaN,要对这些数据进行处理.处理方法是用平均年龄代替.如果数据量较少可以直接删除缺省数据,但是这个数据里面缺省的数据还是比较多的.

x['age'].fillna(value = data['age'].mean(),inplace=True)

再划分训练集和测试集

x_train,x_test,y_train,y_test = 
		train_test_split(x,y,random_state=9,test_size = 0.2)

由于数据还是文本数据,不便于处理,所以需要进行特征处理,这里使用的是字典特征处理,先将数据转化成[字典]的形式,再调用api进行提取.可以使用transfer.get_feature_names()来查看获取了哪些特征

x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)

在这里插入图片描述

print(transfer.get_feature_names())

在这里插入图片描述

然后调用决策树api进行模型训练,如果不限制最大深度为5,容易导致模型过拟合,所以需要剪枝,后面会放两种的对比图.

estimitor = DecisionTreeClassifier()
# estimitor = DecisionTreeClassifier(max_depth=5)
estimitor.fit(x_train,y_train)

然后就可以使用模型进行预测,或者查看模型正确率

y_pre = estimitor.predict(x_train)
print(estimitor.score(x_test,y_test))

最后还可以将模型可视化,这里调用export_graphviz将决策树文件输出倒tree.dot文件里面,然后再找一个决策树可视化的网站将决策树可视化了就好.
这里提供一个比较好用的.

github graphviz online

dot_data = export_graphviz(estimitor,out_file='tree.dot',
feature_names=transfer.get_feature_names())

在这里插入图片描述
在这里插入图片描述
整个学习是在这个视频中学习的,很好的视频,也安利给大家

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rglkt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值