广义线性模型是线性模型的扩展,它通过联结函数建立响应变量的数学期望值与线性组合的预测变量之间的关系,其特点是不强行改变数据的自然度量,数据可以具有非线性和非恒定方差结构。下列是一组用于回归的方法,其中y是x的线性组合。
普通最小二乘法
以下代码是使用第三方糖尿病数据集diabetes中的第一个特征说明图中的特点。
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_X,diabetes_y=datasets.load_diabetes(return_X_y=True)
#只使用一个功能
diabetes_X=diabetes_X[:,np.newaxis,2]
#将数据拆分为训练/测试集
diabetes_X_train=diabetes_X[:-20]
diabetes_X_test=diabetes_X[-20:]
#将目标划分为“训练/测试"类
diabetes_y_train=diabetes_y[:-20]
diabetes_y_test=diabetes_y[-20:]
#创建线性回归对象
regr=linear_model.LinearRegression()
#使用训练集训练模型
regr.fit(diabetes_y_train,diabetes_y_train)
#使用测试集进行预测
diabetes_y_pred=regr.predict(diabetes_X_test)
#系数
print('系数:\n',regr.coef_)
#均方误差
print('均方误差:%.2f'
% mean_squared_error(diabetes_y_test,diabetes_y_pred))
#确定系数:如果是1则为完美预测
print('确定系数:%.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()
执行后