标题
本模型取自gitchat 中李烨老师的课程,
本模型要解决的问题
如下图,左侧是工作年龄,右侧是薪资,
我们想弄清楚 y 与 x 间的函数关系
必要的假设
我们必须先对y 与 x 的关系做出假设,
假设: y = a + b x,
线性回归能做什么,不能做什么
- 注意,线性回归能解决的问题是:在模型确定下来后, a,b值为多少时,误差最小
- 不能解决的问题是: 模型到底取 y =a+bx ? 还是取 y=a+bx+cx²?
代码
#version:py3
#author:kaka
#导包
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
experiences = np.array([0,1,2,3,4,5,6,7,8,9,10])
salaries = np.array([103100, 104900, 106800, 108700, 110400, 112300, 114200, 116100, 117800, 119700, 121600])
# 将特征数据集分为训练集和测试集,前7个用于测试集,后面用于训练集
X_train =experiences[:7].reshape(-1,1)
X_test = experiences[7:].reshape(-1,1)
# 把目标数据(特征对应的真实值)也分为训练集和测试集
Y_train = salaries[:7]
Y_test = salaries[7:]
# 创建线性回归模型
regr = linear_model.LinearRegression()
# 用训练集训练模型,训练后模型的参数保存在regr模型对象中
regr.fit(X_train, Y_train)
# 用训练得出的模型进行预测
Y_predict = regr.predict(X_test)
# 将测试结果以图的方式显示出来
plt.scatter(X_test, Y_test, color='black') #散点图,打印训练集
plt.plot(X_test, Y_predict, color='blue', linewidth=3) # 连线,打印测试集(测试集就是模型的预测结果)
# 打印模型训练的结果 y=θ0+θ1x 中的θ0,和θ1
print(regr.coef_) #截距
print(regr.intercept_) #参数列表
上述代码链接
jupyter链接 link
百度网盘链接 链接:https://pan.baidu.com/s/11St5rPUB3XI5SZkl7a9hrg
提取码:0d1w