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

Python用の機械学習ライブラリ。このタグは、(a)scikit-learnが質問の重要な部分または予想される回答として含まれているトピックトピックの質問に使用し、&(b)はscikit-learnの使い方だけではありません。

3
XGBoost対Python Sklearn勾配ブーストツリー
XGBoostの仕組みを理解しようとしています。Python sklearnで勾配ブーストされたツリーがどのように機能するかは既に理解しています。私にとって明らかではないのは、XGBoostが同じように動作するが高速であるか、またはXGBoostとpython実装との間に根本的な違いがあるかどうかです。 この論文を読んだとき http://learningsys.org/papers/LearningSys_2015_paper_32.pdf XGboostから得られる最終結果はPython実装と同じですが、主な違いはXGboostが各回帰ツリーで最適な分割を見つける方法です。 基本的に、XGBoostは同じ結果をもたらしますが、高速です。 これは正しいですか、それとも私が見逃している何かがありますか?

2
scikitのマルチラベル分類メトリック
scikitを使用して既存のドキュメントにトピックを割り当てるために、マルチラベル分類子を構築しようとしています 私は、を介してそれらを渡す私の文書を処理していTfidfVectorizerて、ラベルMultiLabelBinarizerと作成したOneVsRestClassifierとSGDClassifier推定として。 しかし、分類子をテストするとき、私は0.29までのスコアしか得ません。これは、私が読んだものから同様の問題に対してかなり低いです。TfidfVectorizerでストップワード、ユニグラム、ステミングなどの複数のオプションを試しましたが、何もそれほど結果を変えないようです。 またGridSearchCV、推定器に最適なパラメーターを取得するために使用していましたが、現在、次に何をしようかというアイデアがありません。 同時に、私が使用できないことを理解scikit.metricsしているOneVsRestClassifierので、何が間違っているのかを理解するために、どのようにいくつかのメトリック(F1、Precision、Recallなど)を取得できますか? データコーパスに問題があるのでしょうか? 更新:とを使用CountVectorizerしHashingVectorizerてパイプライン処理も試みましたTfidfTransformerが、結果は似ています。だから私は、word-of-wordsアプローチがトークン化ドメインで最善であり、残りは分類器次第だと推測しています...

2
ランダムフォレストは過剰適合ですか?
私はscikit-learnを使用してランダムフォレストで実験しており、トレーニングセットでは素晴らしい結果を得ていますが、テストセットでは比較的悪い結果が得られています... ここに私が解決しようとしている問題(ポーカーに触発された)があります:プレーヤーAのホールカード、プレーヤーBのホールカード、およびフロップ(3枚のカード)がある場合、どのプレーヤーが最高のハンドを持っていますか?数学的には、これは14個の入力(7枚のカード-それぞれに1つのランクと1つのスーツ)と1つの出力(0または1)です。 これまでの私の結果の一部を以下に示します。 Training set size: 600k, test set size: 120k, number of trees: 25 Success rate in training set: 99.975% Success rate in testing set: 90.05% Training set size: 400k, test set size: 80k, number of trees: 100 Success rate in training set: 100% Success rate in testing set: …

3
ロジスティック回帰の係数の標準誤差を計算する方法
Pythonのscikit-learnを使用して、ロジスティック回帰のトレーニングとテストを行っています。 scikit-learnは、独立変数の回帰係数を返しますが、係数の標準誤差は提供しません。各係数のWald統計を計算し、それらの係数を相互に比較するには、これらの標準誤差が必要です。 ロジスティック回帰の係数の標準誤差を計算する方法の1つの説明を見つけました(ここ)が、従うのはやや困難です。 これらの標準エラーを計算する方法の簡単な簡潔な説明を知っている場合、および/またはそれを私に提供できる場合は、本当に感謝しています!特定のコードを意味するわけではありませんが(役立つコードは自由に投稿してください)、むしろ手順のアルゴリズム的な説明です。

