# 模型用途:既可以分类,也能解决回归问题
###主要还是应用分类决策树:本质是从训练数据集中归纳出一组分类规则,称为树归纳。对于给定的训练集,存在许多对他无错编码的树。为了简单起见,我们选出最小的树。
简单来说是决策树学习是由训练数据集估计条件概率模型。基于特征空间划分的类的条件概率模型由很多,训练模型既要对训练数据由很好的拟合,也要对未知数据有很好的预测。
###决策树学习算法包含特征选择、决策树的生成、决策树剪枝。决策树生成只考虑局部最优,剪枝考虑的是全局最优。
###特征选择依据:香农熵和信息增益.
决策树需要选择最优划分属性,节点的纯度越高越好。在分类树里面,划分的优劣用不纯度度量。不纯度越低,类分布就越倾斜。
度量不纯性的函数是包括熵函数、基尼系数、分类误差。通常情况2分类较多,也可以推广到大于2的分类。熵越高,信息不纯度越高,则混合的数据越多。信息熵是对整个数据集来讲的,计算的是分类的信息熵
信息增益:决策树最终的优化目标使得叶节点的总不纯度最低,即对应衡量不纯度的指标最低。要求父节点的信息熵和子节点的信息熵差要最大。
#用sklearn生成决策树
###参数criterion:决定不纯度的计算方法。
# 输入entropy,使用信息熵(enteropy)
#输入gini,使用基尼系数(jini):适用于数据维度大,噪音很大时。
#一般2个都试一下,哪个好用哪个。通常信息熵多一点。
#初步建模
##导入需要的算法库和模块。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
plt.rcParams['font.sans-serif'] = ['Simhei']
plt.rcParams['axes.unicode_minus']= False
#探索数据
wine =load_wine()
#wine
#wine.data.shape