Tôi đang sử dụng Brain để huấn luyện mạng thần kinh trên một bộ tính năng bao gồm cả giá trị dương và âm. Nhưng Brain yêu cầu các giá trị đầu vào từ 0 đến 1. Cách tốt nhất để bình thường hóa dữ liệu của tôi là gì?
Tôi đang sử dụng Brain để huấn luyện mạng thần kinh trên một bộ tính năng bao gồm cả giá trị dương và âm. Nhưng Brain yêu cầu các giá trị đầu vào từ 0 đến 1. Cách tốt nhất để bình thường hóa dữ liệu của tôi là gì?
Câu trả lời:
Điều này được gọi là bình thường hóa dựa trên sự thống nhất. Nếu bạn có một vectơ , bạn có thể có được một phiên bản chuẩn hóa của nó, giả sử , bằng cách thực hiện:
Tìm số dương lớn nhất và số nhỏ nhất (âm nhất) trong mảng. Thêm giá trị tuyệt đối của số nhỏ nhất (âm nhất) vào mỗi giá trị trong mảng. Chia mỗi kết quả cho sự khác biệt giữa số lớn nhất và số nhỏ nhất.
nói rằng bạn có một vectơ / mảng các giá trị 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 );}
Đầu ra ở cuối sẽ được v = [0.6, 0, 1]
. Giải trình:
Đẩy toàn bộ phạm vi giá trị để bắt đầu từ 0, do đó chúng tôi không có tiêu cực
Chia các giá trị theo (tối đa - tối thiểu) của phạm vi, do đó tối đa sẽ là 1