fit&transformとfit transformの違い


ずっと

  • 機械学習を開始するとき、いくつかのコードを参考にして、データセットの分離、学習-変換コードが少し異なることを発見しました.これらのコードの間にどんな違いがあるか知りたいです.

  • ビッグデータ分析記事を準備している初心者なので、気軽に読んでほしいです.
  • なぜ
  • fit()とtransform()を同時に使用するのか
    これは、学習データセットでfit()で変換の基礎設定を設定し、それに基づいて学習データの変換()を行い、学習データで設定した変換の基礎設定を直接テストデータに適用するためである.
  • すなわち、()学習データセットに適合するScalerを用いて試験データを変換する場合、試験データから()を再フィッティングする必要はなく、このScalerを用いて変換()を実行する必要がある.
    例1
    # 붓꽃 데이터 세트를 로딩합니다.
    iris = load_iris()
    iris_data = iris.data
    iris_label = iris.target
    X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, test_size=0.2, random_state=2)
    # MinMaxScaler() Scaler객체 생성.
    scaler = MinMaxScaler()
    # 학습 데이터에 대해서 fit(), transform() 수행.
    scaler.fit(X_train)
    scaled_X_train = scaler.transform(X_train)  # ---> scaled_X_train = scaler.fit_transform(X_train) 과 같이 한 라인으로 대체 될 수 있습니다. 
    
    # 테스트 데이터에서는 다시 fit(), fit_transform()을 수행하지 않고 transform만 수행.
    scaled_X_test = scaler.transform(X_test)
    
    lr = LogisticRegression()
    lr.fit(scaled_X_train, y_train)
    pred = lr.predict(scaled_X_test)
    print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred))
    
    예측 정확도: 0.9333
    例2
    # 붓꽃 데이터 세트를 로딩합니다.
    iris = load_iris()
    iris_data = iris.data
    iris_label = iris.target
    # MinMaxScaler() Scaler객체 생성.
    scaler = MinMaxScaler()
    # 학습 데이터, 테스트 데이터로 나누기 전에  fit_transform()을 이용해 변환
    scaled_iris_data = scaler.fit_transform(iris.data)
    
    # scale된 iris_data로 학습과 테스트 데이터를 나눔.
    X_train, X_test, y_train, y_test = train_test_split(scaled_iris_data, iris_label,
                                                        test_size=0.2, random_state=2)
    
    lr = LogisticRegression()
    lr.fit(scaled_X_train, y_train)
    pred = lr.predict(scaled_X_test)
    print('예측 정확도: {0:.4f}'.format(accuracy_score(y_test,pred)))
    예측 정확도: 0.9333
    n/a.結論
    トレーニングデータの変換基準でテストセットに適用する必要があります.
    例1に示すように、データセットが切断された後にfit transform()を列車に入れるか、testにのみ変換を適用して実行を続行する
    例2に示すように、データセット全体をスケーリングし、データセットを分離する
    例2のようなデータは少ないので、例1のようにすると便利です.
    リファレンス
    https://subinium.github.io/MLwithPython-3-3/