3
単純な最小二乗係数を見つけるために「正規方程式」を使用しないのはなぜですか?
私はここでこのリストを見ましたが、最小二乗法を解く方法がたくさんあるとは信じられませんでした。ウィキペディアの「正規方程式」は、かなり単純な方法のように思われました: α^β^= y¯- β^バツ¯、= ∑ni = 1(x私− x¯)(y私− y¯)∑ni = 1(x私− x¯)2α^=y¯−β^x¯,β^=∑i=1n(xi−x¯)(yi−y¯)∑i=1n(xi−x¯)2 {\displaystyle {\begin{aligned}{\hat {\alpha }}&={\bar {y}}-{\hat {\beta }}\,{\bar {x}},\\{\hat {\beta }}&={\frac {\sum _{i=1}^{n}(x_{i}-{\bar {x}})(y_{i}-{\bar {y}})}{\sum _{i=1}^{n}(x_{i}-{\bar {x}})^{2}}}\end{aligned}}} では、なぜそれらを使用しないのですか?マークLの上の最初のリンクで、SVDまたはQRは統計ソフトウェアで一般的な方法であり、正規方程式は「信頼性と数値精度の観点からは劣っています」と述べていることから、計算または精度の問題があるに違いないと思いました。ただし、次のコードでは、3つの一般的なpython関数と比較すると、正規方程式により小数点以下12桁までの精度が得られます。numpy's polyfit ; scipy's linregress ; およびscikit-learnのLinearRegression。 さらに興味深いのは、n = 100000000の場合に正規方程式法が最速であることです。私にとっての計算時間は次のとおりです。polyfitの場合は12.9秒。LinearRegressionの4.2秒。正規方程式の場合は1.8秒。 コード: import numpy as np from sklearn.linear_model import LinearRegression from scipy.stats import …

3
Pythonで共線変数を体系的に削除するにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、相互検証のトピックになるようにします。 2年前に閉店。 これまで、相関テーブルを調べ、特定のしきい値を超える変数を削除することにより、データ準備プロセスの一部として共線変数を削除しました。これを行うより受け入れられた方法はありますか?さらに、一度に2つの変数間の相関関係を調べるだけでは理想的ではないことを認識しています。VIFのような測定では、いくつかの変数間の潜在的な相関関係が考慮されます。多重共線性を示さない変数の組み合わせを体系的に選択するにはどうすればよいでしょうか? パンダのデータフレーム内にデータがあり、sklearnのモデルを使用しています。

3
ネストされたクロス検証でハイパーパラメーターを取得する方法
ネストされたクロス検証に関する次の投稿を読んでいますが、ネストされたクロス検証を使用したモデル選択で何をすべきかはまだ100%わかりません。 モデル選択のためのネストされたクロス検証 モデルの選択と相互検証:正しい方法 混乱を説明するために、ネストされた相互検証方法を使用して、モデルの選択をステップごとに見てみましょう。 K-Foldを使用して外側のCVループを作成します。これは、各内部CVループを「獲得」したハイパーパラメーターのパフォーマンスを推定するために使用されます。 GridSearchCVを使用して、内部CVループを作成します。各内部ループでは、GSCVがパラメータースペースのすべての可能な組み合わせを調べて、最適なパラメーターセットを見つけます。 GSCVは、内側のループで最適なパラメーターを見つけた後、外側のループでテストセットを使用してテストし、パフォーマンスを推定します。 次に、外側のループがテストセットとして次のフォールドに更新され、残りがトレーニングセットとして更新され、1〜3回繰り返されます。可能な「勝ち」パラメータの合計は、外側のループで指定されたフォールドの数です。外側のループは5倍であれば、あなたはとアルゴリズムの性能予測しています5つの異なるセットハイパーパラメータの、NOTハイパーパラメータの一つの特定のセットのパフォーマンスを。 このアプローチは、SKLearnのサンプルページに示されています:http ://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html 質問:4.の 後、どのハイパーパラメーターが最適に機能したかをどのように判断しますか?最後にCOMPLETEデータセットを使用してアルゴリズム(ロジスティック回帰、ランダムフォレストなど)をトレーニングする必要があることを理解しています。しかし、ネストされたクロス検証でどのハイパーパラメーターが最適に機能したかをどのように判断しますか?私の理解では、各内部ループに対して、異なるハイパーパラメーターのセットが勝つということです。また、外側のループについては、GridSearchCVのパフォーマンスの推定値を取得していますが、ハイパーパラメーターの特定のセットは取得していません。それでは、最終的なモデル作成で、どのハイパーパラメーターを使用するかをどのように知るのでしょうか?それは、他のトレッドから理解するのに苦労している欠落しているロジックです。 特に@Dikran Marsupialと@cbeleitesが鳴り響く場合は、ヒントを事前にありがとうございます! 編集:可能であれば、答えには「アルゴリズム」や「ハイパーパラメーター」などの用語を使用してください。私にとって混乱の原因の1つは、人々が「モデル」または「モデル選択」という用語を使用していることだと思います。使用するアルゴリズムの選択について、または使用するハイパーパラメーターの選択について話しているのかどうか、私は混乱します。 編集2:ネストされた相互検証を行う2つの方法を示すノートブックを作成しました。最初の方法はSKLearnの例で示したもので、もう1つの方法は私が書いたものです。SKLearnに示されている方法は、「勝つ」ハイパーパラメーターを公開していませんが、私の長い方法は公開しています。しかし、問題は同じままです。ハイパーパラメーターが公開されている場合でも、ネストされたクロス検証を完了した後、どうすればよいですか?ノートブックの最後にあるハイパーパラメーターからわかるように、それらはかなり異なります。

