可以訪問數據集在此鏈接https://drive.google.com/file/d/0B9Hd-26lI95ZeVU5cDY0ZU5MTWs/view?usp=sharing時間序列分類
我的任務是預測一個行業的基金的價格變動。它的上升或下降並不重要,我只想知道它是上漲還是下跌。所以我把它定義爲分類問題。
由於這個數據集是一個時間序列數據,我遇到了很多問題。我已經閱讀過有關這些問題的文章,比如我不能使用k-fold交叉驗證,因爲這是時間序列數據。你不能忽略數據的順序。
我的代碼如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
from sklearn.linear_model import LinearRegression
from math import sqrt
from sklearn.svm import LinearSVC
from sklearn.svm import SVCenter code here
lag1 = pd.read_csv(#local file path, parse_dates=['Date'])
#Trend : if price going up: ture, otherwise false
lag1['Trend'] = lag1.XLF > lag1.XLF.shift()
train_size = round(len(lag1)*0.50)
train = lag1[0:train_size]
test = lag1[train_size:]
variable_to_use= ['rGDP','interest_rate','private_auto_insurance','M2_money_supply','VXX']
y_train = train['Trend']
X_train = train[variable_to_use]
y_test = test['Trend']
X_test = test[variable_to_use]
#SVM Lag1
this_C = 1.0
clf = SVC(kernel = 'linear', C=this_C).fit(X_train, y_train)
print('XLF Lag1 dataset')
print('Accuracy of Linear SVC classifier on training set: {:.2f}'
.format(clf.score(X_train, y_train)))
print('Accuracy of Linear SVC classifier on test set: {:.2f}'
.format(clf.score(X_test, y_test)))
#Check prediction results
clf.predict(X_test)
首先,是我的方法就在這裏:第一生成的真假列?如果我只是簡單地將這一欄提供給它,我恐怕機器不能理解這一欄。我是否應該首先執行迴歸,然後比較數字結果以生成上升或下降列表?
訓練集的準確性非常低:0.58我得到一個數組,其中包含clf.predict(X_test)的所有特徵,我不知道爲什麼我會得到所有特徵。
我不知道得出的準確度是以哪種方式計算的:例如,我認爲我目前的準確度只計算真假的數量,但忽略它們的順序?由於這是時間序列數據,忽略訂單是不正確的,並且沒有提供關於預測價格變動的信息。假設我在測試集中有40個示例,並且我有20個Tures,我會得到50%的準確度。但是我認爲這些真理並不處於正確的位置,因爲它出現在基本真理集中。 (告訴我,如果我錯了)
我也在考慮使用梯度增強樹來做分類,會更好嗎?
你可以添加示例代碼嗎? –