このリンクのデータセットにアクセスできますhttps://drive.google.com/file/d/0B9Hd-26lI95ZeVU5cDY0ZU5MTWs/view?usp=sharing時系列分類
私の仕事はセクターファンドの価格の動きを予測することです。それがどれほど上がるか下がるかは本当に問題ではありません。私はそれが上がっているのか下っているのかを知りたいだけです。だから私はそれを分類問題として定義します。
このデータセットは時系列データなので、多くの問題を抱えていました。これは時系列データなので、私はk倍のクロスバリデーションを使用できないような問題について記事を読んでいます。データの順序は無視できません。次のように
私のコードは次のとおりです。すべての
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)ですべてのtruesを持つ配列を取得していますが、なぜ私はすべてのtruesを取得するのかわかりません。
結果の精度がどのように計算されるかわからない:たとえば、私の現在の正確さは、真と偽の数を数えるだけで、それらの順序は無視していると思う?これは時系列データなので、注文を無視することは正しくなく、価格の動きを予測する情報はありません。テストセットに40の例があり、20のTuresが得られた場合、50%の精度が得られるとしましょう。しかし、私は、真実は、地位の真実に現れているように正しい位置にないと思う。 (私が間違っているかどうか教えてください)
また、Gradient Boosted Treeを使って分類するのもいいでしょうか?
サンプルコードを追加できますか? –