决策树呈圆形树形结构,是一种基本的重返和分类方法。决策树模型的优点在于可读性强劲、分类速度快。下面通过从「译为学馆」运送的两个视频,来非常简单理解下决策树。
最后来空战一波,创建一个非常简单的决策树模型。/01/决策树算法本次主要牵涉到两类决策树,Quinlan系列决策树和CART决策树。前者牵涉到的算法还包括ID3算法、C4.5算法及C5.0算法,后者则是CART算法。
前者一系列算法的步骤总体可以总结为建树和剪树。在建树步骤中,首先自由选择最有说明力度的变量,接着对每个变量自由选择拟合的拆分点展开剪树。剪树,去除决策树中噪音或出现异常数据,在损失一定预测精度的情况下,需要掌控决策树的复杂度,提升其一般化能力。
在剪树步骤中,分成前剪枝和后剪枝。前剪枝用作掌控树根的分解规模,常用方法有掌控决策树仅次于深度、掌控树中父结点和子结点的最多样本量或比例。
后剪枝用作移除没意义的分组,常用方法有计算出来结点中目标变量预测精度或误差、综合考虑到误差与复杂度展开剪树。此外在ID3算法中,用于信息增益挑选出最有说明力度的变量。
其中信息增益为信息熵乘以条件熵获得,增益越大,则变量的影响越大。C4.5算法则是用于信息增益亲率作为变量检验的指标。CART算法可用作分类或数值预测,用于基尼系数(gini)作为自由选择拟合拆分变量的指标。
/02/Python构建惯例,之后用于书中获取的数据。一份汽车债权人贷款数据集。
读取数据,并对数据展开清除处置。importosimportpydotplusimportnumpyasnpimportpandasaspdimportsklearn.treeastreeimportmatplotlib.pyplotaspltfromIPython.displayimportImageimportsklearn.metricsasmetricsfromsklearn.treeimportDecisionTreeClassifierfromsklearn.model_selectionimporttrain_test_split,ParameterGrid,GridSearchCV#避免pandas输入省略号情况pd.set_option('display.max_columns',None)#设置表明宽度为1000,这样就会在IDE中空格了pd.set_option('display.width',1000)#读取数据,skipinitialspace:忽视分隔符后的空白accepts=pd.read_csv('accepts.csv',skipinitialspace=True)#dropna:对缺陷的数据展开移除accepts=accepts.dropna(axis=0,how='any')#因变量,否债权人target=accepts['bad_ind']#自变量data=accepts.ix[:,'bankruptcy_ind':'used_ind']#业务处置,loan_amt:贷款金额,tot_income:月均收益data['lti_temp']=data['loan_amt']/data['tot_income']data['lti_temp']=data['lti_temp'].map(lambdax:10ifx>=10elsex)#移除贷款金额列deldata['loan_amt']#更换曾多次倒闭标识列data['bankruptcy_ind']=data['bankruptcy_ind'].replace({'N':0,'Y':1})接下来用于scikit-learn将数据集区分为训练集和测试集。
本文来源:OD体育-www.bjsanda.net