Bagaimana skala array array yang ditandatangani mulai dari 0 hingga 1?

Jawaban:

25

Ini disebut normalisasi berbasis kesatuan. Jika Anda memiliki vektor , Anda bisa mendapatkan versi yang dinormalkan, katakan Z , dengan melakukan:XZ

Z=Xmin(X)max(X)min(X)
stochazesthai
sumber
1
Pendekatan ini juga dikenal sebagai normalisasi min-max (karena kami menggunakan nilai min dan max)
Shagun Sodhani
Apakah boleh menggunakan metode ini untuk menormalkan nilai yang mewakili persentase dan bisa negatif tetapi selalu lebih tinggi dari -2% dan lebih rendah dari 30%? Bukankah lebih sulit bagi jaringan saraf untuk mendapatkan petunjuk makna nilai jika saya menormalkannya dengan cara ini?
Ivan
3

Temukan angka positif terbesar dan angka terkecil (paling negatif) dalam array. Tambahkan nilai absolut dari angka terkecil (paling negatif) ke setiap nilai dalam array. Bagilah setiap hasil dengan selisih antara jumlah terbesar dan terkecil.

McDuffee
sumber
@ Jonathan: tidak masalah asalkan kedua nilai dari array yang sama, asli atau diperbarui. Karena angka yang sama ditambahkan ke setiap nilai, perbedaan antara minimum dan maksimum tetap sama.
RemcoGerlich
1

katakanlah Anda memiliki vektor / array nilai v = [1, -2, 3]

minV = Math.min.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] -= minV;}
maxV = Math.max.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] /= ( maxV - minV );}

Output pada akhirnya akan menjadi v = [0.6, 0, 1]. Penjelasan:

  1. Mendorong seluruh rentang nilai mulai dari 0, sehingga kami tidak memiliki negatif

  2. Membagi nilai dengan rentang (maks - min), sehingga maks akan menjadi 1

device_exec
sumber
1

Sebelum Anda melakukan itu, Anda mungkin ingin memeriksa outliers. Katakanlah 99% data berada dalam kisaran (-5, 5), tetapi seorang pria kecil mengambil nilai 25.0. Array yang dinormalkan akan mengelompok di sekitar (0, 0,3), dan itu akan menyebabkan masalah bagi jaringan saraf untuk belajar.

horaceT
sumber