'''
决策树之分类决策树
'''
import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_breast_cancer
from matplotlib import pyplot as plt
# 设置中文字体和负号显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
data = load_breast_cancer()
X = data['data']
# X = np.c_[X]
y = data['target']
# y = np.c_[y]
# 创建模型
model = DecisionTreeClassifier(max_depth=5)
# 跑模型
model.fit(X,y)
# 获得预测数据
y_h = model.predict(X)
# y_h = np.c_[y_h]
# print(y_h)
# 输出准确率
ss = model.score(X,y)
print('准确率是:',ss)
# 画图部分
plt.title('分布图')
# 画训练集
plt.scatter(X[y==0,0],X[y==0,1],c='r',s=150)
plt.scatter(X[y==1,0],X[y==1,1],c='g',s=150)
# 画测试集
plt.scatter(X[y_h==0,0],X[y_h==0,1],c='b')
plt.scatter(X[y_h==1,0],X[y_h==1,1],c='pink')
plt.show()
决策树算法既可以用于回归预测问题,也可以用于分类预测问题。
可以处理多维度输出的分类问题。
相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的解释
可以交叉验证的剪枝来选择模型,从而提高泛化能力。
对于异常点的容错能力好,健壮性高。