我至少假设某事正在搞砸... 这是怎么回事。我正在为外汇市场中的货币对制作ML模型。我为每一对我制作一个模型。所以,我有8个模型。
我执行以下操作:
1。)基于CSV文件中的每一对数据建立模型。有点像这样:
namelist = ['usdcad', 'eurjpy', 'usdjpy', 'gbpjpy', 'audusd', 'usdchf', 'nzdusd', 'gbpusd', 'eurusd']
for filename in namelist:
with open(filename+"/all.csv",'r') as dest_f:
data_iter = csv.reader(dest_f,
delimiter = ",",
quotechar = '"')
data = [data for data in data_iter]
##do some stuff to organize the data
model50 = linear_model.LinearRegression()
model50.fit(X, Y50)
afile = open(r''+filename+'.pkl', 'wb')
pickle.dump(model50, afile)
afile.close()
然后在另一个文件中加载实时数据(用作模型输入),然后将数据保存到csvs
namelist = ['USDCAD', 'EURJPY', 'USDJPY', 'GBPJPY', 'AUDUSD', 'USDCHF', 'USDCAD', 'NZDUSD', 'GBPUSD', 'EURUSD']
for name in namelist:
CSV_URL = 'REMOVED BECAUSE IT HAS MY KEY'+name
with requests.Session() as s:
download = s.get(CSV_URL)
decoded_content = download.content.decode('utf-8')
cr = csv.reader(decoded_content.splitlines(), delimiter=',')
my_list = list(cr)
del my_list[:18]
del my_list[-1]
with open(name+".csv", "wb") as f:
writer = csv.writer(f)
writer.writerows(my_list)
然后,我立即运行所有预测:
namelist = ['USDCAD', 'EURJPY', 'USDJPY', 'GBPJPY', 'AUDUSD', 'USDCHF', 'USDCAD', 'NZDUSD', 'GBPUSD', 'EURUSD']
for name in namelist:
with open(name+".csv",'r') as dest_f:
data_iter = csv.reader(dest_f,
delimiter = ",",
quotechar = '"')
res = [data for data in data_iter]
res = [[x[3],x[4],x[5],x[6]] for x in res]
input = np.zeros((1,len(res)*4))
indx = 0
while 1:
for row in res:
for col in row:
input[0,indx] = float(col)
indx += 1
break
pname = name.lower()
file = open(r''+pname+'.pkl', 'rb')
mymodel = pickle.load(file)
file.close()
prediction = mymodel.predict(input)
很抱歉出现任何小格式错误,我仍然无法正确使用此网站。
无论如何,所以这里实际发生的是我的两个预测是正确的,显然该模型运行正常。其他6个预测则完全没有意义。就像它正在尝试使用其他模型之一一样,但是不应该...。或者像将错误的模型腌制到文件名中一样。我检查了输入,文件,它们都是正确的。此外,使用完全相同的CSV文件,我使用了完全相同的技术来制作模型并预测JUST usdcad,并且效果很好!但是当我使用下面的脚本时,usdcad的预测完全错误。
有人知道这里出了什么问题吗?我不知道。谢谢。
**快速编辑: 我已经确认问题在于腌制模型。它正在覆盖它们或将旧模型对象保留在内存中或其他内容中。
EDIT2:一些额外信息 我发现,如果我腌制我的模型,然后加载它,然后使用它-全部都在同一脚本中,那么它可以正常工作。如果我腌制我的模型,然后将其加载到另一个脚本中(使用完全相同的代码),它将无法正常工作。即使我只制作一个模型也是如此。