案件
1,现有冰激凌店一年的历史销售数据
2,数据包括单日的销售量、气温、周几(问题:如何用这些数据预测冰激凌的销量?)
模拟实验与分析
将数据存储为csv格式,导入python。并画出散点图,观察气温和销售量的关系。
[Python] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
import pandas as pd
icecream = pd.read_csv( "icecream.csv" )
import matplotlib.pyplot as plt
import pylab
plt.rcParams[ 'font.sans-serif' ] = [ 'SimHei' ]
plt.scatter(icecream.iloc[:, 1 ],icecream.iloc[:, 0 ])
plt.xlabel( "气温" )
plt.ylabel( "销售量" )
pylab.show()
|
计算两者间的相关系数。
[Python] 纯文本查看 复制代码
1
|
icecream.iloc[:, 0 : 2 ].corr()
|
结果为:
[Python] 纯文本查看 复制代码
1
2
3
4
|
销售量 气温[ / align]
销售量 1.000000 0.844211
气温 0.844211 1.000000
|
销售量和气温的相关系数为0.84,结合散点图,认为两者相关。下面用回归分析的方法,通过气温来预测冰激凌销量。
[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
|
from sklearn.linear_model import LinearRegression
model = LinearRegression()
feature_cols = [ '气温' ]
X = icecream[feature_cols]
y = icecream.销售量
model.fit(X,y)
plt.scatter(icecream.气温, icecream.销售量)
plt.plot(icecream.气温, model.predict(X) , color = 'blue' )
plt.xlabel( '气温' )
plt.ylabel( '销售量' )
plt.show()
print ( "截距与斜率:" ,model.intercept_,model.coef_)
|
[Python] 纯文本查看 复制代码
1
|
截距与斜率: 57.1673282152 [ 5.21607823 ]
|
于是,散点图中的线函数式为y=5.2X+57.2。所以,当气温为25度时,预测的销售量为5.2*25+57.2=187.52,约188个。
几个小概念回归分析:预测数据时的简便手法。在此例中,销售量为反应变量,也叫因变量,气温为解释变量,也叫自变量。虽然影响销售量的因素除了气温外还有很多,但回归分析中我们要把现实情况简化并公式化,这个过程叫做建模。本例中只用1个解释变量进行模型化称为一元线性回归,如果反应变量同时受到多个解释变量的影响,称为多元线性回归。
|