Artikel

Artikel

Analisis Data dengan Visualisasi: PCA, LDA, dan Parallel Coordinates

Ringkasan: Dalam artikel ini, kita akan membahas teknik visualisasi data yang digunakan untuk menganalisis dataset Wine. Kita akan menggunakan metode PCA (Principal Component Analysis), LDA (Linear Discriminant Analysis), dan Parallel Coordinates untuk memvisualisasikan data.

Metode 1: Principal Component Analysis (PCA)

Dalam metode ini, kita menggunakan kelas PCA dari library scikit-learn untuk mengurangi dimensi dataset menjadi dua dimensi. Kita lalu menggunakan plotter matplotlib untuk memvisualisasikan hasilnya.

from sklearn.decomposition import PCA
import pandas as pd
import matplotlib.pyplot as plt

pca = PCA(n_components=2) # 2-dimensional PCA
pca_transformed = pd.DataFrame(pca.fit_transform(X_norm, y))

plt.scatter(pca_transformed[y==1][0], pca_transformed[y==1][1], label='Class 1', c='red')
plt.scatter(pca_transformed[y==2][0], pca_transformed[y==2][1], label='Class 2', c='blue')
plt.scatter(pca_transformed[y==3][0], pca_transformed[y==3][1], label='Class 3', c='lightgreen')

plt.legend()
plt.show()

Metode 2: Linear Discriminant Analysis (LDA)

Dalam metode ini, kita menggunakan kelas LDA dari library scikit-learn untuk mengurangi dimensi dataset menjadi dua dimensi. Kita lalu menggunakan plotter matplotlib untuk memvisualisasikan hasilnya.

from sklearn.discriminant_analysis import LDA
import pandas as pd
import matplotlib.pyplot as plt

lda = LDA(n_components=2) # 2-dimensional LDA
lda_transformed = pd.DataFrame(lda.fit_transform(X_norm, y))

plt.scatter(lda_transformed[y==1][0], lda_transformed[y==1][1], label='Class 1', c='red')
plt.scatter(lda_transformed[y==2][0], lda_transformed[y==2][1], label='Class 2', c='blue')
plt.scatter(lda_transformed[y==3][0], lda_transformed[y==3][1], label='Class 3', c='lightgreen')

plt.legend()
plt.show()

Metode 3: Parallel Coordinates

Dalam metode ini, kita menggunakan library pandas untuk memvisualisasikan dataset dengan koordinat paralel. Kita lalu menggunakan plotter matplotlib untuk memvisualisasikan hasilnya.

import pandas as pd
import matplotlib.pyplot as plt

plot_feat = ['MalicAcid', 'Ash', 'OD280/OD315', 'Magnesium','TotalPhenols']
data_norm = pd.concat([X_norm[plot_feat], y], axis=1)

parallel_coordinates(data_norm, 'Class')
plt.show()

Pemilihan Metode

Metode yang digunakan tergantung pada dataset dan informasi yang kita ingin ambil dari dataset. PCA dan LDA berguna untuk menemukan batas cluster dalam data, sementara plot matrix atau koordinat paralel akan menunjukkan perilaku khusus dari fitur-fitur dalam dataset.

Pembahasan

Saya telah memposting artikel ini di Jupyter notebook; jika Anda ingin memiliki salinan notebook atau memiliki pertanyaan tentang postingan saya, silakan menghubungi saya melalui email pada domain virginia.edu.


Mengcreate Scatter Plot untuk Setiap Dimensi dengan Ndarray

Saya memiliki ndarray dengan bentuk (13, 2236, 1866). Saya ingin membuat plot scatter untuk setiap dimensi dengan semua dimensi lainnya, misalnya: dim1 + dim2, dim1 + dim3, dim1 + dim4, …, dim2 + dim3, dan seterusnya.

Saat ini, saya telah menulis skrip yang menggunakan loop while namun tidak dapat mencari semua kemungkinan.

Skrip saat ini

array = the ndarray
d = 0
while d+1 < 13:
 x = array[d].reshape(-1)
 y = array[d+1].reshape(-1) 
 plt.figure(figsize=(8,6))
 plt.scatter(x, y, s=5, linewidth=0)
 plt.xlabel('B{band1}'.format(band1=str(d+1)))
 plt.ylabel('B{band2}'.format(band2=str(d+2)))
 plt.show()
 d = d+1

Namun, skrip ini hanya mencari kemungkinan B1+B2, B1+B3, …, dan seterusnya. Saya ingin membuat skrip yang dapat mencari semua kemungkinan.

Mengapa

Saya ingin membuat skrip yang dapat mencari semua kemungkinan karena saya ingin memvisualisasikan dataset dengan cara yang lebih baik. Dengan menggunakan koordinat paralel, saya dapat melihat perilaku khusus dari fitur-fitur dalam dataset dan menemukan pattern yang tidak terlihat sebelumnya.

Saya harap artikel ini dapat membantu Anda dalam menganalisis dataset dengan visualisasi.