データのスケーリングについて教えてください。
資料を見ながらscikit-learnのMinMaxScalerを使ってデータを0から1の範囲にスケーリングするという内容を試してみました。
サンプルのデータセットに対して実行しているしてみて、訓練データが0~1の範囲で変換されていることが確認できました。
ただ、テストデータに対して同様の処理をすると0~1の範囲を超えており1.3のような値が出ている特徴量が含まれていました。
すべてのデータが0~1の間に入ると思っていたのですが違うのでしょうか?
また、訓練データをスケーリングする際は以下のようにfitメソッドに訓練データを渡しているのですが、
テストデータに対してスケーリングする際はtransformに渡しているだけでした。
fitメソッドにテストデータを渡さないことが疑問だったのですが、訓練データ、テストデータで別々にしないのはどういう理由があるからでしょうか?
的外れな質問で申し訳ありませんがアドバイス宜しくお願い致します。
python
1from sklearn.preprocessing import MinMaxScaler 2 3scaler = MinMaxScaler() 4 5# 訓練データスケーリング 6scaler.fit(X_train) 7 8X_train_scaled = scaler.transform(X_train) 9 10print(X_train_scaled.shape) 11print(X_train.min(axis=0)) 12print(X_train.max(axis=0)) 13print(X_train_scaled.min(axis=0)) 14print(X_train_scaled.max(axis=0)) 15print(X_train_scaled) 16 17# テストデータスケーリング 18X_test_scaled = scaler.transform(X_test) 19print('X_test_scaled min : \n{}'.format(X_test_scaled.min(axis=0))) 20print('X_test_scaled max : \n{}'.format(X_test_scaled.max(axis=0)))
コード全文
python
1import numpy as np 2import matplotlib.pyplot as plt 3import pandas as pd 4import mglearn 5from sklearn.model_selection import train_test_split 6from sklearn.ensemble import GradientBoostingClassifier 7from sklearn.datasets import load_breast_cancer 8 9cancer = load_breast_cancer() 10 11X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state=42) 12 13print(X_train.shape) 14print(X_test.shape) 15print(y_train.shape) 16print(y_test.shape) 17 18from sklearn.preprocessing import MinMaxScaler 19 20scaler = MinMaxScaler() 21 22# 訓練データスケーリング 23scaler.fit(X_train) 24 25X_train_scaled = scaler.transform(X_train) 26 27print(X_train_scaled.shape) 28print(X_train.min(axis=0)) 29print(X_train.max(axis=0)) 30print(X_train_scaled.min(axis=0)) 31print(X_train_scaled.max(axis=0)) 32print(X_train_scaled) 33 34# テストデータスケーリング 35X_test_scaled = scaler.transform(X_test) 36print('X_test_scaled min : \n{}'.format(X_test_scaled.min(axis=0))) 37print('X_test_scaled max : \n{}'.format(X_test_scaled.max(axis=0))) 38 39
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/21 05:46
2018/08/21 05:54