是什么使我对scikit学习模型对象的腌制搞砸了?

时间:2019-01-03 16:02:03

标签: python csv scikit-learn pickle

我至少假设某事正在搞砸... 这是怎么回事。我正在为外汇市场中的货币对制作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:一些额外信息 我发现,如果我腌制我的模型,然后加载它,然后使用它-全部都在同一脚本中,那么它可以正常工作。如果我腌制我的模型,然后将其加载到另一个脚本中(使用完全相同的代码),它将无法正常工作。即使我只制作一个模型也是如此。

0 个答案:

没有答案