数据集描述
根据美国疾病控制预防中心的数据,现在美国1/7的成年人患有糖尿病。但是到2050年,这个比例将会快速增长至高达1/3。在UCL机器学习数据库里一个糖尿病数据集,通过这一数据集,学习如何利用线性回归分析来预测糖尿病:
数据地址:
https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/diabetes.csv
数据特征属性:
index([‘Pregnancies’, ‘Glucose’, ‘BloodPressure’, ‘SkinThickness’, ‘Insulin’,‘BMI’, ‘DiabetesPedigreeFunction’, ‘Age’, ‘Outcome’], dtype=‘object’)
特征(怀孕次数,血糖,血压,皮脂厚度,胰岛素,BMI身体质量指数,糖尿病遗传函数,年龄,结果)
“结果”是要预测的特征,0意味着未患糖尿病,1意味着患有糖尿病。在768个数据点中,500个被标记为0,268个标记为1。
多元线性回归简介
实验模型为线性回归模型,使用最小二乘法来计算回归系数,构建出相应的多元线性回归模型,并利用线性回归模型来进行糖尿病相关性预测,最后使用MSE,r^2 和校正r^2来评价模型的好坏。
相关数学推导如下图所示:
纯手打代码实现
import pandas as pd
import numpy as np
from numpy.linalg import inv#矩阵求逆
from numpy import dot #矩阵点乘
#矩阵转置.T
data=pd.read_csv("线性回归分析数据.csv")
x_train=np.array(data.iloc[0:616,0:8])
y_train=np.array(data.ix[0:615,['Outcome']])
x_test=np.array(data.iloc[