您的位置:首页 > 其它

[DL]机器学习算法之之线性回归(Linear Regression)

2017-10-19 07:53 197 查看
线性模型的一般表达式为:

模型参数的求解即是使用最小二乘法求的最小值。

如果将线性模型用图像表示出来为:



附上代码(模型的实现步骤写在代码中):

import matplotlib.pyplot as plt
import numpy as npfrom sklearn
import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
#线性模型一般形式:
#y=w_1*x_1+w_2*x_2+w_3*x_3+...
#loss=min||w*x-y||^2

lr = linear_model.LinearRegression()
boston = datasets.load_boston()
y = boston.target

diabetes=datasets.load_diabetes()
# Bunch(data=data, target=target, DESCR=fdescr,
#feature_names=['age', 'sex', 'bmi', 'bp',
#'s1', 's2', 's3', 's4', 's5', 's6'])

print(diabetes.feature_names)#特征10维
print(diabetes.data.shape)#442个数据
print(diabetes.target.shape)#442
#print(diabetes.DESCR)#描述
#为了方便画图,这里只使用一个特征
diabetes_X = diabetes.data[:,np.newaxis,2]
#划分测试集和训练集
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

#创建线性模型
regr = linear_model.LinearRegression()
# 训练
regr.fit(diabetes_X_train, diabetes_y_train)
# 进行预测
diabetes_y_pred = regr.predict(diabetes_X_test)
# 参数w
print('w: \n', regr.coef_)
# 均方误差
print("均方误差: %.2f"% mean_squared_error(diabetes_y_test,
diabetes_y_pred))
# 模型好坏评分

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()


最后输出为:

w: [ 938.23786125]

均方误差: 2548.07

得分: 0.47
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: