[scikit-learn] 糖尿病严重程度预测模型 —— 多元线性回归

简介

scikit-learn(简称sklearn)是一个广泛使用的Python库,它提供了许多机器学习、数据挖掘和数据分析的工具。

LinearRegression模型是sklearn中实现线性回归算法的一个具体类,为线性回归模型训练及预测提供了便捷的API。

作为模型训练入门案例,本项目选用sklearn库自带的糖尿病严重程度数据集为源数据,使用LinearRegression模型进行拟合,并对模型进行评估。

简单线性回归

简单线性回归(Simple Linear Regression) 是统计学中最基础的预测模型之一,用于分析一个自变量(X)和一个因变量(Y)之间的线性关系。一般具有以下关键特点:

  1. 线性关系:简单线性回归假设两个变量之间存在线性关系,即它们可以被一条直线很好地拟合。

  2. 模型表达式:
    简单线性回归模型通常表示为:\(Y = \beta_0 + \beta_1X + \epsilon\)

  • ( Y ):因变量(Dependent Variable),我们想要预测或解释的变量。
  • ( X ):自变量(Independent Variable),用来预测因变量的变量。
  • ( \(\beta_0\) ):截距项(Intercept),当 ( X = 0 ) 时,( Y ) 的期望值。
  • ( \(\beta_1\) ):斜率(Slope),表示 ( X ) 每变化一个单位,( Y ) 预期将如何变化。
  • ( \(\epsilon\) ):误差项(Error Term),表示模型无法解释的随机变异。
  1. 参数估计:通过最小化误差项 ( \(\epsilon\) ) 的平方和(即最小二乘法),可以估计出截距 ( \(\beta_0\) ) 和斜率 ( \(\beta_1\) )。

  2. 模型拟合优度:通常使用 R²(决定系数)来衡量模型的拟合优度,R² 的值介于 0 到 1 之间,值越接近 1 表示模型的解释能力越强。

运行结果

image

Full Code

import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression

diabetes = datasets.load_diabetes()

'''
age: 年龄(以年为单位)
sex: 性别
bmi: 体重指数(Body Mass Index)
bp: 平均血压(Blood Pressure)
s1: 总血清胆固醇(Total Serum Cholesterol,tc)
s2: 低密度脂蛋白(Low-Density Lipoproteins,ldl)
s3: 高密度脂蛋白(High-Density Lipoproteins,hdl)
s4: 总胆固醇与高密度脂蛋白的比值(Total Cholesterol / HDL,tch)
s5: 血清甘油三酯水平的可能对数值(Log of Serum Triglycerides Level,ltg)
s6: 血糖水平(Blood Sugar Level,glu)
'''

column_names = ['age', 'sex', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']

X = diabetes.data    # data
y = diabetes.target  # target

# 行列数
n, m = X.shape

# 打乱数据,筛选80%作为训练数据
indexes = np.arange(n)
np.random.shuffle(indexes)

train_cnt = int(0.8 * n)
X_train, y_train = X[indexes[:train_cnt]], y[indexes[:train_cnt]]
X_test, y_test = X[indexes[train_cnt:]], y[indexes[train_cnt:]]

# 建模
model = LinearRegression(fit_intercept=True)
model.fit(X_train, y_train)
print("W (斜率):", model.coef_)
print("b (截距):", model.intercept_)
print("模型得分 (越接近1,拟合度越高) :", model.score(X_test, y_test))

posted @ 2024-08-04 18:29  AnUpdatingHam  阅读(36)  评论(0编辑  收藏  举报