机器学习算法-决策树模型及小案例
一、决策树算法原理
1、定义
决策树算法定义:决策树算法是一种非参数的决策算法,它根据数据的不同特征进行多层次的分类和判断,最终决策出所需要预测的结果。它既可以解决分类算法,也可以解决回归问题,具有很好的解释能力。
2、原理
(1)决策树原理图
(2)对于决策树的构建方法具有多种出发点,它具有多种构建方式,如何构建决策树的出发点主要在于决策树每一个决策点上需要在哪些维度上进行划分以及在这些维度的哪些阈值节点做划分等细节问题。
(3)信息熵entropy是决策树构建过程中最为常见的一种构建方式,熵在信息论中的含义是随机变量的不确定度,熵越大,不确定性越大,越不确定,熵越小,表示不确定度越小,越确定。
熵在信息论中代表随机变量不确定性的度量。熵越大,代表数据的不确定性越高;反之,熵越小,代表数据的不确定性越低。
信息熵的划分方式总体原则是不断地使得整体的决策系统的熵值越来越小,使得系统越来越确定的方向发展。
(4)基尼系数gini是决策树划分的另外一种方式,它和信息熵的原理是类似的,随着基尼系数的增大,整体的随机性在不断地增大。
(5)对于基尼系数和信息熵的决策树划分方式,其效果一般情况下都是大致相同的,只是信息熵的计算方式比起基尼系数要慢一些,sklearn中默认选用的是基尼系数。因此,对于决策树的决策方式信息熵和基尼系数这个超参数对于模型的好坏并没有太大的影响。 一般情况下,entropy是欠拟合的情况下才使用。
二、决策树算法小案例
1、数据挖掘流程
数据挖掘流程:数据读取-探索性数据分析-info-数据清洗-特征筛选-数据预处理-模型构建-模型评估-模型部署(生成环境)
2、根据流程实现决策树算法
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier # 分类决策树
from sklearn.model_selection import train_test_split # 训练集和测试集的划分
from sklearn.model_selection import GridSearchCV # 网格搜索
from sklearn.model_selection import cross_val_score # 交叉验证模块
import matplotlib.pyplot as plt
(1)读取数据
data=pd.read_csv("train.csv")
data.head() #Survived属性表示的是最终标签,相当于输出的y
Embarked只存在三个值
(2)探索性数据分析
data.info()
(3)数据清洗
通过查看data数据,发现age和Cabin存在缺失值,其中age用均值来填充,cabin因缺失较多,可直接删除。通过观测判断来说和预测的y没有关系的列(Name,Ticket)也删除。
data.drop("cab