問題タブ [scikit-learn]
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 - Python / scikit-learn での距離計算のスパース実装
次のようにロードするsvmlight形式の大きな(100K x 30K)および(非常に)まばらなデータセットがあります。
スパース scipy 配列 X を返します
すべてのトレーニング ポイントのペアごとの距離を次のように計算するだけです。
残念ながら、scipy.spatial.distance の距離計算の実装は、密行列に対してのみ機能します。データセットのサイズが原因で、たとえば pdist を次のように使用することは実行不可能です。
この問題に関する疎行列距離計算の実装または回避策へのポインターは大歓迎です。
どうもありがとう
python - Scipy/Numpy/scikits - 2 つの配列に基づいて精度/再現率スコアを計算する
- ロジスティック回帰モデルを当てはめ、次を使用してトレーニング データセットに基づいてモデルをトレーニングします。
- 入力マトリックスに関連付けられたラベルを含むクロス検証データセットがあり、次のようにアクセスできます
cv[:,-1]
- トレーニング済みのモデルに対してクロス検証データセットを実行すると、予測に基づいて 0 と 1 のリストが返されます
cv_predict = model.predict(cv[:,0:-1])
質問
実際のラベルと予測されたラベルに基づいて、適合率と再現率のスコアを計算したいと考えています。numpy/scipy/scikits を使用してそれを行う標準的な方法はありますか?
ありがとうございました
python - SVMの実装、scikitsはランタイムの短縮、最速のsvmを学習します
私はscikit-learnを使用して、SVMを使用したいくつかの予測モデルの構築に取り組んでいます。約5000の例と約700の機能を含むデータセットがあります。トレーニングセットで18x17グリッド検索を行い、テストセットに最適なパラメーターを使用して、5分割交差検証を行っています。実行に予想よりもはるかに時間がかかり、次のことに気づきました。
1)個々のSVMトレーニングの反復には、1分しかかからないように見えるものもあれば、最大15分かかるものもあります。これは、異なるデータとパラメーター(Cとガンマ、rbf
カーネルを使用しています)で予想されますか?
2)余分なメモリを利用するためにWindowsで64ビットPythonを使用しようとしていますが、すべてのPythonプロセスがタスクマネージャーで1ギガでトップになっているようです。それが、ランタイム。
3)以前は32ビットを使用していて、ほぼ同じデータセットで実行していましたが、(結果を保存しませんでしたが)かなり高速だったことを覚えています。私は64ビットウィンドウ用にscikit-learnのサードパーティビルドを使用したので、32ビットPythonでこれを試す方が良いかどうかわかりませんか?(ソースhttp://www.lfd.uci.edu/~gohlke/pythonlibs/)
ランタイムを短縮する方法についての提案をいただければ幸いです。グリッド検索の検索スペースを減らすことは役立つと思いますが、最適なパラメーターの範囲さえわからないので、できるだけ大きくしたいと思います。より高速なSVM実装もある場合は、お知らせください。試してみる場合があります。
補遺:戻って、32ビットバージョンを再度実行してみました。なんらかの理由ではるかに高速です。64ビットバージョンが16時間で到達するまでに約3時間かかりました。なぜそのような違いがあるのでしょうか?
python - Python で使用可能な最速の SVM 実装
私は Python でいくつかの予測モデルを構築しており、scikits Learn の SVM 実装を使用しています。これは本当に素晴らしく、使いやすく、比較的高速です。
残念ながら、私はランタイムに制約され始めています。650 の機能を持つ約 4 ~ 5000 の完全なデータセットで rbf SVM を実行します。各実行には約 1 分かかります。しかし、5 分割クロス検証 + グリッド検索 (粗い検索から詳細な検索を使用) を使用すると、当面のタスクには少し実行できなくなります。一般的に、Python で使用できる最速の SVM 実装に関して、何か推奨事項はありますか? それ、または私のモデリングをスピードアップする方法はありますか?
LIBSVM の GPU 実装について聞いたことがありますが、これは機能するようです。Python で使用できる他の GPU SVM 実装については知りませんが、他の人にも公開されることは間違いありません。また、GPU を使用するとランタイムが大幅に増加しますか?
また、scikit で線形 SVM + 機能マップを使用して rbf SVM を近似する方法があると聞いたことがあります。人々がこのアプローチについてどう思うかはわかりません。繰り返しますが、このアプローチを使用している人は、実行時間が大幅に増加しますか?
プログラムの速度を上げるためのすべてのアイデアは大歓迎です。
python - scikit Learn を使用したランダム フォレストは .9 以下
Mac と Linux ボックスに Scikit Learn をインストールする際に奇妙な問題が発生しています。scikit Learn .9 のみがインストールされます。
このバージョンを使用してランダム フォレストを学習する方法はありますか?
python - scikits 機械学習の欠損値
scikit-learn に欠損値を持つことは可能ですか? それらはどのように表現されるべきですか?それに関するドキュメントは見つかりませんでした。
python - Pythonscikitslearn-SVMオプション
scikitsの2つのオプションがSVMクラスを学習することに興味があります。Scale_Cとシュリンクは何をしますか?ドキュメントにはあまりありませんでした。スケールCは、トレーニングデータに合わせてCパラメーターを適切にスケールできるようです。
ありがとう
python - Python sckits SVM グリッド検索と分類
私は scikits と svm の初心者で、いくつかの質問を確認したいと思います。700 個のアイテムと 35 個の機能のサンプルがあり、3 つのクラスがあります。「preprocessing.scale(X)」を使用してスケーリングされたサンプルと機能を含む配列 X があります。最初のステップは、適切な SVM パラメーターを見つけることです。ネストされた相互検証でグリッド検索を使用しています ( http://scikit-learn.org/stable/auto_examples/grid_search_digits.html#を参照)。「グリッド検索」ですべてのサンプル (X) を使用しています。グリッド検索中、データはトレーニングとテストに分割されます (StratifiedKFold を使用)。SVM パラメーターを取得したら、データをトレーニングとテストに分割する分類を実行します。実際の分類で使用するのと同じデータをグリッド検索で使用しても問題ありませんか?
python - Python 機械学習、機能選択
私は書かれたテキストに関連する分類タスクに取り組んでいますが、分類結果を改善するために何らかの「機能選択」手順を実行することがどれほど重要か疑問に思っています。
私は主題に関連する多くの機能 (約 40) を使用していますが、すべての機能が本当に関連しているかどうか、およびどの組み合わせであるかはわかりません。私は SVM (scikits) と LDAC (mlpy) を試しています。
関連する機能と無関係な機能が混在している場合、分類結果が不十分になると思います。分類の前に「機能選択手順」を実行する必要がありますか?
Scikits には、機能をランク付けできるツリーベースの RFE 手順があります。最も重要な特徴を選択し、SVM (非線形) または LDAC で実際の分類を実行するために、ツリーベースの RFE で特徴をランク付けすることは意味がありますか? それとも、同じ分類器を使用して機能をランク付けするある種のラッパー メソッドを実装する必要がありますか (機能の異なるグループで分類しようとすると、非常に時間がかかります)。
python - Pythonを使用した単純ベイズ分類器
私はscikit-learnを使用してドキュメントのTf-idfの重みを見つけ、次に単純
ベイズ分類器を使用してテキストを分類しています。ただし、ドキュメント内のすべての単語のTf-idfの重みは、いくつかを除いて負です。しかし、私が知る限り、負の値は重要でない用語を意味します。では、Tf-idf値全体をベイズ分類器に渡す必要がありますか?それらのいくつかだけを渡す必要がある場合、どうすればそれを行うことができますか?また、linearSVCと比較して、ベイズ分類器はどの程度優れているか、または劣っていますか?Tf-idfを使用する以外に、テキスト内のタグを見つけるためのより良い方法はありますか?
ありがとう