Seer*Stat乳腺癌数据预测模型-Step2数据可视化分析

Seer*Stat乳腺癌数据经过预处理之后的可视化分析

使用Pycharm工具进行可视化分析

代码如下:

#第一步!导入我们需要的工具
import time

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import metrics
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier


df =pd.read_csv("C:/Users/86152/Desktop/data.csv")
print(df.head(5))
df.info()

df.drop("Pid",axis=1,inplace=True) #去除id,因为id对预测毫无影响。
df.drop("sex",axis=1,inplace=True) #数据库中记录的都为女性数据,所以在分析的时候没有必要显示
print(df.head(5))

lable =list(df.columns)
print(lable)

sns.countplot(x=df['isVital'])
#plt.show()
x: x轴上的条形图,以x标签划分统计个数
y:y轴上的条形图,以y标签划分统计个数
hue:在x或y标签划分的同时,再以hue标签划分统计个数
data:df或array或array列表,用于绘图的数据集,x或y缺失时,data参数为数据集,同时x或y不可缺少,必须要有其中一个
order与 hue_order:分别是对x或y的字段排序,或是对hue的字段排序。排序的方式为列表
orient:强制定向,v:竖直方向;h:水平方向
palette:使用不同的调色板

统计乳腺癌存活的比例图
Seer*Stat乳腺癌数据预测模型-Step2数据可视化分析_第1张图片

通过热力图来查看每个类别之间的相关性,我们一般与是否存活选择相关性绝对值比较大的进行分析,正相关与负相关都是相关性。

corr=df.corr()
plt.figure(figsize=(14,14))
sns.heatmap(corr,cbar=True,square=True,annot=True,xticklabels=lable,yticklabels=lable,fmt='.2f',cmap='coolwarm')
#plt.show()
xticklabels: 如果是True,则绘制dataframe的列名。如果是False,则不绘制列名。如果是列表,则绘制列表中的内容作为xticklabels。 如果是整数n,则绘制列名,但每个n绘制一个label。 默认为True。
yticklabels: 如果是True,则绘制dataframe的行名。如果是False,则不绘制行名。如果是列表,则绘制列表中的内容作为yticklabels。 如果是整数n,则绘制列名,但每个n绘制一个label。 默认为True。默认为True。
center:将数据设置为图例中的均值数据,即图例中心的数据值;通过设置center值,可以调整生成的图像颜色的整体深浅;设置center数据时,如果有数据溢出,则手动设置的vmax、vmin会自动改变
annotate的缩写,annot默认为False,当annot为True时,在heatmap中每个方格写入数据
annot_kws,当annot为True时,可设置各个参数,包括大小,颜色,加粗,斜体字等

Seer*Stat乳腺癌数据预测模型-Step2数据可视化分析_第2张图片
核密度估计图如下所示,其中曲线越清晰表示相关性更高。

#核密度估计图
color_function = {1:"blue",2:"red"}
colors = df["isVital"].map(lambda x: color_function.get(x))
pd.plotting.scatter_matrix(df[lable],c=colors,alpha=0.5,figsize=(15,15))
plt.show()
1。frame,pandas dataframe对象
2。alpha, 图像透明度,一般取(0,1]
3。figsize,以英寸为单位的图像大小,一般以元组 (width, height) 形式设置
4。ax,可选一般为none
5。diagonal,必须且只能在{‘hist’, ‘kde’}中选择1个,’hist’表示直方图(Histogram plot),’kde’表示核密度估计(Kernel Density Estimation);该参数是scatter_matrix函数的关键参数
6。marker。Matplotlib可用的标记类型,如’.’,’,’,’o’等
7。density_kwds。(other plotting keyword arguments,可选),与kde相关的字典参数
8。hist_kwds。与hist相关的字典参数
9。range_padding。(float, 可选),图像在x轴、y轴原点附近的留白(padding),该值越大,留白距离越大,图像远离坐标原点
10。kwds。与scatter_matrix函数本身相关的字典参数
11。c。颜色

Seer*Stat乳腺癌数据预测模型-Step2数据可视化分析_第3张图片

#选择相关性比较高的几个标签,划分训练集与测试集。
pre_lable=['grade','ajcc','cs','rx','Survival.month']
train,test =train_test_split(df,test_size=0.3)
train_x =train[pre_lable]
train_y =train.isVital
test_x =test[pre_lable]
test_y =test.isVital

#随机森林
start_time=time.time()
print(f"模型训练之前的时间是:{time.time()}")
model=RandomForestClassifier(n_estimators=10000)
model.fit(train_x,train_y)
predition=model.predict(test_x)
mse=metrics.accuracy_score(predition,test_y)
end_time=time.time()
print(f"训练结束的时间为:{time.time()}")
print(f'准确率为:{mse},训练的时间为:{end_time-start_time}')

使用随机森林模型进行预测,得到预测准确率为:0.959
在这里插入图片描述

你可能感兴趣的:(信息可视化,python,算法)