問題タブ [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-2.7 - scikitはポリカーネルとガンマ値を学習しますか?
次の形式の多項式カーネルでscikitSVCを使用します:(1 + xTn.xm)^4。次数4の意味(1とxTn.xmの積)。xTnは転置されるxn値です。scikitのドキュメントを調べると、SVCのパラメーターが指定されています。
パラメータ「degree」は関連性があり、4を使用する必要があります。パラメータcoef0は関連性があり、値1を使用する必要があります。正しいですか?「ポリ」の場合、ガンマは非常に不明確です。ガンマにはどの値を使用する必要がありますか?
svm - SVM整数機能
Python用の機械学習scikit-learnパッケージでSVM分類器を使用しています。私の特徴は整数です。fit関数を呼び出すと、「スケーラーは浮動小数点値を入力として想定し、int32を取得しました」というユーザー警告が表示され、SVMはその予測を返し、混同行列(2つのクラスがあります)と予測精度を計算します。ユーザーの警告を避けようとしたので、機能をフロートとして保存しました。確かに、警告は消えましたが、私は完全に異なる混同行列と予測精度を取得しました(驚くほど正確ではありません)誰かがそれが起こる理由を知っていますか?何が望ましいですか、floatまたは整数として機能を送信する必要がありますか?ありがとう!
python-2.7 - scikit_learn の KFold でシャッフルを使用する方法
いくつかのカーネル パラメーターを選択するために、scikit-learn が提供する KFold 関数を使用して 10 倍の CV を実行しています。私はこの(grid_search)手順を実装しています:
KFold 生成でシャッフルを使用しない場合、同じ実行を繰り返すと、平均 (cv_errors) でほとんど同じ結果が得られ、「最良の結果」が再現可能です。シャッフルを使用すると、同じ実行を数回繰り返し、「最良の値」が再現できない場合、平均 (cv エラー) に異なる値が得られます。KFold パスごとに異なる cv_errors を取得する必要があることは理解できますが、最終的な平均は同じである必要があります。シャッフル付きの KFold は実際にどのように機能しますか? KFold が呼び出されるたびに、インデックスがシャッフルされ、トレーニング/テスト データが生成されます。「トレーニング/テスト」のためにさまざまなフォールドをどのように選択しますか? トレーニング/テスト用にさまざまなフォールドをランダムに選択する方法はありますか? 「シャッフル」で有利な状況とそうでない状況は??
machine-learning - ユニグラムとバイグラム(tf-idf)は、単なるユニグラム(ff-idf)よりも精度が低くなりますか?
これは、Tf-IDF(項頻度-逆ドキュメント頻度)を使用したngramによる線形回帰に関する質問です。これを行うために、線形回帰にnumpyスパース行列とsklearnを使用しています。
ユニグラムを使用すると、53のケースと6000を超える機能があります。予測は、LeaveOneOutを使用した相互検証に基づいています。
ユニグラムスコアのみのtf-idfスパース行列を作成すると、ユニグラム+バイグラムスコアのtf-idfスパース行列を作成する場合よりもわずかに良い予測が得られます。行列に追加する列(トリグラム、クアッドグラム、クイントグラムなどの列)が多いほど、回帰予測の精度は低くなります。
これは一般的ですか?これはどのように可能ですか?機能が多ければ多いほど良いと思いました。
python - 過剰適合と適切な予測の区別
これらは、機械学習の過剰適合を計算して減らす方法に関する質問です。機械学習の初心者の多くも同じ質問をするだろうと思うので、ここでの回答が他の人に役立つことを願って、例と質問を明確にしようとしました。
私はテキストの非常に小さなサンプルを持っており、それらに関連する値を予測しようとしています。sklearnを使用してtf-idfを計算し、それらを回帰モデルに挿入して予測しました。これにより、6323の機能を備えた26のサンプルが得られます-それほど多くはありません..私は知っています:
6323個の特徴(X)と関連するスコア(y)の26個のサンプルをモデルに挿入するとLinearRegression
、適切な予測が得られます。これらは、以下から、leave-one-out相互検証を使用して取得されcross_validation.LeaveOneOut(X.shape[0], indices=True)
ます。
かなり良い!ユニグラム(n = 1)の代わりにngram(n = 300)を使用すると、同様の結果が発生しますが、これは明らかに正しくありません。どのテキストにも300語は含まれていないため、予測は失敗するはずですが、失敗します。
質問1:これは、予測モデルがデータに過剰適合していることを意味している可能性があります。これを知っているのは、私が知っているngram(n = 300)に極値を選択したため、良い結果が得られないためです。しかし、私がこの知識を持っていなかったとしたら、通常、モデルが過剰適合していることをどのように判断しますか?言い換えると、妥当な尺度(n = 1)が使用された場合、モデルが適切に機能しているのに対して、過剰適合の結果として適切な予測が行われたことをどのように知ることができますか?
質問2:予測結果が良好かどうかを確認するために(この状況で)過剰適合を防ぐための最良の方法は何ですか?
質問3:交差検定を使用する場合LeaveOneOut
、モデルがどのように適合しすぎて良好な結果が得られる可能性がありますか?過剰適合とは、予測の精度が低下することを意味します。では、テキストが省略されている場合の予測に影響が出ないのはなぜですか。私が考えることができる唯一の理由:主に0のtf-idfスパース行列では、非常に多くの用語が0であるため、テキスト間に強い重複があります。回帰では、テキストは高度に相関していると見なされます。
すべてを知らなくても、質問に答えてください。ありがとう!
python - numpy/pandas: 一連のゼロと 1 の文字列を行列に変換する方法
この形式で到着するデータがあります。
タプル形式では、次のようになります。
一日の終わりに、Y と X を使用して分類子 (例: sklearn.linear_model.logistic.LogisticRegression) をトレーニングする必要があります。
分類子を介して実行できるように、1 と 0 の文字列を np.array のようなものに変換する最も簡単な方法は何ですか? ここには簡単な答えがあるはずですが、/ググることができませんでした。
いくつかのメモ:
- 私はすでに numpy/pandas/sklearn を使用しているので、これらのライブラリにあるものは何でも公平なゲームです。
- 私がやっていることの多くでは、other_info 列を DataFrame にまとめておくと便利です
- 文字列はかなり長い (~20,000 列) ですが、全体のデータ フレームはそれほど高くありません (~500 行)。
python - エラスティックネットはどのように使用されますか?
これは、回帰による正則化に関する初心者の質問です。オンラインのElasticNetとLassoRegressionに関するほとんどの情報は、WikipediaまたはZouとHastieによる元の2005年の論文(エラスティックネットを介した正則化と変数選択)からの情報を複製しています。
簡単な理論のためのリソース?それが何をするのか、いつ、なぜ正規化が必要なのか、そしてそれをどのように使用するのかについて、統計的に傾いていない人のために、どこかに簡単で簡単な説明がありますか?元の論文が理解できれば理想的な情報源であることは理解していますが、もっと単純な問題と解決策はどこかにありますか?
sklearnでの使用方法は?エラスティックネットが選択される理由(リッジ、ラッソ、または単純なOLS)と、パラメーターの計算方法を示すステップバイステップの例はありますか?sklearnの例の多くは、アルファパラメータとrhoパラメータを予測モデルに直接含めています。例:
ただし、これらがどのように計算されたかについては説明されていません。投げ縄またはネットのパラメータをどのように計算しますか?
scikit-learn - sklearn python パッケージによるボール ツリーのリストの定義と使用
ボール ツリー オブジェクトのリストを以下のように定義しました。ここで、input1
は形状 (100, 320) の NumPy 配列です。
の要素の 1 つをinput1
サンプル クエリとして取り上げます。ここで、sample_index
は境界内にあると想定されます。
ここで、distance[0]
「sample_query」が のメンバーであることを考えると、期待どおり は 0 ですinput1
。
ボール ツリー リスト 'bt' にボール ツリー オブジェクトをもう 1 つ追加すると、'sample_query' と bt[0] の最近傍距離が変わるのはなぜですか? リスト bt にもう 1 つのオブジェクトを追加すると、オブジェクト bt[0] は変更されないことが予想されます。私の期待は正しいですか?
python - ヒストグラムを機能として使用してscikit-learnのSVMを使用するには?
ここに示すように、カイ二乗カーネルで scikit-learn の SVM を使用したいと考えています。このシナリオでは、カーネルはヒストグラム上にあり、これが私のデータが表すものです。ただし、ヒストグラムで使用されているこれらの例は見つかりません。これを行う適切な方法は何ですか?
ベクトルの各要素がヒストグラムのビンに対応するベクトルとしてヒストグラムを扱う正しいアプローチはありますか?
前もって感謝します
python - ハードマージンとC値を持つsvm
RBFカーネルとハードマージンを使用してsvm分類器を作成する必要があります。私が正しく理解していれば、マージンの種類はCパラメーターによって制御されます。つまり、Cパラメータが大きいほど、よりハードなマージンが得られます。非常に堅牢な「ハードマージン」をエミュレートする典型的なC値はありますか?または、堅牢なハードマージンをエミュレートする他の方法はありますか?もちろん、ハードマージンをエミュレートする必要がある理由についてはいつでも話し合うことができます。しかし、この場合、私はそれをエミュレートする必要があります!