【机器学习】线性回归之预测商品的销售额

目录

情境:

 一、读取数据

 二、分析数据

1、热度图 heatmap() 

2、散点图

三、特征集和标签集

1、学会查看数据

 2、拆分训练集和测试集

 四、线性回归

五、开始预测

 六、评价测度

七、模拟效果对比图 ROC曲线

八、给模型打分


情境:

一家商店为了扩大销售额,进行了宣传

采用了以下三种方式:

微信:wechat

报纸:newspaper

电视:tv

而销售额:sales(千元)

 一、读取数据

数据的读取 pandas 的 read_csv

nidm 阶

shape (200,4)两百行4列

head()前五条数据

tail()后五条数据

import pandas as pd

data = pd.read_csv('./data/advertising.csv')
print(data.ndim) # 维度(阶
print(data.shape) # (200,4) 说明有两百条数据,4列 其中第四列sales作为标签 ,其他三个为特征
data.head() # 显示前五条数据

 

 二、分析数据

1、热度图 heatmap() 

# 分析数据
# 可视化数据
# 数据的相关分析

#  seaborn 包,这个包数据可视化效果比较好,其实它也属于Matplotlib的内部包,但是需要单独安装

有关seaborn包:

Seaborn的简述_熊️兔的博客-CSDN博客_seaborn

Seaborn详细教程-数据分析必备手册(2万字总结)seaborn中文手册

import matplotlib.pyplot as plt
import seaborn as sns 
# sns.heatmap() 热度图
# cmap:设置颜色带的色系
# annot:是否显示数值注释
sns.heatmap(data.corr(),annot=True,cmap='RdBu_r') # 使用data.corr()计算相关系数
plt.show()

 # 相关性越高,颜色越深

可以看出,微信宣传效果比较好

2、散点图

#显示销量和各种广告投放量的散点图
# 参数size,aspect 来调节显示的大小和比例
# kind = 'reg',可以添加一条最佳拟合直线和95%的置信带
sns.pairplot(data,
             x_vars=['wechat', 'newspaper', 'tv'],
             y_vars='sales',
             size=7, aspect=0.9,kind='reg')
plt.show()
# 根据结果可以看出wechat 线性关系比较强

 可以看到,wechat的拟合线性比较好

三、特征集和标签集

1、学会查看数据

from IPython.core.display_functions import display

# 线性回归模型
'''
优点:快速并且没有调节参数
缺点:相比其他复杂点的模型,它的预测准确率不高,而且它假设特征和标签之间有线性关系,对一些非线性的关系,不能很好进行数据建模
'''

# drop 默认删除行,删除列的话加上 “axis=1”
X = data.drop('sales',axis=1) # 去掉最后一列标签
print('特征集前五条数据\n',X.head())
y = data['sales'] # 从Dataframe 中选择一个Series
display('标签集前五条',y.head())

 2、拆分训练集和测试集

这里用了sklearn的拆分工具

from sklearn.model_selection import train_test_split

# 构建训练集和测试集
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=1,train_size=0.7) # train 0.7,test 0.3
# print(X_train.shape) # (140,3)
# print(X_test.shape) # (60, 3)
display(X_train)

 四、线性回归

# sklearn 的线性回归
from sklearn.linear_model import LinearRegression

linreg = LinearRegression()
model = linreg.fit(X_train,y_train)
print("模型:",model)
print(linreg.coef_) # w
print(linreg.intercept_) # b

输出:

模型: LinearRegression()
[0.01170566 0.01323019 0.00058797]
4.599516690419023

五、开始预测

# 预测
y_pred = linreg.predict(X_test)
display(y_pred)

 六、评价测度

1、线性回归常用的三种:

  • 平均绝对误差(MAE)
  • 均方误差(MSE)
  • 均方根误差(RMSE)
# RMSE
from sklearn import metrics
import numpy as np

sum = 0
for i in range(len(y_pred)):
    sum += (y_pred[i] - y_test.values[i]) **2

sum_erro = np.sqrt(sum / len(y_test))
print(sum_erro)

# 上面的代码可以直接这样:
print(np.sqrt(metrics.mean_squared_error(y_test, y_pred)))

输出:

1.523063932837681
1.523063932837681

七、模拟效果对比图 ROC曲线

有关ROS曲线:机器学习之ROC曲线_荒野雄兵的博客-CSDN博客_机器学习roc曲线

plt.figure()
plt.plot(range(len(y_pred)), y_pred, 'b', label="predict")
plt.plot(range(len(y_pred)), y_test, 'r', label="test")

# 'upper right', 'upper left',
# 'lower left', 'lower right', 'right',
# 'center left', 'center right', 'lower center',
# 'upper center', 'center'
plt.legend(loc="upper left")  # 显示图中的标签 -->左上角
plt.xlabel("number")
plt.ylabel('value')
plt.show()

八、给模型打分

linreg.score(X_test, y_test)

 

可以看到还不错 

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
线性回归是一种常用的机器学习算法,用于预测因变量与一个或多个自变量之间的线性关系。在预测网店销售额时,可以使用线性回归模型来建立销售额与投放广告金额之间的关系。 首先,你需要准备一个包含投放广告金额和销售额的数据集。根据引用提供的数据集,你可以下载并使用该数据集进行线性回归预测。 接下来,你可以使用Python中的机器学习库,如scikit-learn来实现线性回归模型。下面是一个简单的示例代码: ```python import pandas as pd from sklearn.linear_model import LinearRegression # 读取数据集 data = pd.read_csv('your_dataset.csv') # 定义自变量和因变量 X = data[['wechat', 'weibo', 'others']] # 投放广告金额作为自变量 y = data['sales'] # 销售额作为因变量 # 创建线性回归模型 model = LinearRegression() # 拟合模型 model.fit(X, y) # 预测销售额 new_data = [[1000, 2000, 3000]] # 假设新的投放广告金额为1000、2000、3000 predicted_sales = model.predict(new_data) print("Predicted sales: ", predicted_sales) ``` 上述代码中,首先使用pandas库读取数据集,并将投放广告金额和销售额分别作为自变量X和因变量y。然后,创建一个线性回归模型,并使用fit()方法拟合模型。最后,使用predict()方法预测新的投放广告金额对应的销售额。 请注意,以上代码仅为示例,实际应用中可能需要进行数据预处理、特征工程等步骤来提高模型的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值