0

scikitの学習機能を使用するのではなく、手動で正規化機能を実装しようとしています。その理由は、手動で最大パラメーターと最小パラメーターを定義する必要があり、scikit Learn ではその変更が許可されないためです。

これを正常に実装して、値を 0 と 1 の間で正規化しました。しかし、実行に非常に時間がかかります。

質問: これを行うことができる別の効率的な方法はありますか? これをより速く実行するにはどうすればよいですか。

以下に示すのは私のコードです:

scaled_train_data = scale(train_data)

def scale(data):
    for index, row in data.iterrows():
        X_std = (data.loc[index, "Close"] - 10) / (2000 - 10)
        data.loc[index, "Close"] = X_std

    return data

2000 と 10 は、データセットの最小値と最大値を取得するのではなく、手動で定義した属性です。

前もって感謝します。

4

2 に答える 2

1

なぜループするのですか?あなたはただ使うことができます

train_data['close'] = (train_data['close'] - 10)/(2000 - 10) 

ベクトル化された numpy 関数を利用する。もちろん、必要に応じて、これを関数に入れることもできます。

または、線形範囲に再スケーリングする場合は、 http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.htmlを使用できます。これの利点は、保存してから、同じ方法でテスト データを再スケーリングできることです。

于 2018-10-17T05:50:56.643 に答える