2017-10-13 6 views
1

私は "チューニング"する必要がある2つのパラメータを持つシンプルなモデルを持っています。パラメータ「A」及び「B」を使用して、モデル式は次のとおりScikit-Learnやその他のパラメータ最適化用のPythonツール

model = (a * temp) + (b * rad) 

temprad(この場合、温度と放射で)データセットを測定します。これらのデータセットは、1日(24時間)の頻度でPandas DateTimeでインデックス付けされたシリーズです。

tempデータは次のようになります。

TIMESTAMP 
2014-07-17 1.399556 
2014-07-18 1.492743 
2014-07-19 1.865306 
2014-07-20 2.478098 
       ... 
2016-08-23 2.327437 
2016-08-24 3.065250 
2016-08-25 2.427021 
2016-08-26 1.365833 
Name: AirTC_2, Length: 213, dtype: float64 

radデータは次のようになります。

TIMESTAMP 
2014-07-17 2292.717541 
2014-07-18 2228.255459 
2014-07-19 2166.962811 
2014-07-20 2803.802975 
       ...  
2016-08-23  696.327810 
2016-08-24 1431.858289 
2016-08-25 1083.182916 
2016-08-26  542.908838 
Name: CNR_Wm2, Length: 213, dtype: float64 

私もモデルが近似しようとしている測定データセットを持っています。 measuredデータセットは次のようになります。modelmeasuredの平方差(誤差)の総和を最小化:私は、標準的な回帰技術を使用して、モデルパラメータの予備的な最適化を行っている

TIMESTAMP 
2014-07-17 0.036750 
2014-07-18 0.045892 
2014-07-19 0.041919 
2014-07-20 0.044640 
      ... 
2016-08-23 0.029696 
2016-08-24 0.033997 
2016-08-25 0.032872 
2016-08-26 0.012204 
Name: melt_sonic, Length: 213, dtype: float64 

。私はabの両方のパラメータ空間の範囲をテストし、10,000の一意のパラメータの組み合わせ(abの配列の長さが100の場合)でモデルを実行しました。

a = np.arange(0.00000009,0.00001,0.0000001) 
b = np.arange(0.0115,0.0125,0.00001) 

私は単純に、この分析を行うための数学をコーディングしています、と私は独立して、適切なライブラリーからのパッケージ方法を使用してパラメータを最適化することによって、私の結果を再確認したいと思います。

Scikit-Learnや他のPythonライブラリを使用してこれらのパラメータを最適化する最も適切な方法は何ですか?

答えて

1

これは「線形回帰」と呼ばれ、良いものを見つけるためにパラメータの異なる組み合わせを試す必要はありません。この問題を分析的に解決するには、直接的な数式を適用する必要があります。したがって、良いパラメータの範囲を推測する必要はありません。コードの用語で

、あなたはのscikit-学ぶLinearRegression推定使用することができます:線形回帰のチュートリアルの例題this exampleのために参照してください

from sklearn.linear_model import LinearRegression 

X = pd.concat([rad, temp], axis=1) # the input of the model 
y = measured # the output of the model 

estimator = LinearRegression() # create the estimator object 
estimator.fit(X, y) # optimize the parameters of the model on the data 
a, b = estimator.coef_ # the obtained parameters 

を。

+0

はい私は単純な線形回帰問題であると考えました。不必要に大きなパラメータの組み合わせをテストしていると思いますが、分析に近いソリューションを得るべきです(np.arange()のステップサイズによって制限されます)。私はあなたのコードを試します。 'y =測定値#モデルの出力'に対して、私はコメントが正確であるかどうかはわかりません。私の例では、変数 'model'はモデルの出力です。しかし、ここでは、 'y = measured'を使いたいと思っています。コメントは、より適切には「測定データ」であり、モデルの理想的な近似を表します。 – PJW

+0

またはドキュメントから、 'y = measured'が 'Target values'です。 – PJW

+0

あなたの答えを使って計算された 'a'と' b'を使って、私は元の方法と非常によく似た値を得ています。以前は、値の範囲を使ったaとbの最適化された値は、それぞれ0.0121と4.99e-06でした。あなたの方法は0.0108と2.59e-06を与えます。分析解が最も正確でなければならないが、新しいパラメータを使用したモデル結果は、モデル化/測定された間の合計二乗誤差に対してわずかに高い値を与える。それをどうしたらいいかわからないけど、あなたの答えはまさに私が探していたものでした。ありがとう! – PJW

関連する問題