Что испортило моё травление scikit изучает модельные объекты? - PullRequest
0 голосов
/ 03 января 2019

Я, по крайней мере, предполагаю, что что-то напортачило ... вот что происходит.Я делаю модели 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: Я обнаружил дополнительную информацию: если я протравлю свою модель, а затем загрузлю ее, а затем использую - все в том же духесценарий, то работает нормально.Если я выбираю свою модель, а затем загружаю ее в другой сценарий (используя тот же код), он работает неправильно.Это тот случай, даже когда я делаю только одну модель.

...