問題タブ [libsvm]
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.
python - ml-py svm は収束しますが、分類が間違っています
PythonとSVMを使用して分類タスクを実行しようとしています。
収集したデータから、各クラスの特徴ベクトルを抽出し、トレーニング セットを作成しました。特徴ベクトルには n 次元 (39 以上) があります。したがって、2 つのクラスについて、39 次元の特徴ベクトルのセットと、特徴ベクトルの各エントリに対応するクラス ラベルの 1 つの配列があるとします。現在、mlpy を使用して次のようなことを行っています。
#インスタンスの各エントリにラベルを割り当てる(+1/-1) (#featurevector 1 からのエントリには +1、featurevector2 には -1)
ここで何か間違いをしていますか?または、他のライブラリを使用する必要がありますか?助けてください。
python - libsvm(python)での出力の抑制
分類タスクにPythonのlibsvm(svmutils)を使用しています。分類子は正確です。ただし、次のような出力が得られます。
このダイアログを抑制する方法はありますか?分類器は完全にうまく機能します、私はただ興味があります。また、その"Accuracy"
略は何ですか?そして、なぜこれが私の場合0%なのですか?(データは80次元で重複していません。合計4つのクラスです。また、適切に正規化しています。)
python - scikits.learn 分類子から情報を抽出して C コードで使用する方法
Python で scikits.learn を使用して一連の RBF SVM をトレーニングし、結果を Pickled しました。これらは画像処理タスク用であり、テストのためにやりたいことの 1 つは、いくつかのテスト画像のすべてのピクセルに対して各分類子を実行することです。つまり、ピクセル (i,j) を中心とするウィンドウから特徴ベクトルを抽出し、その特徴ベクトルに対して各分類子を実行してから、次のピクセルに移動して繰り返します。これは、Python で行うには遅すぎます。
明確化:「これは遅すぎる...」と言うときは、scikits.learn が使用する Libsvm の内部コードでさえ遅すぎることを意味します。GPU の手動決定関数を実際に書いているので、各ピクセルでの分類が並行して行われます。
Pickle を使用して分類器をロードし、特徴ベクトルから決定がどのように計算されるかを説明するある種の属性を取得し、その情報を自分の C コードに渡すことは可能ですか? 線形 SVM の場合、重みベクトルとバイアス ベクトルを抽出し、それらを C 関数への入力として追加するだけで済みます。しかし、RBF 分類子に対して行う同等のことは何ですか? また、scikits.learn オブジェクトからその情報を取得するにはどうすればよいでしょうか?
追加:ソリューションの最初の試み。
分類子オブジェクトにはsupport_vectors_
、配列の各行としてサポート ベクターを含む属性があるようです。dual_coef_
1×len(support_vectors_)
係数の配列である属性もあります。非線形 SVM に関する標準的なチュートリアルから、次のことを行う必要があるようです。
v
テスト対象のデータ ポイントから特徴ベクトルを計算します。これは の行と同じ長さのベクトルになりますsupport_vectors_
。- の各行について
i
、そのサポート ベクターと の間support_vectors_
の 2 乗ユークリッド距離を計算します。d[i]
v
- は RBF パラメータ
t[i]
として計算gamma * exp{-d[i]}
します。gamma
- 全体を合計し
dual_coef_[i] * t[i]
ますi
。intercept_
scikits.learn 分類子の属性の値をこの合計に追加します。 - 合計が正の場合、1 として分類します。それ以外の場合、0 として分類します。
追加:このドキュメント リンクの番号付きの 9 ページで、実際にintercept_
分類子の属性がバイアス項を保持していることに言及しています。これを反映するために、上記の手順を更新しました。
classification - LibSVM: 交差検証およびテスト中の -wi オプション (重みの選択)
libSVM の重みオプションについて助けが必要です。私はある時点で混乱しています。交差検証を行う際に -wi オプションも使用する必要がありますか? もしそうなら、データ全体の計算された重みを使用するべきですか、それとも v-1 サブセットに従って計算された重みを使用すべきですか (v 分割交差検証用)? 2 番目の質問は、予測中に -wi オプションを使用する必要があるかどうかです。その場合、トレーニング中に計算された重みを使用する必要がありますか?それとも、テスト データの負のインスタンスと正のインスタンスの分布に従って重みを計算する必要がありますか?
例えば; 50 + データと 200 - データがあります。したがって、最適な c およびガンマ パラメータ値を計算した後、トレーニング中に -w1 4 -w-1 1 オプションを使用します。しかし、グリッド検索と交差検証中のトレーニングはどうでしょうか? 5 分割交差検証を実行しているとしましょう。残りの 4 つのサブセットごとにトレーニングしている間、ネガティブ インスタンスとポジティブ インスタンスの分布はおそらく変化します。では、この 5 分割交差検証中に重みを再計算する必要があるでしょうか?
また、テスト中に -w1 4 -w-1 1 オプションを使用する必要がありますか?
ありがとう
matlab - Matlabでlibsvmを使用する方法は?
私はmatlabを初めて使用し、libsvmの使用方法がわかりません。SVMを使用して一部のデータ(2つの機能を含む)を分類し、結果を視覚化するためのサンプルコードはありますか?カーネル(RBF、多項式、およびシグモイド)はどうですか?libsvmパッケージでそのreadmeファイルを見ましたが、その先頭または末尾を作成できませんでした。matlabでサポートベクターマシン(SVM)を使用した2つのクラスの分類の例を教えてください。
どんな助けでも大歓迎です。
matlab - MATLAB で SVM トレーニングを開始する方法
取得した一連の顔の特徴があり、SVM を使用して分類したいと考えています。libsvm パッケージを使用し、MATLAB を使用してトレーニングを実行する予定です。SVM については、スタンフォードの講義を見て既に読んでいます。しかし、libsvm を使用して開始する方法がわかりません。ガイダンスが必要です...
validation - LibSVMで10分割交差検証を実装する方法
私はすでにLibSVMパッケージの例を実行することができます。次に、データセットに対して10分割交差検定(MATLAB)を実行する必要があります。どうすればそれを行うことができますか?
matlab - より良い方法はどれですか?libsvm または svmclassify?
私は最近、特徴分類に svm を使用しようとしています。そうしているうちに、ある疑問が頭に浮かびました。
どちらを使用するのがより良い方法LIBSVM
ですかsvmclassify
?つまり、MATLAB でやsvmclassify
などの組み込み関数を使用することです。そういう意味では、どちらの方法がより正確で、どちらが使いやすいかということに興味がありました。svmtrain
svmclassify
MATLAB には既にバイオインフォマティクス ツールボックスがあるのに、なぜ LIBSVM を使用するのでしょうか? 関数は既に組み込まれているようなものではありませんsvmtrain
.. svmclassify
LIBSVM はどのような追加の利点をもたらしますか?
皆様のご意見をお聞かせいただければ幸いです。質問がばかげている場合はご容赦ください..
machine-learning - libsvm によって計算された決定境界を決定する方法
libsvm を使用して線形 SVM でデータを分類しています。それが生成する分離超平面 (つまり、 wx +b>0の場合にxが正のサンプルとして分類されるようなベクトルwと実数 b ) を知りたいです。ツール svm-weight はwの係数を返しますが、どうすれば b を計算できますか?
c - R で C の警告メッセージを抑制する
libsvm (C プログラム) と連携する R パッケージ e1071 から R 関数を呼び出しています。この関数は、C (printf) 警告メッセージを R コンソールに渡しています。これは、警告メッセージの形式が (warning:...) であるのに対し、R の警告メッセージは大文字 (つまり、Warning:...) であるためです。
R でこれらのメッセージを取り除くためにあらゆることを試みましたが (sink、suppressWarnings、invisible)、何も機能していないようです。
何か案は?
ありがとう!