为什么我可以调用原始数据中的键来绘制 PCA numpy.ndarray?
Why can I call upon a key from the original data to a plot for a PCA numpy.ndarray?
你好,我有一个理论问题来自一个运行良好的代码。
我是 运行 来自 sklearn 的 load_breast_cancer 数据集的 PCA。在 运行 PCA 之后,我根据前两个主要成分绘制数据,我知道我可以通过原始 load_breast_cancer 数据集中的键为数据点着色,即“目标”。
我特别在意的代码是我plot的时候写的"c=cancer['target']"。由于 x_pca 是形状为 (569, 2) 的 numpy.ndarray,因此 'target' 列如何通过所有 PCA 保留并特别缩放?
代码如下:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
#importing dataset
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
df = pd.DataFrame(cancer['data'],columns=cancer['feature_names'])
#scalling
scaler = StandardScaler()
scaler.fit(df)
scaled_data = scaler.transform(df)
# PCA
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(scaled_data)
x_pca = pca.transform(scaled_data)
#Plotting
plt.figure(figsize=(8,6))
#Note that it is an array, not a dataframe so brackets refer to order
plt.scatter(x_pca[:,0],x_pca[:,1],c=cancer['target'],cmap='plasma')
plt.xlabel('First PC')
plt.ylabel('Second PC')
谢谢!
您似乎 运行 df
通过管道,并且 df
不包括 target
作为列。所以在这个过程中并没有转化。
你好,我有一个理论问题来自一个运行良好的代码。
我是 运行 来自 sklearn 的 load_breast_cancer 数据集的 PCA。在 运行 PCA 之后,我根据前两个主要成分绘制数据,我知道我可以通过原始 load_breast_cancer 数据集中的键为数据点着色,即“目标”。
我特别在意的代码是我plot的时候写的"c=cancer['target']"。由于 x_pca 是形状为 (569, 2) 的 numpy.ndarray,因此 'target' 列如何通过所有 PCA 保留并特别缩放?
代码如下:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
#importing dataset
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
df = pd.DataFrame(cancer['data'],columns=cancer['feature_names'])
#scalling
scaler = StandardScaler()
scaler.fit(df)
scaled_data = scaler.transform(df)
# PCA
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pca.fit(scaled_data)
x_pca = pca.transform(scaled_data)
#Plotting
plt.figure(figsize=(8,6))
#Note that it is an array, not a dataframe so brackets refer to order
plt.scatter(x_pca[:,0],x_pca[:,1],c=cancer['target'],cmap='plasma')
plt.xlabel('First PC')
plt.ylabel('Second PC')
谢谢!
您似乎 运行 df
通过管道,并且 df
不包括 target
作为列。所以在这个过程中并没有转化。