3
マルチクラスLDAトレーニングの共線変数
8クラスのデータでマルチクラスLDA分類器をトレーニングしています。 トレーニングを行っている間、私は警告が出ます:「変数が同一直線上にあります」 私は取得しています訓練オーバーの精度90% 。 Pythonでscikits-learnライブラリを使用して、マルチクラスデータのトレーニングとテストを行っています。 私はまともなテスト精度も得ています(約85%-95%)。 エラー/警告の意味がわかりません。私を助けてください。

6
最速のSVM実装
一般的な質問の詳細。予測モデリングのためにrbf SVMを実行しています。私の現在のプログラムには間違いなく少しスピードアップが必要だと思います。私はscikitを使用して、粗いグリッドから細かいグリッドの検索とクロス検証を行います。 各SVMの実行には約1分かかりますが、すべての反復を行っても、まだ遅いと感じています。最終的に複数のコアでクロス検証部分をマルチスレッドすると仮定すると、プログラムを高速化するための推奨事項はありますか?SVMのより高速な実装はありますか?GPU SVMについて聞いたことがありますが、あまり掘り下げていません。ユーザーは誰ですか?それは速いですか?

7
ランダムフォレストが過剰適合
scikits-learnでRandom Forest Regressionを使用しようとしています。問題は、非常に高いテストエラーが発生していることです。 train MSE, 4.64, test MSE: 252.25. これは私のデータがどのように見えるかです:(青:実データ、緑:予測): トレーニングに90%、テストに10%を使用しています。これは、いくつかのパラメーターの組み合わせを試した後に使用しているコードです。 rf = rf = RandomForestRegressor(n_estimators=10, max_features=2, max_depth=1000, min_samples_leaf=1, min_samples_split=2, n_jobs=-1) test_mse = mean_squared_error(y_test, rf.predict(X_test)) train_mse = mean_squared_error(y_train, rf.predict(X_train)) print("train MSE, %.4f, test MSE: %.4f" % (train_mse, test_mse)) plot(rf.predict(X)) plot(y) フィッティングを改善するための可能な戦略は何ですか?基礎となるモデルを抽出するために他にできることはありますか?同じパターンを何度も繰り返した後、モデルが新しいデータに対して非常にひどく振る舞うのは信じがたいようです。このデータに合わせようとする希望はありますか?

3
ロジスティック回帰:Scikit Learn対glmnet
Rのパッケージをsklearn使用してロジスティック回帰ライブラリの結果を複製しようとしていglmnetます。 sklearn分w 、c12wTw + C∑i = 1Nログ(exp( − y私( XT私w + c ))+ 1 )分w、c12wTw+C∑私=1Nログ⁡(exp⁡(−y私(バツ私Tw+c))+1)\min_{w,c} \frac12 w^Tw + C\sum_{i=1}^N \log(\exp(-y_i(X_i^Tw+c)) + 1) のビネットからglmnet、その実装はわずかに異なるコスト関数を最小化します 分β、β0− [ 1N∑i = 1Ny私(β0+ xT私β)− ログ(1 + e(β0+ xT私β))] + λ [ (α - 1 )| |β| |22/ 2+α | |β| |1]分β、β0−[1N∑私=1Ny私(β0+バツ私Tβ)−ログ⁡(1+e(β0+バツ私Tβ))]+λ[(α−1)||β||22/2+α||β||1]\min_{\beta, \beta_0} -\left[\frac1N \sum_{i=1}^N y_i(\beta_0+x_i^T\beta)-\log(1+e^{(\beta_0+x_i^T\beta)})\right] …

