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)进行缩放。
1.载入糖尿病情数据库diabetes,查看数据。
2.切分数据,组合成DateFrame数据,并输出数据集前几行,观察数据。
3.查看数据集信息,从数据集中抽取训练集和测试集。
4.建立线性回归模型,训练数据,评估模型。
5.考察每个特征值与结果之间的关系,分别以散点图展示。
思考:根据散点图结果对比,哪个特征值与结果之间的相关性最高?
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()