肿瘤预测与分析(神经网络)---Python机器学习

实验内容

基于威斯康星乳腺癌数据集,搭建BP神经网络,实现肿瘤预测与分析。

实验要求

1.加载sklearn自带的数据集,探索数据。
2.划分训练集与测试集。
3.建立BP模型(评估后可进行调参,从而选择最优参数)。
4.进行模型训练。
5.进行模型预测,对真实数据和预测数据进行可视化(用Axes3D绘制3d散点图)。
6.进行模型评估,并进行预测结果指标统计(统计每一类别的预测准确率、召回率、F1分数)。
7.计算混淆矩阵,并用热力图显示。
注:混淆矩阵(confusion matrix)衡量的是一个分类器分类的准确程度。
混淆矩阵的每一列代表了预测类别 ,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别 ,每一行的数据总数表示该类别的数据实例的数目。

实验代码

#导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns#导入绘图包
from mpl_toolkits.mplot3d import Axes3D#导入三维显示工具
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier#导入BP模型
#导入预测指标计算函数和混淆矩阵计算函数
from sklearn.metrics import classification_report,confusion_matrix



#1.加载sklearn自带的数据集,探索数据。
breast=load_breast_cancer()
data=breast['data']
target=breast['target']
feature_names=breast['feature_names']
df=pd.DataFrame(data,columns=feature_names)
df.info()
print(df.head())
#data=np.array(data)
#target=np.array(target)

#2.划分训练集与测试集。
train_X,test_X,train_y,test_y=train_test_split(data,target,test_size=0.2,random_state=42)

#3.建立BP模型(评估后可进行调参,从而选择最优参数)。
#采用Adam优化器,relu非线性映射函数
mlp_hw=MLPClassifier(solver='adam',hidden_layer_sizes=(64,32,32),
                     activation='relu',max_iter=1000,alpha=1e-3,random_state=1)


#4.进行模型训练。
mlp_hw.fit(train_X,train_y)

#5.进行模型预测,对真实数据和预测数据进行可视化(用Axes3D绘制3d散点图)。
pre_x=mlp_hw.predict(train_X)
#可视化真实数据
fig=plt.figure()
ax=Axes3D(fig,rect=[0,0,1,1],elev=20,azim=20)
ax.scatter(train_X[:,0],train_X[:,1],train_X[:,2],marker='o',c=train_y)
plt.title("True Label Map")
plt.show()
#可视化预测
fig=plt.figure()
ax=Axes3D(fig,rect=[0,0,1,1],elev=20,azim=20)
ax.scatter(train_X[:,0],train_X[:,1],train_X[:,2],marker='o',c=pre_x)
plt.title('Cancer with BP Model')
plt.show()

#显示预测分数
print("预测准确率:{:.4f}".format(mlp_hw.score(test_X,test_y)))
#进行测试集数据的类别预测
pre_y=mlp_hw.predict(test_X)
print("测试集的真实标签:\n",test_y)
print("测试集的预测标签:\n",pre_y)

#6.进行模型评估,并进行预测结果指标统计(统计每一类别的预测准确率、召回率、F1分数)。
print(classification_report(test_y,pre_y))


#7.计算混淆矩阵,并用热力图显示。
confusion_mat=confusion_matrix(test_y,pre_y)
print(confusion_mat)
#热力图显示
sns.set()
figure,ax=plt.subplots()
sns.heatmap(confusion_mat,cmap="YlGnBu_r",annot=True,ax=ax)#画热力图
ax.set_title(u'confusion matrix')#标题
ax.set_xlabel(u'predict')#x轴标签
ax.set_ylabel(u'true')#y轴标签
plt.show()

效果图展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48434899/article/details/124147051
今日推荐