步骤
建立模型
class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)
- 参数详解
- 比较重要的参数
- criterion:{‘gini’, ‘entropy’} 基尼系数和信息增益,特征选择要用
- max_depth:整数,预剪枝要用
特征选择
- 选择特征的算法主要有以下三种:
- ID3 (使用信息增益)
- C4.5(使用信息增益率)
- CART(使用gini系数)
- 在模型的
criterion
参数中设定。'gini’是CART, 'entropy’是ID3
预剪枝
- 通过设定max_depth实现。max_depth表示决策树的最大层数。太大容易过拟合,太小容易欠拟合。
预处理
- 主要是看有没有缺失值、异常值;
- 还需要把分类变量转化为数值变量(分类变量不能是字符串)
import pandas as pd
# 数据
path = "../Data/classify.csv"
rawdata = pd.read_csv(path)
X = rawdata.iloc[:,:13]
Y = rawdata.iloc[:,14] # {”A":0,"B":1,"C":2}
Y = pd.Categorical(Y).codes # ABC变成123
训练
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
# 训练集和测试集
x_train, x_test, y_train, y_test = \
train_test_split(X, Y, test_size=0.3)
# 训练
tree = DecisionTreeClassifier(random_state=1