用于分群的数据准备

Python 营销中的机器学习

Karolis Urbonas

Head of Analytics & Science, Amazon

模型假设

  • 先从 K-means 开始
  • 当数据 1)近似正态(无偏态),且 2)已标准化(均值=0,标准差=1)时,K-means 表现良好
  • 第二个模型 NMF 可用于原始数据,矩阵稀疏时尤佳
Python 营销中的机器学习

用对数变换去偏态

# 第一种方式:对数变换
wholesale_log = np.log(wholesale)
sns.pairplot(wholesale_log, diag_kind='kde')
plt.show()
Python 营销中的机器学习

查看对数变换后的数据

对数变换的配对图

Python 营销中的机器学习

用 Box-Cox 去偏态

# 第二种方式:Box-Cox 变换
from scipy import stats

def boxcox_df(x):
    x_boxcox, _ = stats.boxcox(x)
    return x_boxcox

wholesale_boxcox = wholesale.apply(boxcox_df, axis=0)
sns.pairplot(wholesale_boxcox, diag_kind='kde')
plt.show()
Python 营销中的机器学习

查看 Box-Cox 变换后的数据

Box-Cox 配对图

Python 营销中的机器学习

数据标准化

  • 各列值减去该列均值
  • 各列值除以该列标准差
  • 使用 sklearnStandardScaler() 模块
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()

scaler.fit(wholesale_boxcox) wholesale_scaled = scaler.transform(wholesale_boxcox) wholesale_scaled_df = pd.DataFrame(data=wholesale_scaled, index=wholesale_boxcox.index, columns=wholesale_boxcox.columns) wholesale_scaled_df.agg(['mean','std']).round()
      Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen
mean   -0.0   0.0      0.0     0.0              -0.0         0.0
std     1.0   1.0      1.0     1.0               1.0         1.0
Python 营销中的机器学习

Passons à la pratique !

Python 营销中的机器学习

Preparing Video For Download...