我正在嘗試使用 Keras 和 sklearn創建一個股票價格預測器(不要實際使用它來投資,別擔心) ,它從Kaggle中獲取任何時間序列并檢查“關閉”。然后,它采用特定長度的滾動時間視窗并預測方向精度,向上 (1) 或向下 (0)。
在嘗試運行下面的代碼時,出現以下錯誤:
File "...", line 71, in test
y_pred = self.model.predict(self.X_test)
ValueError: X has 1 features, but SVC is expecting 3 features as input.
有人可以指導我解決可能的問題嗎?SVC 期望我可能缺少哪些功能?
代碼:模型.py
create_features根據滾動時間視窗檢查市場是更低還是更高,并設定 X 和 y:
#window_size = the set size of the rolling time window
def create_features(data, window_size):
X = []
y = []
for i in range(0, len(data.index) - window_size):
temp = [data.iloc[i j]['Close'] for j in range(0, window_size)]
avg = sum(temp) / len(temp)
X.append(temp)
y.append(0 if data.iloc[i window_size]['Close'] < avg else 1)
return X, y
class Model:
def __init__(self, market: Market, training_percent: float, window_size: int):
self.model = SVC(C=10, gamma='scale', kernel='rbf')
X, y = create_features(market.data, window_size)
self.X_train, self.y_train, self.X_test, self.y_test = train_test_split(X, y, shuffle=False, stratify=None, train_size=training_percent)
self.X_train = np.array(self.X_train)
self.y_train = np.array(self.y_test)
#self.X_test = np.array(self.X_test).reshape(-1, 1)
def train(self):
self.model.fit(self.X_train, self.y_train)
def test(self):
y_pred = self.model.predict(self.X_test) #THE COMPLAINING LINE
y_pred = [0 if i < 0.5 else 1 for i in y_pred]
tn, fp, fn, tp = confusion_matrix(self.y_test, y_pred, labels=[0, 1]).ravel()
print(tn, fp, fn, tp)
print("Accuracy:", (tn fp) / (tn fp fn tp))
def predict(self, input_array):
return self.model.predict(input_array)
以上被稱為:
model_test = Model(markets[m], training_testing[j], window_size[i])
model_test.train()
model_test.test()
任何有關此問題的幫助將不勝感激。先感謝您。
uj5u.com熱心網友回復:
問題是您如何獲得train_test_split. 正如檔案所述,您應該按順序獲取拆分資料集:
# Notice the order of the unpacking.
self.X_train, self.X_test, self.y_train, self.y_test = train_test_split(X, y, shuffle=False, stratify=None, train_size=training_percent)
因此,測驗資料集的形狀不同,因為它實際上是訓練標簽。你也不需要.reshape。
另外,不確定你想這樣做:
# Assigning y_test to y_train.
self.y_train = np.array(self.y_test)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/475729.html
標籤:Python 张量流 喀拉斯 scikit-学习 支持向量机
