为什么将此数组与两个值而不是一个值进行比较?

时间:2019-04-15 08:48:50

标签: python pandas numpy

我很难理解这段代码的含义。当数组的形状为单行(650,)时,为什么将y.values与具有两个值的元组进行比较?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split

df = pd.read_csv('readonly/mushrooms.csv')
df2 = pd.get_dummies(df)

df3 = df2.sample(frac=0.08)

X = df3.iloc[:,2:]
y = df3.iloc[:,1]


pca = PCA(n_components=2).fit_transform(X)

X_train, X_test, y_train, y_test = train_test_split(pca, y, random_state=0)


plt.figure(dpi=120)
plt.scatter(pca[y.values==0,0], pca[y.values==0,1], alpha=0.5, label='Edible', s=2)    # < --- why is y.values compared to two values instead of one???
plt.scatter(pca[y.values==1,0], pca[y.values==1,1], alpha=0.5, label='Poisonous', s=2)
plt.legend()
plt.title('Mushroom Data Set\nFirst Two Principal Components')
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.gca().set_aspect('equal')

1 个答案:

答案 0 :(得分:0)

实际上y.values是单行。在pca[y.values==0,0]中,它获得满足y.values==0条件的值。

请参阅fit_transform文档。它输出一个二维数组。