Member 8840306 Ответов: 0

Как предсказать с помощью алгоритма cat-boost


Я новичок в python. Я пытаюсь предсказать "time_to_failure" для данного "acoustic_data" в тестовом CSV-файле с помощью алгоритма catboost.

def catbostregtest(X_train, y_train):   
    # submission format
    submission = pd.read_csv('sample_submission.csv', index_col='seg_id')
    X_test = pd.DataFrame()
    # prepare test data
    for seg_id in submission.index:
        seg = pd.read_csv('test/' + seg_id + '.csv')
        ch = gen_features(seg['acoustic_data'])
        X_test = X_test.append(ch, ignore_index=True)
    # model of choice here
    model = CatBoostRegressor(iterations=10000, loss_function='MAE', boosting_type='Ordered')
    model.fit(X_train, y_train)
    y_hat = model.predict(X_test)    #error line
    # write submission file LSTM
    submission['time_to_failure'] = y_hat
    submission.to_csv('submissionCAT.csv')
    print(model.best_score_)

Эта функция "catbostregtest" выдает мне ошибку с errorlog
Traceback (most recent call last):<br />
      <br />
        File "E:\dir\code.py", line 290, in main()<br />
        <br />
        File "E:\dir\code.py", line 230, in main catbostregtest(X_train, y_train)<br />
        <br />
        File "E:\dir\code.py", line 175, in catbostregtest y_hat = model.predict(X_test)<br />
        <br />
        File "C:\Users\xyz\AppData\Local\Continuum\anaconda3\lib\site-packages\catboost\core.py", line 4365, in predict return self._predict(data, "RawFormulaVal", ntree_start, ntree_end, thread_count, verbose, 'predict')<br />
        <br />
        File "C:\Users\xyz\AppData\Local\Continuum\anaconda3\lib\site-packages\catboost\core.py", line 1854, in _predict predictions = self._base_predict(data, prediction_type, ntree_start, ntree_end, thread_count, verbose)<br />
        <br />
        File "C:\Users\xyz\AppData\Local\Continuum\anaconda3\lib\site-packages\catboost\core.py", line 1271, in _base_predict return self._object._base_predict(pool, prediction_type, ntree_start, ntree_end, thread_count, verbose)<br />
        <br />
        File "_catboost.pyx", line 4015, in _catboost._CatBoost._base_predict<br />
        <br />
        File "_catboost.pyx", line 4020, in _catboost._CatBoost._base_predict<br />
        <br />
        CatBoostError: c:/goagent/pipelines/buildmaster/catboost.git/catboost/libs/data/model_dataset_compatibility.cpp:236: Feature 0 from pool must be mean.


Это функция gen_features
def gen_features(X):
    strain = []
    strain.append(X.mean())
    strain.append(X.std())
    strain.append(X.min())
    strain.append(X.max())
    strain.append(X.kurtosis())
    strain.append(X.skew())
    strain.append(np.quantile(X,0.01))
    strain.append(np.quantile(X,0.05))
    strain.append(np.quantile(X,0.95))
    strain.append(np.quantile(X,0.99))
    strain.append(np.abs(X).max())
    strain.append(np.abs(X).mean())
    strain.append(np.abs(X).std())
    return pd.Series(strain)


Эта функция вызывается из основной функции

def main(): 
      train1 = pd.read_csv('train.csv', iterator=True, chunksize=150_000, dtype={'acoustic_data': np.int16, 'time_to_failure': np.float64})
      X_train = pd.DataFrame()
      y_train = pd.Series()
      for df in train1:
          ch = gen_features(df['acoustic_data'])
          X_train = X_train.append(ch, ignore_index=True)
          y_train = y_train.append(pd.Series(df['time_to_failure'].values[-1]))
  catbostregtest(X_train, y_train)


Вот структура файла train.csv
поезд — ImgBB[^]
Вот структура файла sample_submission.csv
подача заявки — ImgBB[^]
Вот структура одного из тестовых файлов(csv).
тест — ImgBB[^]
Как я могу устранить ошибку, возникающую при создании прогноза из модели catboost?
Как я могу удалить эту ошибку, пожалуйста, помогите. Вы можете скачать и запустить проект в spyder ide по этой ссылке Ссылка

Что я уже пробовал:

Я перепробовал все процедуры по этим ссылкам
Примеры использования - CatBoost. Документация[^]
регрессия python - Catboost. Экстраполяция Функций - Переполнение Стека[^]

Richard MacCutchan

"CatBoostError: c:/goagent/pipelines/buildmaster/catboost.git/catboost/libs/data/model_dataset_compatibility.cpp:236: характеристика 0 от бассейна, должно быть, имеете в виду."

Это ключевое сообщение об ошибке.

Member 8840306

Что такое строка ошибки в коде? Что показывает это "ключевое сообщение об ошибке"?

Richard MacCutchan

Посмотрите на сообщения об ошибках, они дают номер файла и строки.

0 Ответов