2017-07-10 7 views
2

私は5つの異なる入力フィーチャと1つの出力フィーチャのトレーニングデータセットを持っており、出力フィーチャを予測するために回帰モデルを使用したいと考えています。トレーニングデータの特定のバッチに異なる重みを付けることは可能ですか?

しかし、トレーニングデータの最初の部分が残りの部分と同じくらい良いわけではないことがわかっています。つまり、出力フィーチャが実際の値に劇的に対応しておらず、予測が実際の値から離れます。結果。 したがって、私は訓練セットの最初の部分に(または同等に休息中のデータにもっと)重みを与えたいと思います。 scikitでこれを行うことを学ぶ可能性はありますか? これまでのところ、私は、特徴の重み付けに関してデータのバランスをとることは可能でしたが、すべての既存の特徴のデータのシーケンスではなく、主に分類の問題のためにもありました。

答えて

0

多くのscikit-learnエスティメータは、適合の間にsample_weightsパラメータを処理します。これは、各サンプルのコスト関数への寄与を重み付けするために使用されます。 たとえば、与えられたサンプルに対して2に等しいサンプルの重みを持つことは、このサンプルを複製することとほぼ等しくなります。

パラメータsample_weightは、サイズn_samplesの1D浮動小数点配列である必要があります。

Full example with SVM

ショートバージョン:

from sklearn import svm 
... 
clf_weights = svm.SVC() 
clf_weights.fit(X, y, sample_weight=sample_weight) 
+0

が、これは私が探していたまさにです、ありがとうございます。 しかし、私はlinear_model.ElasticNetと、この追加のパラメータを持たないMLPを使いたいと思います。 同様のものが存在するかどうか知っていますか? – Maren

+0

実際、 'ElasticNet'と' MLPRegressor'に 'sample_weights'はありません。 MLPでは、バッチごとに呼び出される 'partial_fit'を使用し、より信頼性の高いバッチに対して複数回呼び出すことができます。 ElasticNetでは、良いサンプルを複製して相対的な影響を増やすことができます。しかし、これはむしろハックです。一部のバッチが本当に信頼できない場合は、破棄するほうがいいかもしれません。 – TomDLT

関連する問題