fitted
カラム名はSVDディメンションになります。
各次元は入力フィーチャの線形結合です。特定の次元が何を意味するのかを理解するには、配列svd.components_
を見てください - それは係数の行列を含んでいます。少し変更
あなたの元の例、:
import pandas as pd
import numpy as np
from sklearn.decomposition import TruncatedSVD
feature_names = list('ABCDEF')
df = pd.DataFrame(
np.random.randn(1000, len(feature_names)),
columns=feature_names
)
def reduce(dim):
svd = TruncatedSVD(n_components=dim, n_iter=7, random_state=42)
return svd.fit(df)
svd = reduce(3)
次に、あなたがより読みやすいSVD次元名を取得するためにそのような何かを行うことができます - さんは、0番目の次元のためにそれを計算してみましょう:
" ".join([
"%+0.3f*%s" % (coef, feat)
for coef, feat in zip(svd.components_[0], feature_names)
])
それは示してい+0.170*A -0.564*B -0.118*C +0.367*D +0.528*E +0.475*F
- これはこの場合、0番目のSVDディメンションに使用できる「フィーチャ名」です(係数はデータに依存するため、フィーチャ名もデータに依存します)。
入力ディメンションの数が多い場合は、「精度」を検査可能性と交換することができます。係数をソートし、それらのいくつかの頂点のみを使用します。 https://github.com/TeamHG-Memex/eli5/pull/208にもっと詳細な例があります(免責事項:私はeli5のメンテナーの1人です;プルリクエストは私ではありません)。
SVDとPCAは既存のものから列を選択しません。使用可能なすべての列を使用してデータを新しい次元に変換します。したがって、列がはめ込まれるのに意味がありません。 –
私が誤って私がどのように誤って研究したのかを知った後、私はstats.exchange [link](https://stats.stackexchange.com/questions/286335/reduce-dimensions-of-a-highly-dimension-データ)あなたは時間があればそれに答えてください。 @VivekKumar –