机器学习入门实例三——线性回归预测店铺销售额
数据集:
数据集下载链接:https://download.csdn.net/download/qq_43705330/85426684
wechat:微信公众号的投放金额、weibo:微博的投放广告的金额、others:其他项目投放的金额、sales:商品的销售额
数据的热力图代码:
import numpy as np # 导入NumPy数学工具箱
import pandas as pd # 导入Pandas数据处理工具箱# 读入数据并显示前面几行的内容,这是为了确保我们的文件读入的正确性
# 示例代码是在Kaggle中数据集中读入文件,如果在本机中需要指定具体本地路径
df_ads = pd.read_csv('advertising.csv')
df_ads.head()#显示前五行
print(df_ads)
# 导入数据可视化所需要的库
import matplotlib.pyplot as plt # Matplotlib – Python画图工具库
import seaborn as sns # Seaborn – 统计学数据可视化工具库# 对所有的标签和特征两两显示其相关性热力图(heatmap),得到两两之间的相关系数
sns.heatmap(df_ads.corr(), cmap="YlGnBu", annot=True)
plt.show() # plt代表英文plot,就是画图的意思
注:
1、corr():返回改数据类型的相关系数矩阵
2、heatmap()函数:
cmap:颜色
annot:如果为True,则在每个单元格中写入数据值。
如果一个与数据形状相同的数组,那么使用它来注释热图而不是数据。注意DataFrames将匹配位置,而不是索引。
对于热力图函数heatmap的详细使用方法可看这个:http://seaborn.pydata.org/generated/seaborn.heatmap.html
运行结果:
运行代码后,可得三个自变量与因变量之间的线性关系,相关性越高颜色越深。由此图可得,在微信公众号投放广告收益最高。
数据的散点图:
# 显示销量和各种广告投放量的散点图
sns.pairplot(df_ads,x_vars=['wechat', 'weibo', 'others'],#x轴y_vars='sales',#y轴,height=4, aspect=1, kind='scatter')
plt.show()
注:
pairplot函数:
kind:‘scatter’, ‘kde’, ‘hist’, ‘reg’
diag_kind:‘auto’, ‘hist’, ‘kde’,
对角线子图的类型。如果是’auto’,根据是否hue使用来选择。
pairplot的用法:http://seaborn.pydata.org/generated/seaborn.pairplot.html?highlight=pairplot#seaborn.pairplot
散点图可以很直观的显示自变量与因变量之间的关系。
面是手动画微信与销售额的散点图并且进行机器学习,上面是用函数来画
X = np.array(df_ads.wechat) # 构建特征集,只有微信广告一个特征
y = np.array(df_ads.sales) # 构建标签集,销售金额
print("张量X的阶:", X.ndim)
print("张量X的形状:", X.shape)
print("张量X的内容:", X)X = X.reshape((len(X),1)) #通过reshape函数把向量转换为矩阵,len函数返回样本个数
y = y.reshape((len(y),1)) #通过reshape函数把向量转换为矩阵,len函数返回样本个数#X(微信)变为200行1列,y(销售额)变为200行1列
print("张量X的阶:", X.ndim)
print("张量X的形状:", X.shape)
print("X:",X)#将数据集进行80%(训练集)和20%(验证集)的分割
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)#random_state:用于数据集拆分过程的随机化设定。
#如果指定了一个整数,那么这个数叫做随机化种子,每次设定的固定的种子能够保证得到同样的训练集和测试集,否则进行随机分割。#数据归一化使得预处理的数据被限定在一定的范围内,从而消除奇异样本数据导致的不良影响。数据归一化处理后,可以加快梯度下降求最优解的速度,且有可能提高精度(如KNN)
# def scaler(train, test): # 定义归一化函数 ,进行数据压缩
# min = train.min(axis=0) # 训练集最小值
# max = train.max(axis=0) # 训练集最大值
# gap = max - min # 最大值和最小值的差
# train -= min # 所有数据减最小值
# train /= gap # 所有数据除以大小值差
# test -= min # 把训练集最小值应用于测试集
# test /= gap # 把训练集大小值差应用于测试集
# return train, test # 返回压缩后的数据
# X_train, X_test = scaler(X_train, X_test) # 对特征归一化
# y_train, y_test = scaler(y_train, y_test) # 对标签也归一化from sklearn.linear_model import LinearRegression #导入线性回归算法模型
model = LinearRegression() #使用线性回归算法
model.fit(X_train, y_train) #用训练集数据,训练机器,拟合函数,确定参数
y_pred = model.predict(X_test) #预测测试集的Y值
print ('销售额的真值(测试集)',y_test)
print ('销售额的预测(测试集)',y_pred)
print("给预测评分:", model.score(X_test, y_test)) #评估预测结果,返回该次预测的系数R2
y_1=model.predict([[305]])
print(y_1)
# lineX = np.linspace(X_norm.min(), X_norm.max(),100)
# 用之前已经导入的matplotlib.pyplot中的plot方法显示散点图
plt.plot(X_train, y_train, 'r.', label='Training data')
plt.xlabel('Wechat Ads') # x轴Label
plt.ylabel('Sales') # y轴Label
plt.legend() # 显示图例
plt.show() # 显示绘图结果
下面进行确定线性回归模型并且给定具体的参数。
对y=ax+b寻找最优解,确定损失函数L(w,b),其中,h(x)为假设函数。
注:
1、(x, y)为样本,×是特征(微信公众号广告投放金额),y是标签(销售额)。
2、h(x)是假设函数wx+b,也就是y’。
3、D指的是包含多个样本的数据集。
4、N指的是样本数量(此例为200)。N前面还有常量2,是为了在求梯度的时候,抵消二次方后产生的系数,方便后续进行计算,同时增加的这个常量并不影响梯度下降的最效结果。
5、而L呢,对于一个给定的训练样本集而言,它是权重w和偏置b的函数,它的大小随着w和b的变化而变。
用Python定义一个MSE函数,并将其封装起来。
def cost_function(X, y, w, b): # 手工定义一个MSE均方误差函数y_hat = w * X + b # 这是假设函数,其中已经应用了Python的广播功能loss = y_hat - y # 求出每一个y’和训练集中真实的y之间的差异cost = np.sum(loss ** 2) / len(X) # 这是均方误差函数的代码实现return cost # 返回当前模型的均方误差值print("当权重4,偏置0.05时,损失为:", cost_function(X_train, y_train, w=4, b=0.05))
print("当权重50,偏置1时,损失为:", cost_function(X_train, y_train, w=50, b=1))
即:y=4x+0.05比y=50x+1效果更好
机器学习入门实例三——线性回归预测店铺销售额相关推荐
- 机器学习入门系列三(关键词:逻辑回归,正则化)
机器学习入门系列三(关键词:逻辑回归,正则化) 目录(?)[+] 一逻辑回归 逻辑回归 假设表示 决策边界 代价函数 其他优化方法 多元分类 二正则化 一.逻辑回归 1.逻辑回归 什么是逻辑回归问题, ...
- 机器学习:numpy版本线性回归预测波士顿房价
机器学习:numpy版本线性回归预测波士顿房价 导入数据 划分数据 模型 数据链接 链接: https://pan.baidu.com/s/1uDG_2IZVZCn9kndZ_ZIGaA?pwd=ne ...
- Azure机器学习入门(三)创建Azure机器学习实验
在此动手实践中,我们将在Azure机器学习Studio中一步步地开发预测分析模型,首先我们从UCI机器学习库的链接下载普查收入数据集的样本并开始动手实践: http://archive.ics.uci ...
- 机器学习入门(三):神经网络起手式
原址 神经网络伊始--感知机 perceptron 感知机基础的机器学习模型之一,通过它来认识机器学习的基本手段最为合适.同时,它也是神经网络与支持向量机 SVM 的基础.明白了它的原理,对于神经网络 ...
- 中国大学排名python爬虫_Python爬虫入门实例三之爬取软科中国大学排名
写在前面 这个例子是笔者今天在中国大学MOOC(嵩天 北京理工大学)上学习的时候写下来的.但是很快写完之后我就发现不对劲,首先课程给的例子是中国好大学网站的排名,但是现在这个网站已经重构了,原来的链接 ...
- 机器学习入门实例-加州房价预测-1(数据准备与可视化)
问题描述 数据来源:California Housing Prices dataset from the StatLib repository,1990年加州的统计数据. 要求:预测任意一个街区的房价 ...
- 【技术君啃书之旅】web安全之机器学习入门 第三章笔记
机器学习基本概念 有监督学习/无监督学习 从兜哥书上的概念来理解,有监督学习与无监督学习最大的判断依据就是训练样本是否有标记.其实看到这里的时候,我产生了几个疑问,下面逐个和大家分享一下. 有监督和无 ...
- Android入门实例三 注册界面的设计与实现
注册界面的设计与实现 1.简介 这次小实验通过RadioButton(单选按钮).CheckBox(复选框)等组件实现一些个人信息的录入,同时介绍了如何使用带图片的Toast反馈信息. 2.源码 2. ...
- 机器学习入门(七):多项式回归, PolynomialFeatures详解
机器学习入门专栏其他几个章节: 机器学习入门(一)线性回归 机器学习入门(二)KNN 机器学习入门(三)朴素贝叶斯 机器学习入门(四)决策树 机器学习入门(五)集成学习 机器学习入门(六)支持向量机 ...
- 机器学习入门(九):非监督学习:5种聚类算法+2种评估模型
机器学习入门专栏其他章节: 机器学习入门(一)线性回归 机器学习入门(二)KNN 机器学习入门(三)朴素贝叶斯 机器学习入门(四)决策树 机器学习入门(五)集成学习 机器学习入门(六)支持向量机 机器 ...
最新文章
- 【好资源】473页斯坦福数学基础:《应用线性代数》(附pdf和ppt下载)
- 高性能计时器Timer的设计(时间轮和时间堆两种方式)
- c# list集合根据某个字段去重_完美解决c# distinct不好用的问题
- 洛谷 P1008 三连击 Label:水
- “2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席
- 事务隔离级别,看这一篇就够了
- 七牛云注册创建oss并配置自定义域名
- wifi弱口令检查(2)
- 崩坏3支持鸿蒙系统没,崩坏3鸿蒙版
- python程序画漂亮图_用python画图代码:正弦图像、多轴图等案例
- Flink Remote Shuffle 开源:面向流批一体与云原生的 Shuffle 服务
- VirtualBox硬盘扩容
- mac php 本地服务器,在Mac上搭建本地Apache服务器一些注意点
- 应用程序无法正常启动0xc0150002解决方案
- 计算机视觉教程0-2:你了解眼里所见的色彩吗?(详解RGB/HSV/Lab)
- python列表元素分割_在Python中分隔列表元素
- 【语音增强】基于matlab小波变换语音增强【含Matlab源码 296期】
- 麦森数 OpenJ_Bailian - 2706
- 【NOIP2012提高组】开车旅行
- SOA面向服务的架构设计
热门文章
- 国内首家!携程周三、周五可在家“躺平”:76%员工主动报名 !网友:我酸了...
- 5基于matplotlib的python数据可视化——导入Excel数据制作折线图
- VMware中进行文件移动/复制权限不够的问题
- Android network框架分析之NetworkManagementService和netd交互深入分析(一)
- 计算机蓝屏代码0x0000007b,电脑蓝屏代码0x0000007b 电脑蓝屏0x0000007b怎么解决 - 云骑士一键重装系统...
- 怎么压缩PPT大小?PPT太大了怎么压缩?
- python除法取商_python 除法
- springboot项目启动后执行方法
- Stata软件做门槛回归模型(汉森个人主页上的代码)
- 泰勒展开-常用优化实例