机器学习笔记(三):决策树
程序员文章站
2022-03-30 16:35:53
...
决策树
决策树(DT)是一种用于分类和回归的非参数监督学习方法。目的是创建一个模型,通过学习从数据特征推断出的简单决策规则来预测目标变量的值。
1、常用的决策树算法见下表:
2、分类——实现类是DecisionTreeClassifier,能够执行数据集的多类分类
输入参数为两个数组X[n_samples,n_features]和 y[n_samples],X 为训练数据,y 为训练数据的标记数据
DecisionTreeClassifier 构造方法为:
sklearn.tree.DecisionTreeClassifier(
criterion='gini' , splitter='best' , max_depth=None
, min_samples_split=2
, min_samples_leaf=1
, max_features=None
, random_state=None
, min_density=None
, compute_importances=None
, max_leaf_nodes=None
)
3、回归——实现类是DecisionTreeRegressor,输入为X,y 同上,y 为浮点数
DecisionTreeRegressor 构造方法为:
sklearn.tree.DecisionTreeRegressor(
criterion='mse' , splitter='best' , max_depth=None
, min_samples_split=2
, min_samples_leaf=1
, max_features=None
, random_state=None
, min_density=None
, compute_importances=None
, max_leaf_nodes=None
)
4、例子:采用决策树算法构造一个泰坦尼克乘客生还预测模型,并对生成的决策树可视化呈现。
import pandas as pd
import graphviz
from sklearn.tree import DecisionTreeClassifier,export_graphviz #输出的函数
from sklearn.metrics import classification_report
data = pd.read_csv("titanic_data.csv")
data.drop('PassengerId',axis=1,inplace=True ) #删除索引列
data.loc[data['Sex'] =='male','Sex'] =1 #把男性male改成1
data.loc[data['Sex'] =='female','Sex'] =0 #把女性female改成0
data.fillna(data['Age'].mean(),inplace=True) #用均值填充2缺失值
Dtc = DecisionTreeClassifier(max_depth=5,random_state =8) #构建决策树模型
Dtc.fit(data.iloc[:,1:],data['Survived']) #模型训练
pre = Dtc.predict(data.iloc[:,1:]) #模型预测
pre==data['Survived'] #比较模型预测值与样本实际值是否一样
res = classification_report(data['Survived'],pre) #模型分类报告
dot_data = export_graphviz(Dtc,feature_names = ['Pclass','Sex','Age'],class_names='Survived')
graph=graphviz.Source(dot_data)
graph
安装graphviz:https://blog.csdn.net/HNUCSEE_LJK/article/details/86772806
记得安装配置好环境,cmd要重新打开才查看dot -version,Jupyter Noteboot也要重新打开
笔记来源:泰迪云课堂的python机器学习实战