<jupyter_start><jupyter_text><jupyter_code>!pip install --upgrade tables
!pip install eli5
!pip install xgboost
!pip install hyperopt
import pandas as pd
import numpy as np

import xgboost as xgb

from sklearn.metrics import mean_absolute_error as mae
from sklearn.model_selection import cross_val_score

from hyperopt import hp, fmin, tpe, STATUS_OK

import eli5
from eli5.sklearn import PermutationImportance
!pwd
cd '/content/drive/My Drive/Colab Notebooks/matrix/matrix_two/dw_matrix_car'
df = pd.read_hdf('data/car.h5')
df.shape<jupyter_output><empty_output><jupyter_text>Feature engineering<jupyter_code>SUFFIX_CAT = '_cat'
for feat in df.columns:
  if isinstance(df[feat][0], list): continue

  factorized_values = df[feat].factorize()[0]
  if SUFFIX_CAT in feat:
    df[feat] = factorized_values
  else:
    df[feat + SUFFIX_CAT] = factorized_values
df['param_rok-produkcji'] = df['param_rok-produkcji'].map(lambda x: -1 if str(x) == 'None' else int(x) )
df['param_moc'] = df['param_moc'].map(lambda x: -1 if str(x) == 'None' else int(str(x).replace(' ', '').replace('KM','')) )
df['param_pojemność-skokowa'] = df['param_pojemność-skokowa'].map(lambda x: -1 if str(x) == 'None' else int(str(x).replace(' ', '').replace('cm3','')) )

feats = ['param_napęd_cat','param_stan_cat','param_rok-produkcji','param_faktura-vat_cat','param_moc','param_skrzynia-biegów_cat','param_marka-pojazdu_cat','feature_kamera-cofania_cat','param_typ_cat','param_pojemność-skokowa','seller_name_cat','param_wersja_cat','feature_wspomaganie-kierownicy_cat','param_model-pojazdu_cat','feature_system-start-stop_cat','param_kod-silnika_cat','feature_asystent-pasa-ruchu_cat','feature_łopatki-zmiany-biegów_cat','feature_światła-led_cat','feature_czujniki-parkowania-przednie_cat']
def run_model(model, feats):
  X = df[feats].values
  y = df['price_value'].values

  scores = cross_val_score(model, X, y, cv=3, scoring='neg_mean_absolute_error')
  return np.mean(scores), np.std(scores)
xgb_params = {
    'max_depth': 5,
    'n_estimators': 50,
    'learning_rate': 0.1,
    'seed': 0
}


run_model(xgb.XGBRegressor(**xgb_params), feats )<jupyter_output>[23:23:22] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.
[23:23:26] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.
[23:23:29] WARNING: /workspace/src/objective/regression_obj.cu:152: reg:linear is now deprecated in favor of reg:squarederror.<jupyter_text>Hyperopt<jupyter_code>def obj_func(params):
  print("Training with params: ")
  print(params)

  mean_mae, score_std = run_model(xgb.XGBRegressor(**params), feats)

  return {'loss': np.abs(mean_mae), 'status': STATUS_OK }

# space
xgb_reg_params = {
     'learning_rate': hp.choice('learning_rate', np.arange(0.05, 0.31, 0.05)),
     'max_depth': hp.choice('max_depth', np.arange(5, 16, 1, dtype=int)),
     'subsample': hp.quniform('subsample', 0.5, 1, 0.05),
     'colsample_bytree': hp.quniform('colsample_bytree', 0.5, 1, 0.05),
     'objective': 'reg:linear',
     'n_estimators': 100,
     'seed': 0,
  }

# run
best = fmin(obj_func, xgb_reg_params, algo=tpe.suggest, max_evals=25)

best
!git add day4.ipynb
!git config --global user.email "<EMAIL>"
!git config --global user.name "Marcin"
!git commit -m "day_4 xgboost"
!git push -u origin master<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1525175644028103, 'fraction_numerical': 0.022540983606557378, 'mean_word_length': 6.224101479915434, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '643814', 'license': 'MIT', 'n_tokens_mistral': 1408, 'n_tokens_neox': 1328, 'n_words': 242, 'path': 'day5.ipynb', 'repo_name': 'aranjaka/dw_matrix_car', 'size': '3427'}