目录
-
- 一: 背景:
- 二:数据概况分析:
- 三:单变量分析:
- 四:相关性分析和可视化:
- 五:回归分析:
1: 分析的目的:
对各类因素投入产出比做出评估。
2: 分析的数据:
电视广告,线上,线下,门店内,微信渠道等促销投入和销售额之间的关系。
3:数据的说明:

4: 分析流程:
1:查看数据的前5条记录:
2:查看数据的基本信息:
3:统计各个列哪些存在空值,以及空值的数量:
由于缺失的不多,后期考虑直接删除。
1:数据分布信息:
各个列的最大值,平均值,中位数,众数等。
2:使用describe不会统计字符串类型的,所以单独查看event列:
发现分为四种促销:
3: 查看四种促销分别对应的营业额是多少?
4:查看四种促销分别对应的广告投放量是多少?
5:one hot 编码:独热码:
注意:对于person来说这种字符串类型的,我们要进行线性分析,肯定要转化成数字。如果我们使用0 1 2 3 来区分四种,实际上就是付给每个列一个权重,而这些权重会影响我们的分析。所以是不可取的。
独热码是用向量来存储列,每列的值就是相等的:
而pandas中可以使用get_dummies方法,将其中的字符串类型的列,转化成哑变量,即独热码的形式存储。
1: 查看每个列之间的相关性:
注意:此时求出来的相关性,并不代表一定相关。是否真正的相关,需要我们根据这几个列,构建线性回归模型,进行训练,然后得到权重,我们才能得出结论。
2:查看与revenue相关的列的排序:
注意sort_values只有一列也需要指定按照哪一列进行排序。
3:使用seaborn查看local_TV与销售额之间的关系:
#可视化分析
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
#线性关系可视化
#斜率与相关系数有关
sns.regplot('local_tv','revenue',store)
发现:local_TV与销售额之间存在一次线性关系。
4: 查看人员和销售额之间的关系:
5: 查看instore(门店内海报)与限售额之间的关系:
发现是牵强的一次性关系。
1: 去除空值,然后划分测试集和训练集:
# 1:导入线性回归分析的包和划分测试集和训练集的包
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 2:去除存在空值的行
store.dropna(inplace=True)
y = store['revenue']
x=store[['local_tv','person','instore']]
# 3: 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(x, y)
2:进行归一化和线性模型进行拟合:
# 1: 导入归一化函数
from sklearn.preprocessing import StandardScaler
# 2:创建归一化对象
ss = StandardScaler()
# 3:对训练集进行归一化处理和训练
X_train = ss.fit_transform(X_train)
# 4: 对于测试集也进行归一化
X_test = ss.transform(X_test)
# 1:创建线性模型对象
model = LinearRegression()
# 2:利用训练集进行拟合
model.fit(X_train, y_train)
# 3:打印自变量系数
print(model.coef_)
# 4: 打印截距
print(model.intercept_)
打印结果:
# 1: 利用测试集进行测试
y_predict = model.predict(X_test)
from sklearn.metrics import mean_squared_error
from math import sqrt
# 2: 获取均方误差的开跟值
sqrt(mean_squared_error(y_true=y_test, y_pred=y_predict))