MinMaxScaler = scaler.inverse_transform() tidak bisa merubah nilai kembali ke nilai awal ?

Halo kakak2 saya ingin bertanya saya pakai `MinMaxscaler` untuk normalize dataset saya. tetapi ketika saya coba inverse balik kenapa gak bisa kembali ke nilai di dataset sebelumnya ya kak ?

ini nilai dataset awal saya lalu saya normalize,
minmax.pngminmax.png
lalu ini adalah gambar nilai setelah di minmax dan nilai saat inverse
minmax2.pngminmax2.png
kenapa gak bisa kembali ke nilai awal dataset saya ya kak ? 
Mohon bantuannya kak .. terimakasih sebelumnyaa..
avatar heidynd

@heidynd

1 Kontribusi 0 Poin


Jawaban

Untuk alasan mengapa tidak bisa ditransform inverse saya belum mengulik lebih jauh

namun saya membuatkan rumus matematikanya untuk melakukan inverse secara manual

*ada contoh script di bawah

kamu bisa gunakan : 
value * (maksimum - minimum) + minimum

rumus tersebut didapatkan dari inverse rumus scaling max min nya yaitu : 
(value - minimum) / (maksimum - minimum)

jadi strateginya adalah kamu simpan nilai max dan min dari dataset aslinya ke dalam variabel penampung (untuk nilai max dan min)

agak sedikit tricky untuk menampung nilai max dan min pada sebuah dataframe series (*karena akan terjadi error saat melakukan inverse nanti)

kemudian lakukan scaling min max seperti yang kamu lakukan..
agar dapat melakukan perkalian matrix (karena datasetnya berupa dataframe yang berubah menjadi numpy akibat min max scaling) maka harus ditransformasikan menjadi bentuk vektor dengan cara flatten (nanti akan ada contoh source code di bawah)

kemudian gunakan rumus inverse yang telah saya buat di atas

berikut script contoh :

dataset = pd.DataFrame([12347, 12365, 12374, 12674, 9812])

array_dataset = np.array(dataset)
maksimum = np.max(array_dataset)
minimum = np.min(array_dataset)

scaler = MinMaxScaler(feature_range=(0,1))
dataset = scaler.fit_transform(dataset)

# transform min max value
print(dataset)

dataset = dataset.flatten()
dataset = (dataset * (maksimum - minimum) + minimum)
# inverse transform min max value
print(dataset)
avatar insanz01

@insanz01

85 Kontribusi 55 Poin


Login untuk gabung berdiskusi
premium logo tube

Hey, sedang ada diskon premium untuk akses semua kelas. Lihat di sini