タグ付けされた質問 「scikit-learn」

scikit-learnは、機械学習に重点を置いた、データ分析とデータマイニングのためのシンプルで効率的なツールを提供するPython用の機械学習ライブラリです。誰でもアクセスでき、さまざまな状況で再利用できます。NumPyとSciPyに基づいて構築されています。このプロジェクトはオープンソースであり、商用利用が可能です(BSDライセンス)。

13
sklearnからのインポート時のImportError:名前check_buildをインポートできません
sklearnからインポートしようとすると、次のエラーが発生します。 >>> from sklearn import svm Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> from sklearn import svm File "C:\Python27\lib\site-packages\sklearn\__init__.py", line 16, in <module> from . import check_build ImportError: cannot import name check_build 私はpython 2.7、scipy-0.12.0b1スーパーパック、numpy-1.6.0スーパーパック、scikit-learn-0.11を使用しています。 私はこの問題のいくつかの回答を確認しましたが、どれもこのエラーを回避する方法を提供しません。

8
1次元配列が期待されるときに列ベクトルyが渡されました
私はフィットする必要がありますRandomForestRegressorからsklearn.ensemble。 forest = ensemble.RandomForestRegressor(**RF_tuned_parameters) model = forest.fit(train_fold, train_y) yhat = model.predict(test_fold) このコードは、データの前処理を行うまで常に機能しました(train_y)。エラーメッセージは言う: DataConversionWarning:1次元配列が予期されていたときに、列ベクトルyが渡されました。例えばravel()を使用して、yの形状を(n_samples、)に変更してください。 モデル= forest.fit(train_fold、train_y) 以前train_yはSeriesでしたが、現在はnumpy配列です(列ベクトルです)。を適用train_y.ravel()すると、行ベクトルになり、エラーメッセージは表示されず、予測ステップに非常に長い時間がかかります(実際には終了しません...)。 RandomForestRegressor私のドキュメントでは、 この問題を解決するためのアイデアtrain_yとして定義する必要があることがわかりましたy : array-like, shape = [n_samples] or [n_samples, n_outputs]か?

3
Python-正確にはsklearn.pipeline.Pipelineとは何ですか?
どのようにsklearn.pipeline.Pipeline動作するのか正確に理解できません。 ドキュメントにいくつかの説明があります。たとえば、次の意味は何ですか。 最終的な推定量を使用した変換のパイプライン。 私の質問をより明確にするために、何stepsですか?それらはどのように機能しますか? 編集する 回答のおかげで、質問をより明確にすることができます: パイプラインを呼び出して、ステップとして、2つのトランスフォーマーと1つの推定器を渡します。例: pipln = Pipeline([("trsfm1",transformer_1), ("trsfm2",transformer_2), ("estmtr",estimator)]) これを呼び出すとどうなりますか? pipln.fit() OR pipln.fit_transform() 推定器を変圧器にする方法や、変圧器を取り付ける方法を理解できません。

2
scikit-learnのclass_weightパラメーターはどのように機能しますか?
class_weightscikit-learnのロジスティック回帰のパラメーターがどのように機能するかを理解するのに多くの問題を抱えています。 状況 ロジスティック回帰を使用して、非常に不均衡なデータセットでバイナリ分類を行いたいと思います。クラスには0(負)と1(正)のラベルが付けられ、観測されたデータは約19:1の比率で、サンプルの大部分が負の結果を示します。 最初の試み:手動でトレーニングデータを準備する トレーニングとテストのために、持っていたデータをばらばらのセットに分割しました(約80/20)。次に、手動でトレーニングデータをランダムにサンプリングして、19:1とは異なる比率でトレーニングデータを取得しました。2:1-> 16:1から。 次に、これらの異なるトレーニングデータサブセットでロジスティック回帰をトレーニングし、異なるトレーニング比率の関数として再現率(= TP /(TP + FN))をプロットしました。もちろん、再現率は19:1の割合が観測されたバラバラのTESTサンプルで計算されました。注:異なるトレーニングデータで異なるモデルをトレーニングしましたが、同じ(互いに素な)テストデータですべてのモデルの再現率を計算しました。 結果は予想通りでした。リコールは2:1のトレーニング比率で約60%で、16:1になるまでにかなり速く落ちました。再現率がまともな5%を超える2:1-> 6:1の比率がいくつかありました。 2回目の試み:グリッド検索 次に、さまざまな正則化パラメーターをテストしたかったので、GridSearchCVを使用して、Cパラメーターとパラメーターのいくつかの値のグリッドを作成しましたclass_weight。n:mの比率のネガティブ:ポジティブトレーニングサンプルを次の辞書言語に翻訳するには、class_weightいくつかの辞書を次のように指定するだけだと考えました。 { 0:0.67, 1:0.33 } #expected 2:1 { 0:0.75, 1:0.25 } #expected 3:1 { 0:0.8, 1:0.2 } #expected 4:1 と私も含まれNoneていautoます。 今回は結果は完全に奇抜でした。すべての私のリコールは、class_weightexceptのすべての値に対して非常に小さい(<0.05)でしたauto。だから私は、class_weight辞書を設定する方法についての私の理解が間違っているとしか想定できません。興味深いことに、class_weightグリッド検索の「auto」の値はC、のすべての値で約59%であり、1:1にバランスが取れていると思いますか? 私の質問 class_weight実際に提供するデータとは異なるトレーニングデータのバランスをとるために、どのように適切に使用しますか?具体的には、class_weightn:mの比率のネガティブ:ポジティブトレーニングサンプルを使用するためにどの辞書を渡しますか? さまざまなclass_weightディクショナリをGridSearchCVに渡すと、相互検証中に、ディクショナリに従ってトレーニングフォールドデータのバランスが再調整されますが、テストフォールドでのスコアリング関数の計算には、与えられた真のサンプル比率が使用されますか?メトリックは、それが観察された比率のデータからのものである場合にのみ私にとって有用であるため、これは重要です。 のauto値はclass_weightプロポーションまで何をしますか?私はドキュメントを読み、「データをその頻度に反比例してバランスさせる」とは、それが1:1になることを意味します。これは正しいです?そうでない場合、誰かが明確にできますか?


