使用 Python 查找相关对

Using Python to find correlation pairs

    NAME    PRICE   SALES   VIEWS   AVG_RATING  VOTES   COMMENTS    
Module 1    .00     69   12048           5      3          26    
Module 2    .99     12   52858           5      1          14    
Module 3    .00      1   1381           -1      0           0    
Module 4    .99     46   57841           5      8          24    
.................

所以,假设我有销售统计数据。我想了解一下:

  1. Price/etc 对 Sales 有何影响?
  2. 检测哪些功能影响最大?
  3. 应该优化哪个价格才能获得最多的销量?

请告知哪些 Python 图书馆可以提供帮助?任何例子在这里都会很棒!

python 机器学习库 scikit-learn 最适合您的情况。有一个名为 feature_selection 的子模块完全符合您的需要。这是一个例子。

from sklearn.datasets import make_regression

# simulate a dataset with 500 factors, but only 5 out of them are truely 
# informative factors, all the rest 495 are noises. assume y is your response
# variable 'Sales', and X are your possible factors
X, y = make_regression(n_samples=1000, n_features=500, n_informative=5, noise=5)

X.shape
Out[273]: (1000, 500)
y.shape
Out[274]: (1000,)

from sklearn.feature_selection import f_regression
# regressing Sales on each of factor individually, get p-values
_, p_values = f_regression(X, y)
# select significant factors p < 0.05
mask = p_values < 0.05
X_informative = X[:, mask]

X_informative.shape
Out[286]: (1000, 38)

现在,我们看到 500 个特征中只有 38 个被选中。

为了进一步构建预测模型,我们可以考虑流行的 GradientBoostRegression。

from sklearn.ensemble import GradientBoostingRegressor

gbr = GradientBoostingRegressor(n_estimators=100)
# fit our model
gbr.fit(X_informative, y)
# generate predictions
gbr_preds = gbr.predict(X_informative)

# calculate erros and plot it
gbr_error = y - gbr_preds

fig, ax = plt.subplots()
ax.hist(y, label='y', alpha=0.5)
ax.hist(gbr_error, label='errors in predictions', alpha=0.4)
ax.legend(loc='best')

从图表中,我们看到模型做得很好:我们的模型捕获了 'Sales' 中的大部分变化。