Saya memiliki kumpulan data dan saya ingin mengurangi dimensi dengan metode PCA.
Saya mengimpor kumpulan data, membaginya untuk melatih dan memvalidasi set dan menerapkan PCA untuk melihat berapa jumlah varians kumulatif.

df = read_csv("train.csv")
X = df.drop(['label'], axis = 1)
y = df['label']
X_train, X_validation, y_train, y_validation = train_test_split(X, y, test_size = 0.2, random_state = 42)
model = PCA()
model.fit_transform(X_train_scaled)
variance = model.explained_variance_
cum_var = np.cumsum(variance)/np.sum(variance)

plt.figure(figsize = (15,15))
plt.bar(range(1,26), cum_var*100, alpha = 0.5, align = 'center', label = 'cummulative variance')
plt.legend()
plt.ylabel('Variance')
plt.xlabel('Principal components')

for x,y in zip(range(1,26),cum_var):
    label = "{:.2f}".format(y)
    plt.annotate(label, # this is the text
             (x,y), # this is the point to label
             textcoords = "offset points", # how to position the text
             xytext = (0,10), # distance from text to points (x,y)
             ha = 'center')
plt.show()

Saya memilih n_komponen = 16.
Bagaimana saya bisa menerapkan n_components = 16 pada X_train dan X_validation?

0
aah9 9 Juli 2020, 09:46

1 menjawab

Jawaban Terbaik

Setelah mengetahui jumlah komponen yang sesuai, Anda dapat menjalankan PCA lagi, menyetel n_components=16, dan tetap menggunakan fitur dikurangi yang baru sebagai X_train Anda:

model = PCA(n_components=16)
model.fit(X_train)
X_train = model.transform(X_train)
X_validation = model.transform(X_validation)
0
yatu 9 Juli 2020, 06:57