前提
ビニング処理を行った特徴量を機械学習の学習に利用し、予測する新たなデータに対してもビニング処理して適切に予測を行いたい。
実現したいこと
モデルに学習させるための特徴量にビニング処理を行いたいと考えております。(one-hot-encodingは行わずそのまま学習に使う)
その場合、予測する新たなデータに対しても同様のビニング処理を施す必要があると理解しています。
ただ、新たなデータが学習時のビニングのどの区分に該当するのか、以下コードのCategoriesには記載がありますが、どのように処理して予測に使える状態にできるのでしょうか。
良い方法があればお教えいただければ幸いです。
発生している問題・エラーメッセージ
python
1binned = pd.cut(df['abc'],100) 2print(binned) 3 4timestamp 52018-09-07 17:15:00+00:00 (-0.00178, -0.00145] 62018-09-07 17:30:00+00:00 (0.000553, 0.000887] 72018-09-07 20:45:00+00:00 (0.000553, 0.000887] 82018-09-07 22:15:00+00:00 (0.00255, 0.00289] 92018-09-07 22:30:00+00:00 (0.00122, 0.00155] 10 ... 112022-07-31 22:45:00+00:00 (0.0102, 0.0106] 122022-07-31 23:00:00+00:00 (0.0106, 0.0109] 132022-07-31 23:15:00+00:00 (0.00989, 0.0102] 142022-07-31 23:30:00+00:00 (0.00756, 0.00789] 152022-07-31 23:45:00+00:00 (0.00622, 0.00656] 16Name: abc, Length: 133461, dtype: category 17Categories (100, interval[float64, right]): [(-0.0162, -0.0158] < (-0.0158, -0.0155] < (-0.0155, -0.0151] < (-0.0151, -0.0148] ... (0.0159, 0.0162] < (0.0162, 0.0166] < (0.0166, 0.0169] < (0.0169, 0.0172]]
> 予測する新たなデータに対しても同様のビニング処理を施す必要がある
「ビニング処理」が「sklearn.preprocessing.KBinsDiscretizer」でできること
https://emotionexplorer.blog.fc2.com/blog-entry-372.html
と同じなら、
https://teratail.com/questions/218412
の回答に書かれてる、「sklearn.preprocessing.StandardScaler」をファイル保存して、推論時にファイルから読み込む方法と同じことができるかも
ご回答ありがとうございます。
KBinsDiscretizerを初めて知りました。これを使うことで特徴量をfitとtransformで学習・変換して学習し、新たなデータに対してもtransformで変換して利用することができそうです。ご指導ありがとうございました。

回答1件
あなたの回答
tips
プレビュー