决策树实践

决策树有一个好处是可以画模型的二叉树,看到使用的特征,以及特征划分的临界点。

一、训练数据准备

1、数据本身不需要太多处理,异常值也不用管,因为决策树是二叉树,异常值的影响不大

2、把训练数据随机划分成train、test

X_train, X_test, y_train, y_test = train_test_split(feture_data, df['label'], test_size=0.2, random_state=42)

二、模型训练

1、参数选择

主要是设置数的深度max_depth、最小叶子节点用户数:min_samples_leaf,最小叶子划分用户数:min_samples_split 等

#参数调优
import matplotlib.pyplot as plt
test=[]
print('开始',time.strftime('%Y-%m-%d %H:%M:%S'))
for i in range(5,15):
  clf=tree.DecisionTreeClassifier(max_depth=i)
  clf=clf.fit(X_train,y_train)
  score=clf.score(X_test,y_test)
  test.append(score)
plt.plot(test,color='red',label='max_depth')
plt.legend()
plt.show()
print('完成',time.strftime('%Y-%m-%d %H:%M:%S'))

选择score最高的点作为树的深度,然后再依次选择叶子节点最小用户数等参数

2、模型训练

三、决策树画图

#画决策树的图
from sklearn import tree
import graphviz
import pydotplus  
dot_data = tree.export_graphviz(clf, out_file=None, 
                         feature_names=df_index['name'],  
                         class_names=['0','1'],  
                         filled=True, rounded=True,  
                         special_characters=True)  
graph = pydotplus.graph_from_dot_data(dot_data)  
graph.write_pdf("DTtree.pdf")

你可能感兴趣的:(业务随记,大数据)