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.png

lalu ini adalah gambar nilai setelah di minmax dan nilai saat inverse

minmax2.png

kenapa gak bisa kembali ke nilai awal dataset saya ya kak ?

Mohon bantuannya kak .. terimakasih sebelumnyaa..

avatar heidynd
@heidynd

1 Kontribusi 0 Poin

Diperbarui 2 tahun yang lalu

1 Jawaban:

<div>Untuk alasan mengapa tidak bisa ditransform inverse saya belum mengulik lebih jauh<br><br>namun saya membuatkan rumus matematikanya untuk melakukan inverse secara manual<br><br>*ada contoh script di bawah<br><br>kamu bisa gunakan :&nbsp;<br>value * (maksimum - minimum) + minimum<br><br>rumus tersebut didapatkan dari inverse rumus scaling max min nya yaitu :&nbsp;<br>(value - minimum) / (maksimum - minimum)<br><br>jadi strateginya adalah kamu simpan nilai max dan min dari dataset aslinya ke dalam variabel penampung (untuk nilai max dan min)<br><br>agak sedikit tricky untuk menampung nilai max dan min pada sebuah dataframe series (*karena akan terjadi error saat melakukan inverse nanti)<br><br>kemudian lakukan scaling min max seperti yang kamu lakukan..<br>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)<br><br>kemudian gunakan rumus inverse yang telah saya buat di atas<br><br>berikut script contoh :<br><br></div><pre>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)</pre>

avatar insanz01
@insanz01

90 Kontribusi 56 Poin

Dipost 2 tahun yang lalu

Login untuk ikut Jawaban