糖尿病病情预测_线性回归_最小平方回归

 

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
#diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况。
# 数据集中的特征值总共10项, 如下:  
    # 年龄  
    # 性别  
    #体质指数  
    #血压  
    #s1,s2,s3,s4,s4,s6  (六种血清的化验数据) 
# 加载sklearn自带数据
diabetes = datasets.load_diabetes()


# 取第三列数据
diabetes_X = diabetes.data[:, np.newaxis, 2]

# 最后20条数据作为测试数据的x值,其他的作为训练数据的x值
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# 最后20条数据作为测试数据的y值,其他的作为训练数据的y值
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

# 创建线性模型
regr = linear_model.LinearRegression()

# 把(x,y)放入模型中训练
regr.fit(diabetes_X_train, diabetes_y_train)

# 用模型测试数据
diabetes_y_pred = regr.predict(diabetes_X_test)

# 得到系数
print('Coefficients: \n', regr.coef_)
# X是真实数据 Y是预测数据 共有N个。那么均方误差MSE = sum((X-Y).^2)/N
# mean_squared_error:均方差(Mean squared error,MSE),该指标计算的是拟合数据和原始数据对应样本点的误差的
    平方和的均值,其值越小说明拟合效果越好
# 得到均方误差
print("Mean squared error: %.2f"
      % mean_squared_error(diabetes_y_test, diabetes_y_pred))
#r2_score:判定系数,其含义是也是解释回归模型的方差得分,其值取值范围是[0,1],越接近于1说明自变量越能解释因
    变量的方差变化,值越小则说明效果越差
# 得到方差
print('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))

# 输出图像
plt.scatter(diabetes_X_test, diabetes_y_test,  color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

糖尿病病情预测_线性回归_最小平方回归_第1张图片

参考自:https://www.cnblogs.com/yhl-yh/p/6714950.html

https://sklearn.apachecn.org/docs/0.21.3/2.html

你可能感兴趣的:(机器学习)