Использование PCA для уменьшения размерности. Почему не отображаются все цифры на графике? - PullRequest
1 голос
/ 13 апреля 2020

Я использовал набор данных Digits от Sklearn и попытался уменьшить размерность с 64 до 2:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotib inline
from sklearn.decomposition import PCA
from sklearn.datasets import load_digits

digits = load_digits()
digits_df = pd.DataFrame(digits.data,)
digits_df["target"] = pd.Series(digits.target)

pca = PCA(n_components=2)

digits_pca = pca.fit_transform(digits_df.iloc[:,:64])
digits_df_pca = pd.DataFrame(digits_pca,
                            columns =["Component1","Component2"])

finalDf = pd.concat([digits_df_pca, digits_df["target"]], axis = 1)

plt.figure(figsize=(10,10))
sns.scatterplot(data=finalDf,x="Component1", y = "Component2",hue="target",
               )

График:

enter image description here

Единственные цифры на графике - 0,3,6,9. Почему я не вижу другие пять цифр?

1 Ответ

1 голос
/ 13 апреля 2020

Проверьте свои данные, если все этикетки доступны с использованием набора.

Если да, то вы можете попробовать

sns.scatterplot(data=finalDf,x="Component1", y = "Component2",hue="target",
               legend = 'full')

Рабочий код:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotib inline
from sklearn.decomposition import PCA
from sklearn.datasets import load_digits

digits = load_digits()
digits_df = pd.DataFrame(digits.data,)
digits_df["target"] = pd.Series(digits.target)

pca = PCA(n_components=2)

digits_pca = pca.fit_transform(digits_df.iloc[:,:64])
digits_df_pca = pd.DataFrame(digits_pca,
                            columns =["Component1","Component2"])

finalDf = pd.concat([digits_df_pca, digits_df["target"]], axis = 1)

plt.figure(figsize=(10,10))
palette = sns.color_palette("bright", 10)
sns.scatterplot(data=finalDf,x="Component1", y = "Component2",hue="target",
               legend = 'full', palette = palette)

enter image description here

...