Membuat Scatter Matrix Setelah Normalisasi

Membuat Scatter Matrix Setelah Normalisasi

Pandas scatter matrix memiliki kekurangan dalam desainnya. Yaitu, plot KDE atau histogram pada diagonal untuk sisi yang menampilkan tick dan label lainnya. Hal ini mengharuskan kita untuk melakukan normalisasi sebelum membuat scatter matrix.

Contoh kode berikut menunjukkan cara membuat scatter matrix setelah normalisasi:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# Membuat dataset yang akan digunakan
data = {'A': [1, 2, 3, 4, 5], 
 'B': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

# Normalisasi data menggunakan MinMaxScaler
scaler = MinMaxScaler()
scaled_df = scaler.fit_transform(df)

# Membuat scatter matrix setelah normalisasi
import matplotlib.pyplot as plt

plt.scatter(scaled_df[:, 0], scaled_df[:, 1])
plt.xlabel('A')
plt.ylabel('B')
plt.show()

Masalah dengan LDA

LDA (Linear Discriminant Analysis) adalah algoritma untuk mengklasifikasikan data berdimensi tinggi menjadi dua kelas. Namun, dalam beberapa kasus, LDA dapat mengalami error ketika mencoba menghitung eigenvector.

Contoh kode berikut menunjukkan cara melakukan LDA manual:

import numpy as np

def LDAnalysis_manual(X, y):
 n_features = X.shape[1]
 n_classes = len(np.unique(y))

 # Hitung mean vectors
 mean_vectors = []
 for cl in range(n_classes):
 mean_vectors.append(np.mean(X[y == cl], axis=0))

 # Hitung in-class scatter matrix
 S_W = np.zeros((n_features, n_features))
 for cl, mv in zip(range(1, n_classes), mean_vectors):
 class_sc_mat = np.zeros((n_features, n_features)) # each class' scatter matrix
 for row in X[y == cl]:
 row, mv = row.reshape(n_features, 1), mv.reshape(n_features, 1) # column vectors
 class_sc_mat += (row - mv).dot((row - mv).T)
 S_W += class_sc_mat # sum class scatter matrices

 # Hitung between-class scatter matrix
 S_B = np.zeros((n_features, n_features))

 for i, mean_vec in enumerate(mean_vectors):
 n = X[y == i + 1].shape[0]
 mean_vec = mean_vec.reshape(n_features, 1) # make column vector
 overall_mean = overall_mean.reshape(n_features, 1)
 S_B += n * (mean_vec - overall_mean).dot((mean_vec - overall_mean).T)

 # Hitung eigenvectors dan eigenvalues
 eig_vals, eig_vecs = np.linalg.eig(np.linalg.inv(S_W).dot(S_B))

 return eig_vals, eig_vecs

X = ... # isi dengan dataset Anda
y = ... # isi dengan label dataset Anda

eig_vals, eig_vecs = LDAnalysis_manual(X, y)

Namun, dalam beberapa kasus, LDA dapat mengalami error ketika mencoba menghitung eigenvector. Kita perlu memeriksa ulang kode LDA manual dan memastikan bahwa tidak ada kompleksitas yang berlebihan.

Leave a comment