最简单的线性回归模型 李烨

    xiaoxiao2023-10-07  145

    标题

    本模型取自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

    预测结果

    最新回复(0)