問題タブ [naivebayes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
87 参照

machine-learning - NaiveBayes Classifier: 1 つのクラスのすべてのファイルを連結する必要がありますか?

単純な単純ベイズ分類器を実装していますが、クラスの条件付き確率 (P(d|c))を適切に計算する方法がわかりませんでした。完全を期すために、使用されている用語について簡単に説明したいと思います。単純ベイズ確率は次のように計算されます。

ここに画像の説明を入力

c は任意のクラスを表し、d はドキュメントです。x = {x1,x2,...,xn} を n 個の特徴のリスト (例: 50 個の最も頻繁なバイグラム) とします。

私のトレーニング セットには i 個のクラス (c_i というフォルダーで表される) があり、それぞれに k 個のドキュメント (通常のテキスト ファイルで表される) があります。

事前確率 P(c)は簡単に計算できます。

ここに画像の説明を入力

今、私はP(d|c)を計算したいと思います。これは

ここに画像の説明を入力

P(x_i|c) の計算方法がよくわかりません。機能 x_i (バイグラム "th" としましょう) を取り上げ、それがクラス c にどのくらいの頻度で出現するかを確認します。しかし、どうすればいいですか?各クラスは k 個のドキュメントで表されます。これらすべてのファイルを連結する必要がありますか? 後で、「すべての機能の合計数」で割る必要があります。これは、すべての (連結された) ドキュメントにおけるバイグラム「th」の頻度でしょうか?

0 投票する
1 に答える
379 参照

java - リストとしての REXP は出力を返さない

Java コードがあり、Rserve を使用して Java 内で R コードを実行しています。ここに私のコードの一部があります:

問題は、次を返すことです。

正しい出力 (Rserve を使用しない - R セッションで直接実行) は次のようになります。

0 投票する
0 に答える
842 参照

python - 単純ベイズ チケット分類 Python

現在、チケット システムから 2 つの列を持つ CSV エクスポートがあります。

簡単な説明とクラス。

どちらも、チケットをログに記録するときにエージェントによって作成されます。例えば

  • データのバックアップが機能していません,バックアップ
  • グループ、メモのメールの変更
  • バックアップ ディレクトリが見つかりません,バックアップ
  • メール > グローバル - Lotus Notes,Notes

Python を使用して Naive Bayes プログラムを作成するように依頼されました。このプログラムは、CSV ファイルの短い説明を読み取り、それを分類する方法を決定します。

6 つの異なるクラスに分類された 329 枚のチケットがあります。

それぞれのカウントは次のとおりです。

  • クラス1 60
  • クラス2 77
  • クラス3 65
  • クラス4 16
  • クラス5 18
  • Class6 93

通常の !"£$%^&*()<>,./?:;@' を除く、短い説明で使用されるすべての単語を含む 6 つの異なる辞書 (クラスごとに 1 つ) を作成する必要があると考えていました。 #~][{}

次に、プログラムを実行すると、nltk を使用して短い説明をトークン化し、それをすべての辞書と比較して、最も一致するものがあればクラスを決定します。

私はこれを正しい方法で行っていますか?サンプルには何枚のチケットを使用すればよいですか?

以下は私が現時点で持っているものです。基本的に、クラスにちなんで名付けられたcsvファイルを実行し、句読点を削除した別のファイルを出力します。すべての単語は小文字で個別のセルです。このデータは辞書として使用されます。私がこのすべてを正しい方法で行っているかどうかはわかりません。

編集: 2列のcsvファイルからデータを取り込む次の使用を開始しました:

確かに、トレーニング データとテスト データのより良いサンプル サイズを取得する必要があるだけで、短い説明の csv をフィードして、計算されたクラスで更新します。

機能の観点からは、明らかな間違いを犯していない限り、機能しているように見えますか?

0 投票する
1 に答える
1613 参照

r - Naive Bayes の場合、caret パッケージと klaR パッケージの速度の違い

Naive Bayes モデルを実行していますが、klaRパッケージを直接使用すると非常に高速で、標準のラップトップで計算するのに 1 秒もかかりません。

mod <- NaiveBayes(category ~ ., data=training, na.action = na.omit)

ただし、caretパッケージのtrain()インターフェイス (上記の関数の単なるラッパーだと思っていた) を使用すると、非常に長い時間がかかります。

mod <- train(category ~ ., data=training, na.action = na.omit, method="nb")

これは、trainデフォルトでリサンプリングが含まれているためだと思います。含めてみtrControl = trainControl(method = "none")ましたが、次のエラーが表示されました。

Error in train.default(x, y, weights = w, ...) : Only one model should be specified in tuneGrid with no resampling

これが発生する理由や、2 つの関数の速度の違いに関する一般的な考えはありますか?

また、速度の違いが数式インターフェイスに関連している可能性はありますか? 私の予測因子のいくつかは、100 レベルを超える因子です。

0 投票する
1 に答える
1157 参照

r - naiveBayes を使用してクラス変数を予測する

パッケージnaiveBayes内の関数を使用しようとしました。e1071プロセスは次のとおりです。

これまでのところ、すべて問題ありません。次のステップでは、新しいデータ ポイントの作成を試み、naivebayes モデル ( model) を使用してクラス変数 ( ) を予測しSpecies、トレーニング データ ポイントの 1 つを選択しました。

結果は次のとおりです。

と奇妙です。私が使用したデータポイントtestは、データセットの行ですiris。実際のデータに基づくと、このデータ ポイントのクラス変数は次のsetosaとおりです。

そしてnaiveBayes正しく予測されました:

しかし、testデータ ポイントを予測しようとすると、間違った結果が返されます。1 つのデータ ポイントのみの予測を探しているのに、予測どおりに 4 行が返されるのはなぜですか? 私は間違っていますか?

0 投票する
1 に答える
5904 参照

python - 10 分割交差検証を使用して、多項単純ベイズのクラスごとの適合率と再現率を示す分類レポートを取得します。

マルチクラス分類問題に NB 分類子を使用する次のコードがあります。この関数は、精度を保存し、後で平均を出力することにより、相互検証を実行します。代わりに私が欲しいのは、最終的に平均精度スコアではなく、クラスごとの精度と再現率を指定する分類レポートです。

相互検証を実行しない場合、私がしなければならないことは次のとおりです。

そして、次のようなレポートが表示されます。

クロスバリデーションでも同様のレポートを取得するにはどうすればよいですか?

0 投票する
1 に答える
2374 参照

algorithm - Network-only-bayes-classifier の疑似コード

igraphと を使用して、単変量ネットワーク データの分類ツールキットを実装しようとしていますpython

ただし、私の質問は、実際にはプログラミングではなく、リレーショナル分類領域のアルゴリズムに関する質問です。

私はNetworked Data paper の分類に従っています。

この論文で説明されているリレーショナル分類器の 1 つである" Network-Only Bayes Classifier " (NBC) が何を指しているのか理解に苦慮しています。

Naive Bayes先ほど、bag of words 特徴表現を使用してテキスト データの分類子を実装しました。そして、Naive Bayesテキストデータのアイデアは私の頭の中では明らかです。

この方法(NBC)は、同じ考え方を単純に関係分類領域に翻訳したものだと思います。しかし、方程式で使用されている表記法に混乱しているため、何が起こっているのかわかりませんでした。また、この論文で使用されている表記法についても質問があります

NBC は紙面14 ページで説明されていますが、

ここに画像の説明を入力

概要:

論文の 14 ページで説明されている「 Network-Only Bayes Classifier」(NBC)の疑似コードが必要です。

擬似コード表記:

  1. vsグラフの頂点のリストを呼び出しましょう。len(vs)長さです。vs[i]は i 番目の頂点です。
  2. vs[i].class単変量0および二値のシナリオがあると仮定しましょう1
  3. すべてのノードがローカル分類器によって計算される初期ラベルを持つように、前にローカル分類器を実行すると仮定しましょう。私はリレーショナル分類子の部分にのみ興味があります。
  4. v予測しようとしている頂点を呼びましょう。v.neighbors()これは の隣接する頂点のリストですv
  5. すべての辺の重みが であると仮定しましょう1

ここで、次の疑似コードが必要です。

編集:

あなたの仕事をより簡単にするために、私はこのを行いました. 最後の 2 つの方程式の答えが必要です。