Skip to content

Commit

Permalink
Pca loadings (#251)
Browse files Browse the repository at this point in the history
  • Loading branch information
rasbt committed Sep 19, 2017
1 parent 958cb83 commit edb96f1
Show file tree
Hide file tree
Showing 5 changed files with 137 additions and 22 deletions.
6 changes: 3 additions & 3 deletions docs/sources/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ The CHANGELOG for the current development version is available at
##### New Features

- Added `evaluate.permutation_test`, a permutation test for hypothesis testing (or A/B testing) to test if two samples come from the same distribution. Or in other words, a procedure to test the null hypothesis that that two groups are not significantly different (e.g., a treatment and a control group).
- Added `'leverage'` and `'conviction` as evaluation metrics to the `frequent_patterns.association_rules` function. [#246](https://github.com/rasbt/mlxtend/pull/246) & [#247](https://github.com/rasbt/mlxtend/pull/247)
- Added a `loadings_` attribute to `PrincipalComponentAnalysis` to compute the factor loadings of the features on the principal components. [#251](https://github.com/rasbt/mlxtend/pull/251)

##### Changes

- The `'support'` column returned by `frequent_patterns.association_rules` was changed to compute the support of "antecedant union consequent", and new `antecedant support'` and `'consequent support'` column were added to avoid ambiguity. [#245](https://github.com/rasbt/mlxtend/pull/245)
- Added `'leverage'` and `'conviction` as evaluation metrics to the `frequent_patterns.association_rules` function. [#246](https://github.com/rasbt/mlxtend/pull/246) & [#247](https://github.com/rasbt/mlxtend/pull/247)
- Allow the `OnehotTransactions` to be cloned via scikit-learn's `clone` function, which is required by e.g., scikit-learn's `FeatureUnion` or `GridSearchCV` (via [Iaroslav Shcherbatyi](https://github.com/iaroslav-ai)). [#249](https://github.com/rasbt/mlxtend/pull/249)

##### Bug Fixes

- Allow `OneHot`

- the "S" vector from SVD in `PrincipalComponentAnalysis` are now scaled so that the eigenvalues via `solver='eigen'` and `solver='svd'` now store eigenvalues that have the same magnitudes. [#251](https://github.com/rasbt/mlxtend/pull/251)

### Version 0.8.0 (2017-09-09)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,9 @@
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from mlxtend.data import iris_data\n",
Expand Down Expand Up @@ -167,7 +169,9 @@
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
Expand Down Expand Up @@ -294,6 +298,83 @@
"$$\\Sigma(-v) = -\\Sigma v = -\\lambda v = \\lambda(-v).$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example 4 - Factor Loadings"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After evoking the `fit` method, the factor loadings are available via the `loadings_` attribute. In simple terms, the the loadings are the unstandardized values of the eigenvectors. Or in other words, we can interpret the loadings as the covariances (or correlation in case we standardized the input features) between the input features and the and the principal components (or eigenvectors), which have been scaled to unit length.\n",
"\n",
"By having the loadings scaled, they become comparable by magnitude and we can assess how much variance in a component is attributed to the input features (as the components are just a weighted linear combination of the input features)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from mlxtend.data import iris_data\n",
"from mlxtend.preprocessing import standardize\n",
"from mlxtend.feature_extraction import PrincipalComponentAnalysis\n",
"import matplotlib.pyplot as plt\n",
"\n",
"X, y = iris_data()\n",
"X = standardize(X)\n",
"\n",
"pca = PrincipalComponentAnalysis(n_components=2,\n",
" solver='eigen')\n",
"pca.fit(X);"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116e43e48>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"xlabels = ['sepal length', 'sepal width', 'petal length', 'petal width']\n",
"\n",
"fig, ax = plt.subplots(1, 2, figsize=(8, 3))\n",
"\n",
"ax[0].bar(range(4), pca.loadings_[:, 0], align='center')\n",
"ax[1].bar(range(4), pca.loadings_[:, 1], align='center')\n",
"\n",
"ax[0].set_ylabel('Factor loading onto PC1')\n",
"ax[1].set_ylabel('Factor loading onto PC2')\n",
"\n",
"ax[0].set_xticks(range(4))\n",
"ax[1].set_xticks(range(4))\n",
"ax[0].set_xticklabels(xlabels, rotation=45)\n",
"ax[1].set_xticklabels(xlabels, rotation=45)\n",
"plt.ylim([-1, 1])\n",
"plt.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For instance, we may say that most of the variance in the first component is attributed to the petal features (although the loading of sepal length on PC1 is also not much less in magnitude). In contrast, the remaining variance captured by PC2 is mostly due to the sepal width. Note that we know from Example 2 that PC1 explains most of the variance, and based on the information from the loading plots, we may say that petal features combined with sepal length may explain most of the spread in the data."
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down Expand Up @@ -390,15 +471,6 @@
" s = f.read()\n",
"print(s)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit edb96f1

Please sign in to comment.