线性回归-最小二乘-diabetes

数据集:https://scikit-learn.org/stable/datasets/

特征:

age 年龄

sex 性别

bmi 体质指数

bp 血压

s1,s2,s3,s4,s4,s6 六种血清的化验数据

标签:

value 一年后疾病进展的量化指标

一、加载库

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib as mpl
import matplotlib.pyplot as plt
# 设置字体为黑体,以支持中文显示。
mpl.rcParams["font.family"] = "SimHei"
# 设置在中文字体时,能够正常的显示负号(-)。
mpl.rcParams["axes.unicode_minus"] = False

二、数据预处理

# 加载数据集
data = pd.read_csv(r"diabetes.csv",header=0)
#data.sample(30)
#data.info()
# 查看是否含有异常值
#data.describe()
# 检查是否包含重复值
#data.duplicated().any()
# 如果有重复值,可以这样去除重复值
# data.drop_duplicates(inplace=True)

三、调用方法

# 将加载的数据集分为特征X与标签y。
X, y = data.iloc[:, :-1], data.iloc[:, -1]
#通过train_test_splil将数据分为训练集、测试集,测试集占0.25的比例
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.25, random_state=0)
#display(len(train_y))
#display(len(test_y))

#实例化线性回归模型
lr=LinearRegression()
#训练模型
lr.fit(train_X,train_y)
#传入测试集进行测试
result=lr.predict(test_X)
#对模型进行评估

display(result)
display(test_y.values)
# 均方误差
print("Mean squared error: %.2f" % mean_squared_error(test_y, result))
# 方差分数: 1代表完美预测
print('Variance score: %.2f' % r2_score(test_y, result))

四、结果可视化

plt.figure(figsize=(15, 10))
# 绘制预测值
plt.plot(result, "ro-", label="预测值")
# 绘制真实值
plt.plot(test_y.values, "go--", label="真实值")
plt.title("线性回归预测-最小二乘")
plt.xlabel("样本序号")
plt.ylabel("一年后疾病值")
plt.legend(loc="best")
plt.show()

猜你喜欢

转载自blog.csdn.net/weixin_42295205/article/details/91618650