問題タブ [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.
machine-learning - scikit-learnRandomForestClassifierは「予期しない」結果を生成します
sk-learnのRandomForestClassifierを二項分類タスク(正と負の例)に使用しようとしています。私のトレーニングデータには、sklearn.datasetのload_svmlight_fileを使用してロードするSVM-light形式(スパースベクトル)の40の機能を備えた1.177.245の例が含まれています。'機能値'(1.177.245 * 40)のスパース行列と'ターゲットクラス'の1つの配列(1と0、そのうち1.177.245)を生成します。これが気になるかどうかはわかりませんが、trainingdataには3552のポジティブがあり、残りはすべてネガティブです。
sk-learnのRFCはスパース行列を受け入れないため、.toarray()を使用して、スパース行列を密な配列に変換します(そう言っているのであれば、機能がない場合は0がたくさんあります)。配列に変換する前後にマトリックスを印刷しましたが、問題はないようです。
分類器を開始してデータへの適合を開始すると、次のように時間がかかります。
(その出力は正しいですか?それらの963分は約2分半かかります...)
次に、joblib.dumpを使用してダンプします。再ロードすると:
そして、実際のトレーニングデータ(750.709の例で構成され、トレーニングデータとまったく同じ形式)でテストすると、「予期しない」結果が得られます。正確には; テストデータの例の1つだけがtrueとして分類されます。最初のトレーニングデータの半分でトレーニングし、残りの半分でテストすると、まったくポジティブになりません。
今、私は何が起こっているのかが間違っていると信じる理由はありません。それは私が奇妙な結果を得るということだけです。さらに、それはすべて非常に迅速に行われたと思います。比較することはおそらく不可能ですが、rt-rankを使用して同じデータでRFClassifierをトレーニングする(これも1500回の反復で、ただしコアの半分で)には12時間以上かかります...
何かが想定どおりに機能していないと信じる理由があるかどうか、誰かに教えてもらえますか?トレーニングデータのポジティブとネガティブの比率でしょうか?乾杯。
nlp - scikit-learnの機能としてnltkコロケーションを使用する
コーパスからnltkを使用してコロケーションを抽出し、それらのオカレンスをscikit-learn分類子の機能として使用しようとしています。残念ながら、私はnltkにあまり精通しておらず、これを行う簡単な方法がわかりません。私はここまで来ました:
BigramCollocationFinder
コーパスからを使用してコロケーションを抽出します- ドキュメントごとに、(を使用して
nltk.bigrams
)すべてのバイグラムを抽出し、それらがコロケーションの1つであるかどうかを確認します TfidfVectorizer
何もしないアナライザーでを作成する- 抽出されたバイグラムの形式でドキュメントをフィードします
それは私にはかなり複雑に思えます。また、単語にまたがるバイグラムBigramCollactionFinder
のパラメータがあるという問題もあります。window_size
標準のnltk.bigrams
抽出ではそれができません。
これを克服する方法は、ドキュメントごとに新しいBigramCollocationFinderをインスタンス化し、バイグラムを再度抽出して、以前に見つけたものと照合することです...しかし、これも複雑に思えます。確かにそれを行うためのより簡単な方法がありますが、私は見落としています。
あなたの提案をありがとう!
python - TypeError: 要素が 1 つの整数配列のみをインデックスに変換できます
相互検証を使用して再帰的な機能選択を実行すると、次のエラーが発生します。
エラーを生成するコードは次のとおりです。
LogisticRegression 分類子のパラメーターに対しても GridSearch を実行する必要があることはわかっていますが、それがエラーの原因だとは思いません (またはそうでしょうか?)。
私は約 50 の機能をテストしていることに言及する必要がありますが、それらのほとんどすべてが分類されています (そのため、適切に変換するために DictVectorizer を使用しています)。
あなたが私に与えることができる助けや指導は大歓迎です。ありがとう!
編集
トレーニング データの例を次に示します。
scikit-learn - Sklearn: ValueError: X と Y には互換性のない形状があります
私はsklearnが初めてで、一般的にはpythonも初めてです。このスクリプトが何らかの解決策につながるかどうかを判断するのを手伝ってもらえますか? 基本的に、私は画像セットで色相抽出器を使用しています: トレーニングのために iset を読み込み、特徴を抽出し、分類器を定義してから分類します。
... clf をロードした後、次のようになります。
scikit-learn - sklearnを使用してビッグデータファイルにオンラインアルゴリズムを適用する可能性はありますか?
ビッグテキストコーパスに(オンライン/ミニバッチ)辞書学習などの高速オンライン次元削減手法を適用したいと思います。私の入力データは当然メモリに収まりません(これがオンラインアルゴリズムを使用したい理由です)ので、すべてをメモリにロードするのではなく、ファイルを反復処理できる実装を探しています。sklearnでこれを行うことは可能ですか?代替案はありますか?
ありがとう登録
python - 最初に行うこと:特徴選択またはモデルパラメータ設定?
これは、より「理論的な」質問です。scikit-learnパッケージを使用して、NLPタスクを実行しています。Sklearnは、特徴選択とモデルパラメーターの設定の両方を実行するための多くの方法を提供します。私は最初に何をすべきか疑問に思っています。
単変量特徴選択を使用する場合、最初に特徴選択を実行し、次に選択した特徴を使用して、推定器のパラメーターを調整する必要があることは明らかです。
しかし、再帰的な機能の削除を使用したい場合はどうなりますか?最初にすべての元の特徴を使用してグリッド検索でパラメーターを設定してから、特徴選択を実行する必要がありますか?または、最初に(Estimatorのデフォルトパラメーターを使用して)機能を選択してから、選択した機能を使用してパラメーターを設定する必要がありますか?
あなたが私に与えることができるどんな助けにも前もって感謝します。
編集
私はここで述べたのとほとんど同じ問題を抱えています。その時までに、それに対する解決策はありませんでした。それが今存在するかどうか誰かが知っていますか?
image - Scikit-learn. Classify disordered jpgs
How would you approach the following problem: I have 5 classes of images (in total 500 images): car, house, trees, chair and face. Then I have a folder with 20 disordered images, which means I know they belong to one of the 5 classes but do not know yet to which one and I want my system to classify them according to the 5 controlled classes. I am using several extractors (hue,edge) to accomplish this task, but I am struggling to get a suitable classification approach. In particular some python libraries require to name the uncontrolled image folder in the same way as the class folder (e.g. /dir/controlled/car and /dir/uncontrolled/car) this simply is not feasible for my analysis. As far as I am looking for alternative approaches can you give some methodological advice/workaround within sklearn?
python - ValueError: 次元が一致しません
SciPyとscikit-learnを使用して、バイナリ テキスト分類用の多項単純ベイズ分類器をトレーニングして適用します。正確にはsklearn.feature_extraction.text.CountVectorizer
、テキストから単語の特徴数を保持するスパース行列を作成するためのモジュールと、sklearn.naive_bayes.MultinomialNB
トレーニング データで分類器をトレーニングし、それをテスト データに適用するための分類器の実装としてモジュールを使用します。
への入力CountVectorizer
は、Unicode 文字列として表されるテキスト ドキュメントのリストです。トレーニング データは、テスト データよりもはるかに大きいです。私のコードは次のようになります(簡略化):
問題:MultinomialNB.predict_log_proba()
が呼び出されるとすぐに、が表示されますValueError: dimension mismatch
。以下の IPython スタックトレースによると、エラーは SciPy で発生します。
このエラーが発生する理由がわかりません。誰でも私に説明して、この問題の解決策を提供してもらえますか? よろしくお願いします!
python - joblibとpickleの異なるユースケースは何ですか?
背景:私はscikit-learnを始めたばかりで、ページの下部にあるjoblibとpickleについて読んでいます。
ビッグデータではより効率的ですが、文字列ではなくディスクにのみピクルスできる、joblibのピクルスの代わりに使用する方が興味深い場合があります(joblib.dump&joblib.load)。
Pythonでのpickleの一般的なユースケースであるPickleに関するこのQ&Aを読みました が、ここのコミュニティでjoblibとpickleの違いを共有できるかどうか疑問に思います。いつ使用する必要がありますか?
python - 線形カーネル svm を使用した scikit-learn の GridSearchCV に時間がかかりすぎる
sklearn の Web サイトからサンプル コードを取得しました。
X_train は、約 70 行の pandas DataFrame です。
出力は
そして、それは決して終わりません。Lion を搭載した Mac Book Pro で実行しています。私は何を間違っていますか?