赞
踩
一元线性回归适用于解决有如下数据特征的场景:
1. 单个特征向量与结果向量之间的关系
2. 特征向量与结果向量之间存在线形关系
下面是一个简单的两列数据集,第一列和第二列存在线形关系(广告投入量,产品销售量),通过训练此数据集,得到一元线性回归模型(y = 3.74x + (-36.36))。
给定第一列数据,从而用此模型可预测第二列数据。基于sklearn模块建立并训练一元线形回归模型,通过广告投入量和产品销售量作为数据集,从而实现给定任意广告投入量,可预测产品销售量,具体代码如下所示
- from matplotlib import pyplot as plt
- from sklearn.linear_model import LinearRegression
- import numpy as np
-
- # 第一步:数据获取
- data = np.array([
- [29, 77],
- [28, 62],
- [34, 93],
- [31, 84],
- [25, 59],
- [29, 64],
- [32, 80],
- [31, 75],
- [24, 58],
- [33, 91],
- [25, 51],
- [31, 73],
- [26, 65],
- [30, 84]])
- x = np.reshape(data[:, 0], (-1, 1)) # 第一列为广告投入量
- y = np.reshape(data[:, 1], (-1, 1)) # 第二列为产品销售量
-
- # 第二步:绘制散点图
- plt.scatter(x, y) # 通过散点图,很明显确定两列数据具备线形相关,满足一元线形回归的使用条件
- plt.xlabel("Advertising investment")
- plt.ylabel("Product sales volume")
-
- # 第三步 建立一元线性回归模型
- lr = LinearRegression()
- lr.fit(x, y) # 训练模型
- a = round(lr.coef_[0][0], 2) # 查看斜率
- b = round(lr.intercept_[0], 2) # 查看截距
- print("线性回归模型为:y = {}x + {}.".format(a, b))
-
- x_test = np.array([[20], [55]])
- y_test = lr.predict(x_test)
- plt.plot(x_test, y_test, color='r')
-
- # 第四步 对回归模型进行检验
- lr.score(x, y)
-
- # 第五步 利用回归模型进行预测
- x_pred = [[40], [45], [50]]
- y_pred = lr.predict(x_pred)
-
- plt.scatter(x_pred, y_pred, color='g', marker='*')
- plt.legend(['mode','train','pred'])
- plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。