本项目是对美国威斯康星州的乳腺癌诊断数据集进行分类,该数据集包括569个病例的数据样本,每个样本具有30个特征值,而样本共分为两类:分别是恶性和良性,我们要利用决策树算法创建模型,训练模型,并对该模型进行评估和预测,最后再进行参数调优,根据评估的结果调整参数使结果更准确。
(1)导入包。
代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import tree#导入决策树
from sklearn import metrics
from sklearn.datasets import load_breast_cancer# 导入威斯康星乳腺癌数据集
from sklearn.model_selection import train_test_split
(2)加载威斯康辛乳腺癌数据集,探索数据并对数据进行分割。
代码如下:
breast=load_breast_cancer()
data=pd.DataFrame(breast.data)
print(data.head())#输出前五行的data
target=pd.DataFrame(breast.target)
print(target.head())
data=breast['data']
target=breast['target']
feature_names=breast['feature_names']
df=pd.DataFrame(data,columns=(feature_names))
print("查看数据集的基本信息:",df.info())
train_X,test_X,train_y,test_y=train_test_split(data,target,test_size=0.2)
print(train_X.shape,train_y.shape)
(3)配置决策树模型并且训练该模型。
代码如下:
model=tree.DecisionTreeClassifier()#加载决策树模型
model.fit(train_X,train_y)#训练模型
(4)对模型进行预测评估。
代码如下:
pre_y=model.predict(test_X)#预测
print("准确率:",metrics.accuracy_score(test_y,pre_y))#模型评估。
(5)参数调优,根据评估结果,对模型设置或调整为更优的参数,使评估结果更准确。
代码如下:
#criterion参数的调整,默认为gini指数
#该参数对应的三个函数对应信息增益,增益率和基尼系数,每个函数对应的评价指标有所不同,有各自的特点。
#将该参数进行更换为信息增益--entropy。
model2=tree.DecisionTreeClassifier(criterion = 'entropy')
model2.fit(train_X,train_y)
pre_y=model2.predict(test_X)
print("criterion参数改为信息增益(entropy)的准确率:",metrics.accuracy_score(test_y,pre_y))
#max_depth最大深度的调整,默认为不限制最大深度
#该参数为树的最大深度,当样本中的特征较多时,设置适当的最大深度可以防止模型过拟合。
#尝试调整max_depth这个参数以达到模型更好的效果。
model3=tree.DecisionTreeClassifier(max_depth=2)
model3.fit(train_X,train_y)
pre_y=model3.predict(test_X)
print("max_depth深度参数改为2的准确率:",metrics.accuracy_score(test_y,pre_y))
(1)问题:如何根据评估结果对模型设置或调整为更优的参数?
有两种参数的调整,一种是criterion参数,该参数对应三种,分别是:信息增益,增益率和基尼系数,将参数进行更换选择最优的。还有一种是max_depth最大深度的调整,通过调整最大深度找到最优的解。
1.加载威斯康辛乳腺癌数据集,探索数据并对数据进行分割
2.配置决策树模型并且训练该模型
3.对模型进行预测评估
4.参数调优,根据评估结果,对模型设置或调整为更优的参数,使评估结果更准确
1.通过此实验了解了一种应用广泛的机器学习方法——决策树,了解了决策树算法的目标是根据由特征和标签组成的训练数据,自动生成一棵能对未见数据进行分类的决策树。
2.通过此实验,我了解了计算样本纯度的三个方法:信息增益、增益率、基尼指数。
3.了解了可以调整决策树的参数使结果更准确,学习了sklearn中的决策树包括的若干个参数,尤其学习了通过criterion和max_depth参数的调整来使得评估的结果更准确 。