Анализ основных компонентов с использованием sklearn и panda
Я попытался воспроизвести результаты из учебника PCA здесь ( учебник PCA), но у меня есть некоторые проблемы.
Из того, что я понимаю, я следую за шагами, чтобы применить PCA, поскольку они должны быть. Но мои результаты не похожи на результаты в учебнике (или, может быть, они есть, и я не могу их правильно интерпретировать?). При n_components=4 я получаю следующий график n_components4. Я, наверное, что-то упустил где-то, я также добавил код, который у меня есть.
Моя вторая проблема связана с обозначением точек на графике, у меня есть метки, и я хочу, чтобы каждая точка получала соответствующую метку. Я пробовал кое-что, но пока безуспешно.
Я также добавил набор данных, я сохранил его как CSV:
, Сыр, Мясо туш, Другое мясо, Рыба, Жиры и масла, Сахар, Свежий картофель, Свежий овощ, Другой овощ, Обработанный картофель, Обработанный овощ, Свежие фрукты, Зерновые, Напитки, Безалкогольные напитки, Алкогольные напитки, Кондитерские изделия Англия, 105 245 685 147 193 156 720 253 488 188 360, 1102,1472,57,1374,375,54 Уэльс, 103,227,803,160,235,175,874,265,570,203,365,1137,1582,73,1256,475,64 Шотландия, 103,242,750,122,184,147,566,171,118,220,337,957,146,215,167,149,1663326336326326452, Ирландия, Ирландия, 47,1506,135,41
Итак, есть мысли по поводу этих проблем?
`
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import decomposition
demo_df = pd.read_csv('uk_food_data.csv')
demo_df.set_index('Unnamed: 0', inplace=True)
target_names = demo_df.index
tran_ne = demo_df.T
pca = decomposition.PCA(n_components=4)
comps = pca.fit(tran_ne).transform(tran_ne)
plt.scatter(comps[0,:], comps[1, :])
plt.title("PCA Analysis UK Food");
plt.xlabel("PC1");
plt.ylabel("PC2");
plt.grid();
plt.savefig('PCA_UK_Food.png', dpi=125)
`
1 ответ
Вы можете попробовать это.
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import decomposition
# use your data file path here
demo_df = pd.read_csv(file_path)
demo_df.set_index('Unnamed: 0', inplace=True)
target_names = demo_df.index.values
tran_ne = demo_df.values
pca = decomposition.PCA(n_components=4)
pcomp = pca.fit_transform(tran_ne)
pcomp1 = pcomp[:,0]
fig, ax = plt.subplots()
ax.scatter(x=pcomp1[0], y=0, c='r', label=target_names[0])
ax.scatter(x=pcomp1[1], y=0, c='g', label=target_names[1])
ax.scatter(x=pcomp1[2], y=0, c='b', label=target_names[2])
ax.scatter(x=pcomp1[3], y=0, c='k', label=target_names[3])
ax.legend(loc='best')