0
我有日期溫度數據集,按日期排序,我需要在scikit-learn中使用[SVR
] [1]預測未來溫度。scikit學習svr的時間序列預測
我堅持選擇X
和Y
的培訓和X
測試 設置。例如,如果我想在時間t
預測Y
然後我需要 訓練集包含了X
& Y
在t-1, t-2, ..., t-N
其中N
是用於在t
預測Y
以前的天數。
我該怎麼做?
這是它。
df=daily_temp1
# define function for create N lags
def create_lags(df, N):
for i in range(N):
df['datetime' + str(i+1)] = df.datetime.shift(i+1)
df['dewpoint' + str(i+1)] = df.dewpoint.shift(i+1)
df['humidity' + str(i+1)] = df.humidity.shift(i+1)
df['pressure' + str(i+1)] = df.pressure.shift(i+1)
df['temperature' + str(i+1)] = df.temperature.shift(i+1)
df['vism' + str(i+1)] = df.vism.shift(i+1)
df['wind_direcd' + str(i+1)] = df.wind_direcd.shift(i+1)
df['wind_speed' + str(i+1)] = df.wind_speed.shift(i+1)
df['wind_direct' + str(i+1)] = df.wind_direct.shift(i+1)
return df
# create 10 lags
df = create_lags(df,10)
# the first 10 days will have missing values. can't use them.
df = df.dropna()
# create X and y
y = df['temperature']
X = df.iloc[:, 9:]
# Train on 70% of the data
train_idx = int(len(df) * .7)
# create train and test data
X_train, y_train, X_test, y_test = X[:train_idx], y[:train_idx], X[train_idx:], y[train_idx:]
# fit and predict
clf = SVR()
clf.fit(X_train, y_train)
clf.predict(X_test)
謝謝!我試圖讓它符合我的目的,因爲我還需要除了以前的溫度之外的其他功能,但我一直有錯誤TypeError:float()參數必須是字符串或數字 –
scikit學習不能處理字符串。您必須將所有字符串轉換爲數字。如果你有一個熊貓數據框,使用'pd.get_dummies'。如果您嚴格使用sklearn,請在預處理模塊中使用「LabelBinarizer」。 –
我已經改變了弦的,現在我有浮動和日期時間數據類型 –