Как изменить наложение точек на графике рассеяния морского побережья - PullRequest
0 голосов
/ 25 октября 2019

Я провожу PCA в наборе данных электронной почты для спама, все в порядке, пока я не захочу отобразить основные компоненты друг против друга, pc1vspc2, pc1vspc3 и pc2vspc3. Диаграммы рассеяния работают нормально, но я хочу отобразить точки данных о спаме поверх данных, не относящихся к спаму.

Я искал способ сделать это, но не могу найти какой-либометод, который работает!

#Seperating Feautures
X = df.iloc[:,:54]
#Seperating Target, changing 0's to non-spam & 1's to spam
Y = df['Spam_Indicator'].values.tolist()
for i in range(len(Y)):
    if Y[i] == 1:
        Y[i] = 'Spam'
    else:
        Y[i] = 'Non-spam'
Y = np.asarray(Y)

#no of principal components
N = 3
col_numbering = [str(x) for x in range(1,N + 1)]

#Applies PCA reducing from 54 to N dimensions
pca = PCA(n_components = N)
X_red = pca.fit_transform(X)
X_red = pd.DataFrame(data = X_red, columns = col_numbering)

#Prints the components, explained variance and explained variance ratio
#print('Components:',pca.components_)
print('Explained Variance:' ,pca.explained_variance_)
print('Explained Variance Ratio:' ,pca.explained_variance_ratio_)


plt.figure(figsize=(20,10))
plt.subplot(1,3,1)
sns.scatterplot(x = '1', y = '2', data = X_red, hue = Y,
                alpha = .75, hue_norm = (0.7))
plt.subplot(1,3,2)
sns.scatterplot(x = '1', y = '3', data = X_red, hue = Y,
                alpha = .75, hue_norm = (0.7))
plt.subplot(1,3,3)
sns.scatterplot(x = '2', y = '3', data = X_red, hue = Y,
                alpha = .75, hue_norm = (0.7))
plt.show()

Вот изображение того, что у меня есть, чтобы вы лучше знали, о чем я спрашиваю. График рассеяния морского волка

...