0
私は、線形および二次トレンドを生成する時系列コードを持っています。私はdegree
パラメータのために何を選択するのか混乱しています。私はちょうどその定義を理解していないよPolynomialFeaturesで最も適切な次数パラメータを選択するにはどうすればよいですか?
Within scikit-learn's PolynomialFeatures, when the argument degree is passed, all terms up to that degree are created.
:私は、次の定義を参照してください。簡単な数学を使った説明はありますか?最高の学位を取得していることを確認するにはどうすればよいですか?
サンプル用にしたい場合はここに私のコードです。あなたが学位を使用
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
import statsmodels.formula.api as smf
import statsmodels.tsa.api as smt
import random
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
y = [5*np.random.normal() for j in range(50)] + [30 + 5 * np.random.normal() for j in range(50)] + [50 + 5 * np.random.normal() for j in range(50)] + [20 + 5 * np.random.normal() for j in range(50)]
X = [x for x in range(len(y))]
X = np.reshape(X, (len(X), 1))
model = LinearRegression()
model.fit(X, y)
trend = model.predict(X)
model = make_pipeline(PolynomialFeatures(2), Ridge())
model.fit(X, y)
quadratic = model.predict(X)
fig = plt.figure(1, figsize=(15, 9))
ax = fig.add_subplot(111)
ax.plot(trend, label="Linear Trend")
ax.plot(quadratic, label="Quadratic Trend")
ax.plot(X, y, label='Time Series')
ax.legend()
plt.show()
度を3または4に変更すると、どのような影響がありますか?それとも、常に2にすべきだと言っていますか? – MBeale
これを確認するには、目的に合った最適な結果を得るために、さまざまな角度で試してみる必要があります。あなたのデータが二次関数に完全に当てはまる場合、より高い次数は** x **のより高い次数の係数をゼロにします。データが2次の* very *によく当てはまる場合、より高い次数は非常に小さいより高い係数を与えます。 – Prune
あなたが避けたい(実験による)ケースは、あなたのデータが比較的滑らかであることを知っている場所ですが、いくつかのアウトライアーは真剣に*より高い度合いのフィッティングに変わります。あなたは、それらの途方もない点を含めるために、データの「メインチャンネル」の外で野生のスイングを得ることができます。 – Prune