PCAの読み込みとsklearnのbiplotでの読み込みをプロットします(Rの自動プロットのように)



Plot Pca Loadings Loading Biplot Sklearn



解決:

あなたは作成することによって次のようなことをすることができますバイプロット関数。

ここの素晴らしい記事:https://towardsdatascience.com/pca-clearly-explained-how-when-why-to-use-it-and-feature-importance-a-guide-in-python-7c274582c37e?source = friends_link&sk = 65bf5440e444c24aff192fedf9f8b64f



この例では、アイリスデータを使用しています。

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.decomposition import PCA import pandas as pd from sklearn.preprocessing import StandardScaler iris = Datasets.load_iris()X = iris.data y = iris.target#一般的に、PCAの前にデータをスケーリングすることをお勧めします。 scaler = StandardScaler()scaler.fit(X)X = scaler.transform(X)pca = PCA()x_new = pca.fit_transform(X)def myplot(score、coeff、labels = None):xs = score [:、 0] ys =スコア[:、1] n = coeff.shape [0] scalex = 1.0 /(xs.max()-xs.min())scaley = 1.0 /(ys.max()-ys.min( ))plt.scatter(xs * scalex、ys * scaley、c = y)for i in range(n):plt.arrow(0、0、coeff [i、0]、coeff [i、1]、color = 'r'、alpha = 0.5)ラベルがNoneの場合:plt.text(coeff [i、0] * 1.15、coeff [i、1] * 1.15、 'Var' + str(i + 1)、color = 'g '、ha =' center '、va =' center ')else:plt.text(coeff [i、0] * 1.15、coeff [i、1] * 1.15、labels [i]、color =' g '、ha = 'center'、va = 'center')plt.xlim(-1,1)plt.ylim(-1,1)plt.xlabel( 'PC {}'。format(1))plt.ylabel( 'PC {} '。format(2))plt.grid()#関数を呼び出します。 2台のPCのみを使用してください。 myplot(x_new [:、0:2]、np.transpose(pca.components_ [0:2、:]))plt.show()

結果

BIPLOTの結果





「pca」ライブラリを試してください。これにより、説明された分散がプロットされ、バイプロットが作成されます。

pca import pcaからのpipinstall pca#分散の95%を説明するコンポーネントの数までデータを減らすために初期化します。 model = pca(n_components = 0.95)#または2つのPCに向けてデータを削減しますmodel = pca(n_components = 2)#変換結果の近似= model.fit_transform(X)#説明された分散のプロットfig、ax = model.plot()#散布図最初の2つのPCfig、ax = model.scatter()#特徴の数でバイプロットを作成しますfig、ax = model.biplot(n_feat = 4) 

私はここで@teddyrolandによって答えを見つけました:https://github.com/teddyroland/python-biplot/blob/master/biplot.py