Как соответствовать и прогнозировать в алгоритме Cat-Boost - PullRequest
0 голосов
/ 14 марта 2020

Я новичок в python. Я пытаюсь предсказать «time_to_failure» для данного «oustic_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)      #error line
    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 »выдает мне ошибку с ошибкой loglog

Трассировка (последний последний вызов):

Файл "E: \ dir \ question.py", строка 68, в main ()

Файл "E: \ dir \ question .py ", строка 65, в главном catbostregtest (X_train, y_train)

Файл" E: \ dir \ question.py ", строка 50, в catbostregtest model.fit (X_train, y_train)

Файл "C: \ Users \ xyz \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ catboost \ core.py", строка 4330, вписывается в файл save_snapshot, snapshot_file, snapshot_interval, init_model)

Файл "C: \ Users \ xyz \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ catboost \ core.py", строка 1690, в _fit train_params ["init_model"]

Файл "C: \ Users \ xyz \ AppData \ Local \ Continuum \ anaconda3 \ lib \ site-packages \ catboost \ core.py", строка 1225, в _train self._object._train (train_pool, test_pool, params, allow_clear_pool, init_model._object, если init_model else None)

Файл "_catboost.pyx", строка 3870, в _catboost._CatBoost._train

Файл "_catboost.pyx", строка 3916, в _catboost._CatBoost._train

CatBoostError: c: / goagent / pipelines / buildmaster / catboost.git / catboost / libs / data / quantification. cpp: 2424: все функции являются постоянными или игнорируется.

Это функция 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)

Вот структура поезда. CSV-файл. enter image description here Вот структура файла sample_submission.csv. enter image description here Вот структура одного из тестовых (csv) файлов. enter image description here

Как устранить ошибку, возникающую во время прогнозирования из модели catboost? Как я могу удалить эту ошибку, пожалуйста, помогите. Вы можете скачать и запустить проект в spyder ide по этой ссылке https://drive.google.com/file/d/1JFsNfE22ef82e-dS0zsZHDE3zGJxnJ_J/view?usp=sharing или https://github.com/princit/catboostAlgorithm

...