我在python代码中的For循环中犯了错误吗?模型精度太高,所以要仔细检查



我正在构建一个量化模型,该模型采用一系列特性并预测索引的性能。这个模型做得非常好,这显然让我怀疑自己是否犯了什么错误。

我已经查看了我正在使用的基本功能,以确保没有数据泄露。所以现在我的注意力转向了我的代码。下面是我用于预测的代码的主体。

循环中有什么问题吗?或者我的预测方式有问题吗?如果你需要更多信息,请告诉我,我会分享我能分享的。

  • X->模型训练和预测中使用的特征
  • y->类别变量(1,0(
  • n_record->数据集中的记录数
  • n_train->在滚动窗口构造中用于训练的数据量
  • model->sklearn的集成模型

我的训练数据是c4500条记录。我使用n_train为800来训练模型的第一个实例,然后使用滚动窗口为800进行训练来预测第801个实例(依此类推(。因此,通过这种方式,我在时间上滚动,去掉了非常旧的数据(保持模型"最新"(。

col_names = ['Pred', 'Actual', 'Pred Prob'] #Column names for prediction output dataframe
def Strategy (n_train):
list_ans = []
n_records = len(X) #Number of records in X

for i in range(n_train, n_records):
# creating a rolling window to train model on backward data (n_train records) and predict tomorrows performance
X_train, X_test, y_train, y_test = X[i-n_train:i], X[i:i+1], y[i-n_train:i], y[i:i+1]
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

model.fit(X_train,y_train)
Pred=model.predict(X_test)
Actual = y_test.values
Prob = model.predict_proba(X_test)[:,1]

i_ans = [Pred.item(), Actual.item(), Prob.item()]
resi = pd.Series(data=i_ans, index=col_names)
list_ans.append(resi)


return pd.DataFrame(list_ans)

对于1。您期望n_recordn_train的值是多少?请记住,CCD_ 8充当该范围的CCD_ 9值。我不知道是否应该这样,但要小心,你可能会跳过训练数据。

除此之外,它对我的眼睛很好!

最新更新