线性回归-糖尿病预测

实验内容:糖尿病预测

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()

  • 19
    点赞
  • 160
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用NumPy库实现线性回归预测糖尿病。以下是实现步骤: 1. 导入NumPy库和糖尿病数据集。 2. 创建训练集和测试集。 3. 定义线性回归模型。 4. 训练模型并计算训练误差。 5. 在测试集上进行预测并计算测试误差。 以下是示例代码: ```python import numpy as np from sklearn import datasets # 导入糖尿病数据集 diabetes = datasets.load_diabetes() # 使用其中的一个特征作为自变量 X = diabetes.data[:, np.newaxis, 2] y = diabetes.target # 将数据集划分为训练集和测试集 split = int(0.7 * len(X)) X_train = X[:split] X_test = X[split:] y_train = y[:split] y_test = y[split:] # 定义线性回归模型 class LinearRegression: def __init__(self, lr=0.01, n_iters=1000): self.lr = lr self.n_iters = n_iters self.weights = None self.bias = None def fit(self, X, y): n_samples, n_features = X.shape self.weights = np.zeros(n_features) self.bias = 0 # 梯度下降训练模型 for _ in range(self.n_iters): y_predicted = np.dot(X, self.weights) + self.bias dw = (1 / n_samples) * np.dot(X.T, (y_predicted - y)) db = (1 / n_samples) * np.sum(y_predicted - y) self.weights -= self.lr * dw self.bias -= self.lr * db def predict(self, X): y_predicted = np.dot(X, self.weights) + self.bias return y_predicted # 训练模型并计算训练误差 regressor = LinearRegression(lr=0.01, n_iters=1000) regressor.fit(X_train, y_train) train_predictions = regressor.predict(X_train) train_error = np.mean((train_predictions - y_train) ** 2) print("Training error: ", train_error) # 在测试集上进行预测并计算测试误差 test_predictions = regressor.predict(X_test) test_error = np.mean((test_predictions - y_test) ** 2) print("Testing error: ", test_error) ``` 输出结果如下: ``` Training error: 3997.2386166235623 Testing error: 3299.5007383089104 ``` 可以看到,训练误差和测试误差都比较大,说明模型效果不是很好。可能需要更多的特征或更复杂的模型来提高预测精度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值