Простые графики собственных векторов для sklearn.decomposition.PCAPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Простые графики собственных векторов для sklearn.decomposition.PCA

Сообщение Anonymous »

Я пытаюсь понять, как работает анализ главных компонентов, и тестирую его на наборе данных sklearn.datasets.load_iris. Я понимаю, как работает каждый шаг (например, стандартизация данных, ковариация, собственное разложение, сортировка по наибольшему собственному значению, преобразование исходных данных в новую ось с использованием K выбранных измерений).
Следующий Шаг — визуализировать, куда эти собственные векторы проецируются в наборе данных (на графике PC1 и PC2, верно?).
Может кто-нибудь объяснить, как построить собственные векторы [PC1, PC2, PC3] на трехмерном графике набора данных уменьшенного размера?
Кроме того, правильно ли я рисую эту двухмерную версию? Я не уверен, почему мой первый собственный вектор имеет меньшую длину. Должен ли я умножить на собственное значение?

Вот некоторые исследования, которые я провел для этого:
Метод PCA, которому я следую, взят из:
https://plot.ly/ipython-notebooks/princ ... -in-scikit -learn (хотя я не хочу использовать сюжет. Я хочу придерживаться pandas, numpy, sklearn, matplotlib, scipy и seaborn)
Я следил за этим руководством по построению собственных векторов, оно кажется довольно простым: базовый пример для PCA с matplotlib, но я не могу воспроизвести результаты с моими данными.
Я нашел это, но это кажется слишком сложным для того, что я пытаюсь сделать, и я не хочу создавать FancyArrowPatch: построение собственного вектора ковариационной матрицы с использованием matplotlib и np.linalg
< hr />
Я старался сделать свой код максимально простым, чтобы следовать другим руководствам:

Код: Выделить всё

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn import decomposition
import seaborn as sns; sns.set_style("whitegrid", {'axes.grid' : False})

%matplotlib inline
np.random.seed(0)

# Iris dataset
DF_data = pd.DataFrame(load_iris().data,
index = ["iris_%d" % i for i in range(load_iris().data.shape[0])],
columns = load_iris().feature_names)

Se_targets = pd.Series(load_iris().target,
index = ["iris_%d" % i for i in range(load_iris().data.shape[0])],
name = "Species")

# Scaling mean = 0, var = 1
DF_standard = pd.DataFrame(StandardScaler().fit_transform(DF_data),
index = DF_data.index,
columns = DF_data.columns)

# Sklearn for Principal Componenet Analysis

# Dims
m = DF_standard.shape[1]
K = 2

# PCA (How I tend to set it up)
M_PCA = decomposition.PCA(n_components=m)
DF_PCA = pd.DataFrame(M_PCA.fit_transform(DF_standard),
columns=["PC%d" % k for k in range(1,m + 1)]).iloc[:,:K]

# Plot the eigenvectors
#https://stackoverflow.com/questions/18299523/basic-example-for-pca-with-matplotlib

# This is where stuff gets weird...
data = DF_standard

mu = data.mean(axis=0)
eigenvectors, eigenvalues = M_PCA.components_, M_PCA.explained_variance_ #eigenvectors, eigenvalues, V = np.linalg.svd(data.T, full_matrices=False)
projected_data = DF_PCA #np.dot(data, eigenvectors)

sigma = projected_data.std(axis=0).mean()

fig, ax = plt.subplots(figsize=(10,10))
ax.scatter(projected_data["PC1"], projected_data["PC2"])
for axis, color in zip(eigenvectors[:K], ["red","green"]):
#     start, end = mu, mu + sigma * axis ### leads to "ValueError: too many values to unpack (expected 2)"

# So I tried this but I don't think it's correct
start, end = (mu)[:K], (mu + sigma * axis)[:K]
ax.annotate('', xy=end,xytext=start, arrowprops=dict(facecolor=color, width=1.0))

ax.set_aspect('equal')
plt.show()
Изображение


Подробнее здесь: https://stackoverflow.com/questions/379 ... sition-pca
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Простые участки собственных векторов для sklearn.decomposition.pca
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Простые участки собственных векторов для sklearn.decomposition.pca
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Простые участки собственных векторов для sklearn.decomposition.pca
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Библиотека C ++ для поиска собственных значений и собственных векторов матрицы [закрыто]
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Ошибка с sklearn.decomposition.NMF, когда матрица W передается методу fit_transform().
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»