Thắc mắc StandardScaler().fit_transform()


#1

Mọi người cho em hỏi tại sao a[0] và b[0] sau khi thực hiện StandardScaler().fit_transform() lại không giống nhau ạ? Và làm sao để cho b[0] có thể chuyển về giống a[0] sau khi StandardScaler().fit_transform()? Cảm ơn mọi người.


#2

fit_transform là một hàm viết tắt của (fit) và (transform). Với a thì fit với cả ba vector bạn cho vào Với b thì chỉ fit với 1 vector thôi, nên đến lúc transform thì hai cái scaler đấy có mean và std khác nhau. Về đọc lại xem standardlization là cái gì đi đã rồi hãy dùng nhé.


#3

Mỗi lần khi gọi fit_transform(data) thì hàm sẽ tính toán mean và Standard deviation dựa trên data và sau đó sẽ scale data. Do vậy, scaler và scaler2 của bạn có input khác nhau nên nó sẽ scale a và b khác nhau. Mình thường thấy khi preprocessing data cho ML thì chỉ fit_transform(x_train) scale x_train một lần và sao đó gọi transform(x_test) để scale x_test. Vậy sẽ đảm bảo dữa liệu được scale giống nhau. image


#4

2 data khác nhau a và b thì đương nhiên scaler ra kết quả khác nhau (vì mean + std khác nhau ở 2 tập) Bạn lưu ý trong thực tế ví dụ a là tập training, b là testing thì người ta chỉ fit trên tập a và transform trên cả a và b