实验内容:糖尿病预测

diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况。

该数据集共442条信息,特征值总共10项, 如下:
age:年龄
sex:性别 bmi(body mass index):身体质量指数,是衡量是否肥胖和标准体重的重要指标,理想BMI(18.5~23.9) = 体重(单位Kg) ÷ 身高的平方
(单位m) bp(blood pressure):血压(平均血压)
s1,s2,s3,s4,s4,s6:六种血清的化验数据,是血液中各种疾病级数指针的6的属性值。 s1——tc,T细胞(一种白细胞)

s2——ldl,低密度脂蛋白

s3——hdl,高密度脂蛋白

s4——tch,促甲状腺激素

s5——ltg,拉莫三嗪

s6——glu,血糖水平

【注意】:以上的数据是经过特殊处理, 10个数据中的每个都做了均值中心化处理,然后又用标准差乘以个体数量调整了数值范围。验证就会发现任何一列的所有数值平方和为1。

这10个特征变量中的每一个都以平均值为中心,并按标准差乘以“n_samples”(即每列的平方和总计为1)进行缩放。

实验要求

一、加载糖尿病数据集diabetes,观察数据

1.载入糖尿病情数据库diabetes,查看数据。

2.切分数据,组合成DateFrame数据,并输出数据集前几行,观察数据。

二、基于线性回归对数据集进行分析

3.查看数据集信息,从数据集中抽取训练集和测试集。

4.建立线性回归模型,训练数据,评估模型。

三、考察每个特征值与结果之间的关联性,观察得出最相关的特征

5.考察每个特征值与结果之间的关系,分别以散点图展示。

思考:根据散点图结果对比,哪个特征值与结果之间的相关性最高?

四、使用回归分析找出XX特征值与糖尿病的关联性,并预测出相关结果

6.把5中相关性最高的特征值提取,然后进行数据切分。

8.创建线性回归模型,进行线性回归模型训练。

9.对测试集进行预测,求出权重系数。

10.对预测结果进行评价,结果可视化。

实验代码

#导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression

#1.加载糖尿病数据,观察数据
data_diabetes=load_diabetes()
#print(data_diabetes)
data=data_diabetes['data']
target=data_diabetes['target']
feature_names=data_diabetes['feature_names']
#一维数据形式,将她们组合成dataframe,可以更直观地观察数据
df = pd.DataFrame(data, columns=feature_names)
print("查看前几行数据\n",df.head())  # 查看前几行数据
# 查看数据集的基本信息
print("以上是查看的数据集基本信息\n",df.info())

temp_X=data[:, np.newaxis, 2]#获取一个特征
train_X=temp_X[:221]#训练样本
test_X=temp_X[221:]#测试样本
train_y=target[:221]#训练标记
test_y=target[221:]#测试标记

model=LinearRegression()
model.fit(train_X,train_y)

print("Coefficient(系数):%.2f" %model.coef_)
print("Residual sum of square(残差平方和):%.2f" %np.mean((model.predict(test_X) - test_y) ** 2))
print("variance score(方差得分): %.2f" %model.score(test_X, test_y))


'''
5.考察每个特征值与结果之间的关系,分别以散点图展示。

思考:根据散点图结果对比,哪个特征值与结果之间的相关性最高?
'''
#绘图
plt.title('LinearRegression Diabetes')   #标题(糖尿病回归模型)
plt.xlabel(u'Attributes')                 #x轴坐标(属性)
plt.ylabel(u'Measure of disease')         #y轴坐标(疾病测量)
#点的准确位置
plt.scatter(test_X,test_y, color = 'red')
#预测结果 直线表示
plt.plot(test_X, model.predict(test_X), color='blue', linewidth = 3)
plt.show()

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