I 决策树定义(Decision Tree)
应用:可以解决多分类问题~
举一个栗子🌰,阔以直观感受一下什么是决策树
组成:根节点(x属性变量)、内部根节点(x属性变量)、叶子节点(y分类变量)
实质:一系列if-then规则组成
II 决策树算法
选择结点划分的常用方法:min(Entropy)
ID3(Quinlan, 1986)、C4.5、CART(Breiman, 1984)
说明:ID3算法基于信息增益划分节点,C4.5算法基于信息增益率划分节点,CART算法基于基尼系数来划分节点。
本文主要讲解C4.5算法
C4.5主要是在ID3的基础上改进,ID3选择(属性)树节点是选择信息增益值最大的属性作为节点。而C4.5引入了新概念“信息增益率” (information gain ratio) ,C4.5是选择信息增益率最大的属性作为树节点。
III 剪枝
剪枝的处理是解决决策树模型过拟合的主要手段,通过限制层数来防止过拟合的发生。
预剪枝:是指在决策树生成的过程中,对每个节点在划分前先进行估计
后剪枝:是指在决策树生成之后,在进行剪枝的处理
特征选择
标准:熵增益率
IV CART算法
注:sklearn这个包中DecisionTreeClassifier功能,只能依靠信息增益和基尼系数来分类(i.e. 分类时只有这两个可选参数),因此也就决定了利用这个package只能实现CART算法和ID3算法,而C4.5算法还是只有靠自己老实写。
import pandas as pd
import copy
import numpy as np
from WindPy import w
from datetime import *
from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
w.start()
## STEP1: 函数getAsharePanels(),获取A股历史面板数据
def getAsharePanels(stockcodes,start_date,end_date):
## 参数
stockcodes=['000001.SZ'] #测试所用的三只股票代码
start_date='20080101' #样本数据起始日期
end_date='20171231' #样本数据结束日期
append_data=pd.DataFrame(columns=['trade_date','stock_code','open','high','low','close','volume']) #产生一个辅助数据集,帮助后面循环时汇总
individual