确定python

时间:2018-06-03 22:21:57

标签: python scikit-learn statistics pca covariance

在查看了大量的方法和帖子之后,我还不清楚如何解决这个看似直观简单的问题。 我有以下数据集,分数为5名玩家。其样本方差为2.98108。

PLAYER  |   SCORE
-------------------
Bernard |   22.66
Bernard |   27.365
Bernard |   22.814
Anton   |   25.012
Anton   |   23.676
Anton   |   23.954
Carine  |   24.722
Carine  |   24.026
Carine  |   24.335
Carine  |   24.05
Bernard |   23.925
Bernard |   24.355
Bernard |   26.699
Carine  |   27.999
David   |   28.701
David   |   22.57
David   |   22.365
David   |   25.49
David   |   26.757
David   |   23.878
David   |   24.609
David   |   22.803
Anton   |   25.227
Anton   |   25.348
Carine  |   27.523
Carine  |   28.38
Carine  |   28.628
Bernard |   26.651
Bernard |   25.377
Anton   |   27.767
Anton   |   24.81
Anton   |   24.835
Eloy    |   26.672
Eloy    |   25.683
Eloy    |   26.657
Eloy    |   24.463
Eloy    |   25.808
Eloy    |   25.414
Eloy    |   26.044
Eloy    |   25.619

我想确定每个参与者在多大程度上促成了整体的差异。

Anton   |   Bernard |   Carine  |   David   |   Eloy
------------------------------------------------------                              
25.227  |   26.651  |   24.722  |   28.701  |   26.672
25.348  |   25.377  |   24.026  |   22.57   |   25.683
27.767  |   22.66   |   24.335  |   22.365  |   26.657
24.81   |   27.365  |   24.05   |   25.49   |   24.463
24.835  |   22.814  |   27.523  |   26.757  |   25.808
25.012  |   23.925  |   28.38   |   23.878  |   25.414
23.676  |   24.355  |   28.628  |   24.609  |   26.044
23.954  |   26.699  |   27.999  |   22.803  |   25.619

请注意,我没有任何目标变量:我不会将玩家得分与因变量拟合。这使得(对我来说)很难使用像shapley值,sklearn.feature_selection.chi2或feature_importances_这样的方法,其中fit和fit_transform需要一个目标变量。

Scikit的PCA提供以下矩阵:

部件_:

-0.21261656 |   0.56000412  |   -0.19875582 |   0.77420244  |   -0.04791964
-0.31918083 |   -0.29286871 |   0.83464075  |   0.33964441  |   0.01918345
0.50226936  |   -0.55051268 |   -0.21507693 |   0.50440938  |   0.37943954
0.08884174  |   -0.33440461 |   -0.13381735 |   0.17548621  |   -0.9119091
0.76990287  |   0.4309671   |   0.44688451  |   0.00529465  |   -0.14759107

explained_variance_ratio _:

0.43725481  |   0.38896865  |   0.14361466  |   0.01989021  |   0.01027166

我想有一个结果表,如:

Anton       |   Bernard     |   Carine     |    David       |   Eloy
-------------------------------------------------------------------------                           
0.20195141  |   0.18162131  |   0.30601668  |   0.15273025  |   0.15768035

告诉我Carine是最大的贡献者,占总差异的30%,剩下的球员也是如此。

我可以使用这些矩阵(组件和explain_variance_ratio)来推断每个玩家对总方差的总贡献吗?如果是,我该怎么做?

由于

1 个答案:

答案 0 :(得分:2)

由于每个玩家恰好有8个数据样本,所以从所有样本的(总体)均值中求出平方误差,并首先由玩家对这些误差求和(每个8个样本,达到5个数字)并将这5个数字相加总和。 5个数字中的每一个除以此总数,都会得到所需的值。