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.