Как получить прогноз от обученной модели ML? - PullRequest
0 голосов
/ 18 февраля 2020

Я только что закончил обучение модели прогнозирования цен регрессии в LightGBM. Обученная мною модель принимает следующие входные данные

CAR NAME, YEAR, MILEAGE, ATTENTION GRABBER, KEY SPECS, DESCRIPTION

и использует их для прогнозирования цены.

Модель, которую я обучил, получила среднеквадратическую оценку 0,22хх, поэтому я подозреваю, что она действительно сильно соответствует данным, учитывая, что цены на автомобили колеблются от 100 до 10 000 000, при этом большинство падает от 500 до 40 000 фунтов. .

Я хочу загрузить некоторые данные в модель и посмотреть прогноз цены, как мне это сделать?

Я сохранил модель как model.txt, используя

gbm.save_model('model.txt')

Я могу загрузить модель, используя

bst = lgb.Booster(model_file='model.txt')

Редактировать

Я попытался использовать следующий код:

import lightgbm as lgb
import pandas as pd

df = pd.read_csv('Data_for_model.csv')

bst = lgb.Booster(model_file='model.txt')
json_model = bst.dump_model()
print(json_model)
print(bst)

prediction = bst.predict(df)
print(prediction)

Но я получил следующее сообщение об ошибке:

Traceback (most recent call last):
  File "C:/Users/Samuel/PycharmProjects/untitled/gbm load.py", line 14, in <module>
    prediction = bst.predict(df)
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 2415, in predict
    data_has_header, is_reshape)
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 504, in predict
    data = _data_from_pandas(data, None, None, self.pandas_categorical)[0]
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 344, in _data_from_pandas
    + ', '.join(data.columns[bad_indices]))
ValueError: DataFrame.dtypes for data must be int, float or bool.
Did not expect the data types in the following fields: CAR NAME, ATTENTION GRABBER, KEY SPECS, DESCRIPTION, URL, PRICE

Затем я просто удалил материал в столбцах CAR NAME, ATBENTION GRABBER, KEY SPECS, DESCRIPTION, URL, PRICE и оставил пробег и год и получил следующую ошибку:

[LightGBM] [Fatal] The number of features in data (8) is not the same as it was in training data (33764).
Traceback (most recent call last):
  File "C:/Users/Samuel/PycharmProjects/untitled/gbm load.py", line 14, in <module>
    prediction = bst.predict(df)
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 2415, in predict
    data_has_header, is_reshape)
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 535, in predict
    preds, nrow = self.__pred_for_np2d(data, num_iteration, predict_type)
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 623, in __pred_for_np2d
    return inner_predict(mat, num_iteration, predict_type)
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 605, in inner_predict
    preds.ctypes.data_as(ctypes.POINTER(ctypes.c_double))))
  File "C:\Users\Samuel\PycharmProjects\untitled\venv\lib\site-packages\lightgbm\basic.py", line 45, in _safe_call
    raise LightGBMError(decode_string(_LIB.LGBM_GetLastError()))
lightgbm.basic.LightGBMError: The number of features in data (8) is not the same as it was in training data (33764).

Разве я как-то тренировал свою модель, используя только два из моих столбцов, а не все (кроме URL, который я не хотел использовать в любом случае)?

И что это значит? второе сообщение об ошибке означает?

...