5
PandasデータフレームでOLS回帰を実行する
私はpandasデータフレームを、私はここで、列BおよびCの値から列Aの値を予測することができるしたい玩具例です。 import pandas as pd df = pd.DataFrame({"A": [10,20,30,40,50], "B": [20, 30, 10, 40, 50], "C": [32, 234, 23, 23, 42523]}) 理想的には、次のようなものols(A ~ B + C, data = df)がありますが、アルゴリズムライブラリの例を見ると、scikit-learn列ではなく行のリストを使用してモデルにデータを供給しているように見えます。これは、リスト内のリストにデータを再フォーマットすることを必要とします。これは、最初にパンダを使用する目的に反するようです。パンダデータフレーム内のデータに対してOLS回帰(またはより一般的には機械学習アルゴリズム)を実行するための最もPython的な方法は何ですか?

4
scikit learnを使用したマルチクラスケースの精度、再現率、精度、およびf1スコアを計算する方法
私はデータがこのように見える感情分析問題で働いています: label instances 5 1190 4 838 3 239 1 204 2 127 したがって、1190はでinstancesラベル付けされて5いるため、私のデータは不均衡です。分類については、scikitのSVCを使用しています。問題は、マルチクラスの場合の精度、再現率、精度、およびf1-scoreを正確に計算するために、データを正しい方法でバランスを取る方法がわからないことです。だから私は次のアプローチを試しました: 最初: wclf = SVC(kernel='linear', C= 1, class_weight={1: 10}) wclf.fit(X, y) weighted_prediction = wclf.predict(X_test) print 'Accuracy:', accuracy_score(y_test, weighted_prediction) print 'F1 score:', f1_score(y_test, weighted_prediction,average='weighted') print 'Recall:', recall_score(y_test, weighted_prediction, average='weighted') print 'Precision:', precision_score(y_test, weighted_prediction, average='weighted') print '\n clasification report:\n', …



10
sklearn:LinearRegression.fit()を呼び出したときに、サンプル数が一貫していない配列が見つかりました
単純な線形回帰を行おうとしていますが、次のエラーが発生します。 regr = LinearRegression() regr.fit(df2.iloc[1:1000, 5].values, df2.iloc[1:1000, 2].values) 生成されるもの: ValueError: Found arrays with inconsistent numbers of samples: [ 1 999] これらの選択は同じ次元でなければならず、それらは派手な配列でなければならないので、何が欠けていますか?
102 scikit-learn 

7
インストールされているnltk、scikit学習のバージョンを確認する方法
シェルスクリプトで、このパッケージがインストールされているかどうかを確認しています。インストールされていない場合は、インストールしてください。だからシェルスクリプトを使って: import nltk echo nltk.__version__ しかし、それはimport行でシェルスクリプトを停止します Linuxターミナルでこの方法で見ようとしました: which nltk インストールされているとは考えられません。 シェルスクリプトでこのパッケージのインストールを確認する他の方法はありますか?インストールされていない場合は、それもインストールします。

3
scikit learnのRandomForestClassifierとExtraTreesClassifier
scikit学習におけるRandomForestClassifierとExtraTreesClassifierの違いを誰かが説明できますか?私は紙を読むのにかなりの時間を費やしました: P. Geurts、D。Ernst。、およびL. Wehenkel、「Extremely randomized trees」、機械学習、63(1)、3-42、2006 これらはETの違いのようです: 1)分割で変数を選択する場合、サンプルはトレーニングセットのブートストラップサンプルではなく、トレーニングセット全体から抽出されます。 2)分割は、各分割でのサンプルの値の範囲から完全にランダムに選択されます。 これら2つのことの結果は、はるかに多くの「葉」になります。

5
メソッド「train_test_split」のパラメーター「stratify」(scikit Learn)
train_test_splitパッケージscikitLearnから使用しようとしていますが、パラメーターに問題がありますstratify。以下はコードです: from sklearn import cross_validation, datasets X = iris.data[:,:2] y = iris.target cross_validation.train_test_split(X,y,stratify=y) ただし、次の問題が発生し続けます。 raise TypeError("Invalid parameters passed: %s" % str(options)) TypeError: Invalid parameters passed: {'stratify': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …


3
joblibとpickleの異なるユースケースは何ですか?
背景:私はscikit-learnを始めたばかりで、ページの下部にあるjoblibとpickleについて読んでいます。 ビッグデータではより効率的ですが、文字列ではなくディスクにのみピクルスできる、joblibのピクルスの置き換え(joblib.dump&joblib.load)を使用する方が興味深い場合があります。 Pythonでのpickleの一般的なユースケースであるPickleに関するこのQ&Aを読み ましたが、ここのコミュニティでjoblibとpickleの違いを共有できるかどうか疑問に思います。いつ使用する必要がありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.