1. ホーム
  2. python

scikit-learnを用いたナイーブベイズ分類器におけるカテゴリと連続データの混合

2023-09-07 20:42:50

質問

私はPythonでscikit-learnを使用して、特定の顧客の性別を予測するための分類アルゴリズムを開発しています。とりわけ、私はナイーブベイズ分類器を使用したいのですが、私の問題は、カテゴリデータ(例: "オンライン登録"、 "メール通知を受け入れる"など)と連続データ(例: "年齢" " 会員期間"など)の混合を持っているということです。scikitはあまり使ったことがないのですが、連続データにはガウス型ナイーブベイズ、カテゴリデータにはベルヌーイナイーブベイズが適しているのでしょう。しかし、私は しかし、私はカテゴリデータと連続データの両方をモデルに入れたいので、これをどのように扱えばいいのかよくわかりません。どんなアイデアでも大いに感謝します!

どのように解決するのですか?

少なくとも2つの選択肢があります。

  • 各連続変数のパーセンタイルを計算し、ビンの境界としてパーセンタイルを使用して連続変数をビン化することによって、すべてのデータをカテゴリ表現に変換します。例えば、人の身長の場合、次のビンを作成します: "very small", "small", "regular", "big", "very big" 各ビンが学習セットの母集団のおよそ20%を含むことを保証します。scikit-learnにはこれを自動的に行うユーティリティはありませんが、自分で行うにはそれほど複雑ではないはずです。そして、データのカテゴリ表現にユニークな多項式NBをフィットさせます。

  • データの連続部分にはガウスNBモデルを、カテゴリ部分には多項NBモデルを独立にフィットさせる。その後、クラス割り当て確率を取ることで全てのデータセットを変換する(但し、クラス割り当て確率は predict_proba メソッドで)新しい特徴量とする。 np.hstack((multinomial_probas, gaussian_probas)) とし、新しい特徴量に対して新しいモデル(例えば新しいガウスNB)を再フィットする。