3
機械学習で欠落データの問題を回避する方法
機械学習アルゴリズムを使用して予測したい事実上のデータベースは、いくつかの特性の欠損値を見つけます。 この問題に対処するには、欠損値を持つ行を特性の平均値で埋めるまで除外するいくつかのアプローチがあります。 私はやや堅牢なアプローチに使用したいと思います。これは基本的に回帰(または別の方法)を実行し、従属変数(Y)は欠損値を持つ各列ですが、テーブルの行のみであるすべてのデータを含み、このメソッドで欠損値を予測し、テーブルごとにテーブルを完成させ、欠損値のある次の「列」に移動し、すべてが満たされるまでメソッドを繰り返します。 しかし、それは私にいくつかの疑問を与えます。 なぜ列が始まるのですか?欠損値が最小のものは、最大値を持つものまで 完了しようとする価値のない欠損値のしきい値はありますか?(たとえば、この特性が満たされている値の10%しか持っていない場合、それを除外することはもっと面白くないでしょう) 従来のパッケージや、欠落に強い他の方法での実装の種類はありますか?

2
scikit-learnブートストラップ関数がテストセットをリサンプルするのはなぜですか?
モデルの評価にブートストラップを使用するとき、私は常に、out-of-bagのサンプルがテストセットとして直接使用されると思っていました。ただし、これは非推奨の scikit-learnBootstrapアプローチの場合には当てはまらないようです。これは、out-of-bagデータサブセットからの置き換えで描画からテストセットを構築しているようです。これの背後にある統計的推論は何ですか?この手法が、out-of-bag-sampleで評価するよりも優れている、またはその逆の特定のシナリオはありますか?

2
ScikitがCalibratedClassifierCVで分類子を調整する正しい方法
ScikitにはCalibratedClassifierCVがあり、これにより特定のX、yペアでモデルを調整できます。また、明確に述べていますdata for fitting the classifier and for calibrating it must be disjoint. それらがばらばらでなければならない場合、分類器を次のもので訓練することは合法ですか? model = CalibratedClassifierCV(my_classifier) model.fit(X_train, y_train) 同じトレーニングセットを使用することで、disjoint data規則に違反しているのではないかと心配しています。別の方法として、検証セットを用意することもできます my_classifier.fit(X_train, y_train) model = CalibratedClassifierCV(my_classifier, cv='prefit') model.fit(X_valid, y_valid) これには、トレーニング用のデータが少なくなるという欠点があります。また、CalibratedClassifierCVが別のトレーニングセットに適合するモデルにのみ適合しなければならない場合、なぜデフォルトのオプションはでありcv=3、これも基本推定量に適合しますか?相互検証は、独立したルールを単独で処理しますか? 質問:CalibratedClassifierCVを使用する正しい方法は何ですか?

2
ネストされた相互検証の使用
モデル選択に関する Scikit Learnのページでは、ネストされた相互検証の使用について言及されています。 >>> clf = GridSearchCV(estimator=svc, param_grid=dict(gamma=gammas), ... n_jobs=-1) >>> cross_validation.cross_val_score(clf, X_digits, y_digits) 2つの交差検証ループが並行して実行されます。1つはGridSearchCV推定器によってガンマを設定し、もう1つはcross_val_scoreによって推定器の予測パフォーマンスを測定します。結果のスコアは、新しいデータの予測スコアの公平な推定値です。 私が理解していることから、clf.fitクロス検証をネイティブに使用して、最適なガンマを決定します。その場合、上記のようにネストされたcvを使用する必要があるのはなぜですか?注では、ネストされたcvが予測スコアの「不偏推定値」を生成することに言及しています。それもそうではありませんclf.fitか? また、cross_validation.cross_val_score(clf, X_digits, y_digits)手順からclfの最良の推定値を取得できませんでした。どうやってそれができるのか教えていただけますか?

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