質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

4292閲覧

scikit-learnでのsample_weightを使用した重み付け

miyauchi

総合スコア6

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/05/09 20:32

scikit-learnを使用した学習モデルの作成で
ラベルごとに特徴量の重み付けをしたいのですが上手くいきません。
sample_weightにラベルの種類だけ重みを指定するのではないのでしょうか?

環境:python 3.6.8
エラー:ValueError: operands could not be broadcast together with shapes
サンプルコード:

  • import

from sklearn.naive_bayes import BernoulliNB

  • 特徴量

X = np.array([[1,2,3,4,5,6,7,8],
[1,1,3,4,5,5,5,5],
[2,1,2,4,4,3,3,3],
[2,2,2,4,9,3,3,3]])

  • ラベル

Y = np.array([1, 2, 3, 1])
weight = np.array([1, 3.2, 0.2])

  • 学習

model = BernoulliNB()
predict = model.fit(X, Y, sample_weight = weight)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

sample_weightは「サンプルの重み」ですから、指定するならサンプル数と同じ要素数の配列である必要があります。

sample_weightarray-like of shape (n_samples,), default=None

sklearn.naive_bayes.BernoulliNB — scikit-learn 0.22.2 documentation

ラベルごと、というのはつまりクラスごとに重みを指定したいのでしょうか。ナイーブベイズですからclass_priorでクラスごとの事前確率を指定することはできますが、ある程度動作原理に関する知識がないと使いづらいかもしれません。

投稿2020/05/09 21:47

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyauchi

2020/05/09 22:38 編集

回答誠にありがとうございます。配列の要素数だけ必要なのですね。 > ラベルごと、というのはつまりクラスごとに重みを指定したいのでしょうか ご認識の通りです。クラスごとにデータ量の偏りがあるのを調整したいと考えているのですが documentのclass_priorを見ると"If specified the priors are not adjusted according to the data."と あります。 これは指定しない場合は自動的に特徴量の重み付けがされるという理解で合ってますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問