{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"from tqdm import tqdm_notebook as tqdm\nimport numpy as np\nimport pandas as pd\n\nraw = pd.read_csv('../input/train.csv', dtype={'acoustic_data': np.int16, 'time_to_failure': np.float64})","metadata":{"execution":{"iopub.status.busy":"2022-12-11T16:24:53.277623Z","iopub.execute_input":"2022-12-11T16:24:53.278000Z","iopub.status.idle":"2022-12-11T16:29:22.009464Z","shell.execute_reply.started":"2022-12-11T16:24:53.277950Z","shell.execute_reply":"2022-12-11T16:29:22.008113Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tqdm import tqdm_notebook\nimport warnings\nfrom tsfresh.feature_extraction import feature_calculators\nimport librosa\nimport pywt\nfrom sklearn.model_selection import KFold\nfrom sklearn.preprocessing import MinMaxScaler\nimport lightgbm as lgb\nwarnings.filterwarnings(\"ignore\")","metadata":{"execution":{"iopub.status.busy":"2022-12-11T16:29:32.150788Z","iopub.execute_input":"2022-12-11T16:29:32.151151Z","iopub.status.idle":"2022-12-11T16:29:34.905277Z","shell.execute_reply.started":"2022-12-11T16:29:32.151096Z","shell.execute_reply":"2022-12-11T16:29:34.904007Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pd.options.display.precision = 15\nraw.head(10)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T17:20:19.077286Z","iopub.execute_input":"2022-12-11T17:20:19.078117Z","iopub.status.idle":"2022-12-11T17:20:19.102860Z","shell.execute_reply.started":"2022-12-11T17:20:19.078009Z","shell.execute_reply":"2022-12-11T17:20:19.101713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rows = 150000\nsegments = int(np.floor(raw.shape[0] / rows))\nprint(\"Number of segments: \", segments)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T18:19:52.780771Z","iopub.execute_input":"2022-12-11T18:19:52.781197Z","iopub.status.idle":"2022-12-11T18:19:52.787378Z","shell.execute_reply.started":"2022-12-11T18:19:52.781127Z","shell.execute_reply":"2022-12-11T18:19:52.786119Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_X = pd.DataFrame(index=range(segments), dtype=np.float64)\ntrain_y = pd.DataFrame(index=range(segments), dtype=np.float64, columns=['time_to_failure'])","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:06:09.577198Z","iopub.execute_input":"2022-12-11T21:06:09.577659Z","iopub.status.idle":"2022-12-11T21:06:09.587115Z","shell.execute_reply.started":"2022-12-11T21:06:09.577587Z","shell.execute_reply":"2022-12-11T21:06:09.585864Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_X.shape, train_y.shape","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:06:09.998037Z","iopub.execute_input":"2022-12-11T21:06:09.998353Z","iopub.status.idle":"2022-12-11T21:06:10.004153Z","shell.execute_reply.started":"2022-12-11T21:06:09.998302Z","shell.execute_reply":"2022-12-11T21:06:10.003307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_features(seg_id, seg, X):\n    xc = pd.Series(seg['acoustic_data'].values)\n    zc = np.fft.fft(xc)\n    \n    X.loc[seg_id, 'mean'] = xc.mean()\n    X.loc[seg_id, 'std'] = xc.std()\n    X.loc[seg_id, 'max'] = xc.max()\n    X.loc[seg_id, 'min'] = xc.min()\n    \n    #FFT transform values\n    realFFT = np.real(zc)\n    imagFFT = np.imag(zc)\n    realFFT\n    X.loc[seg_id, 'Rmean'] = realFFT.mean()\n    X.loc[seg_id, 'Rstd'] = realFFT.std()\n    X.loc[seg_id, 'Rmax'] = realFFT.max()\n    X.loc[seg_id, 'Rmin'] = realFFT.min()\n    X.loc[seg_id, 'Imean'] = imagFFT.mean()\n    X.loc[seg_id, 'Istd'] = imagFFT.std()\n    X.loc[seg_id, 'Imax'] = imagFFT.max()\n    X.loc[seg_id, 'Imin'] = imagFFT.min()\n    X.loc[seg_id, 'Rmean_last_5000'] = realFFT[-5000:].mean()\n    X.loc[seg_id, 'Rstd__last_5000'] = realFFT[-5000:].std()\n    X.loc[seg_id, 'Rmax_last_5000'] = realFFT[-5000:].max()\n    X.loc[seg_id, 'Rmin_last_5000'] = realFFT[-5000:].min()\n    X.loc[seg_id, 'Rmean_last_15000'] = realFFT[-15000:].mean()\n    X.loc[seg_id, 'Rstd_last_15000'] = realFFT[-15000:].std()\n    X.loc[seg_id, 'Rmax_last_15000'] = realFFT[-15000:].max()\n    X.loc[seg_id, 'Rmin_last_15000'] = realFFT[-15000:].min()\n    \n    X.loc[seg_id, 'std_first_50000'] = xc[:50000].std()\n    X.loc[seg_id, 'std_last_50000'] = xc[-50000:].std()\n    X.loc[seg_id, 'std_first_10000'] = xc[:10000].std()\n    X.loc[seg_id, 'std_last_10000'] = xc[-10000:].std()\n    \n    X.loc[seg_id, 'avg_first_50000'] = xc[:50000].mean()\n    X.loc[seg_id, 'avg_last_50000'] = xc[-50000:].mean()\n    X.loc[seg_id, 'avg_first_10000'] = xc[:10000].mean()\n    X.loc[seg_id, 'avg_last_10000'] = xc[-10000:].mean()\n    \n    X.loc[seg_id, 'min_first_50000'] = xc[:50000].min()\n    X.loc[seg_id, 'min_last_50000'] = xc[-50000:].min()\n    X.loc[seg_id, 'min_first_10000'] = xc[:10000].min()\n    X.loc[seg_id, 'min_last_10000'] = xc[-10000:].min()\n    \n    X.loc[seg_id, 'max_first_50000'] = xc[:50000].max()\n    X.loc[seg_id, 'max_last_50000'] = xc[-50000:].max()\n    X.loc[seg_id, 'max_first_10000'] = xc[:10000].max()\n    X.loc[seg_id, 'max_last_10000'] = xc[-10000:].max()\n    \n    X.loc[seg_id, 'mean_change_rate_first_50000'] = np.mean(np.nonzero((np.diff(xc[:50000]) / xc[:50000][:-1]))[0])\n    X.loc[seg_id, 'mean_change_rate_last_50000'] = np.mean(np.nonzero((np.diff(xc[-50000:]) / xc[-50000:][:-1]))[0])\n    X.loc[seg_id, 'mean_change_rate_first_10000'] = np.mean(np.nonzero((np.diff(xc[:10000]) / xc[:10000][:-1]))[0])\n    X.loc[seg_id, 'mean_change_rate_last_10000'] = np.mean(np.nonzero((np.diff(xc[-10000:]) / xc[-10000:][:-1]))[0])\n    \n    \n    np.random.seed(1337)\n    noise = np.random.normal(0, 0.5, 150_000)\n    z = seg['acoustic_data'].values\n    z = z + noise\n    z = z - np.median(z)\n    \n    den_sample_simple = denoise_signal_simple(z)\n    mfcc = librosa.feature.mfcc(z)\n    mfcc_mean = mfcc.mean(axis=1)\n    #percentile_roll50_std_20 = np.percentile(pd.Series(z).rolling(50).std().dropna().values, 20)\n    \n    X.loc[seg_id, 'var_num_peaks_2_denoise_simple'] = feature_calculators.number_peaks(den_sample_simple, 2)\n    #X['var_percentile_roll50_std_20'] = percentile_roll50_std_20\n    X.loc[seg_id, 'var_mfcc_mean18'] = mfcc_mean[18]\n    X.loc[seg_id, 'var_mfcc_mean4'] = mfcc_mean[4]\n    X.loc[seg_id, 'first_location_of_maximum'] = feature_calculators.first_location_of_maximum(den_sample_simple)\n    \n    windows=50\n    \n    x_roll_std = pd.Series(z).rolling(windows).std().dropna().values\n    x_roll_mean = pd.Series(z).rolling(windows).mean().dropna().values\n        \n    X.loc[seg_id, 'ave_roll_std_' + str(windows)] = x_roll_std.mean()\n    X.loc[seg_id, 'std_roll_std_' + str(windows)] = x_roll_std.std()\n    X.loc[seg_id, 'max_roll_std_' + str(windows)] = x_roll_std.max()\n    X.loc[seg_id, 'min_roll_std_' + str(windows)] = x_roll_std.min()\n    X.loc[seg_id, 'percentile_roll_std_20_' + str(windows)] = np.percentile(x_roll_std, 20)\n    X.loc[seg_id, 'av_change_abs_roll_std_' + str(windows)] = np.mean(np.diff(x_roll_std))\n    X.loc[seg_id, 'abs_max_roll_std_' + str(windows)] = np.abs(x_roll_std).max()\n        \n    X.loc[seg_id, 'ave_roll_mean_' + str(windows)] = x_roll_mean.mean()\n    X.loc[seg_id, 'std_roll_mean_' + str(windows)] = x_roll_mean.std()\n    X.loc[seg_id, 'max_roll_mean_' + str(windows)] = x_roll_mean.max()\n    X.loc[seg_id, 'min_roll_mean_' + str(windows)] = x_roll_mean.min()\n    X.loc[seg_id, 'percentile_roll_mean_20' + str(windows)] = np.percentile(x_roll_mean, 20)\n    X.loc[seg_id, 'av_change_abs_roll_mean_' + str(windows)] = np.mean(np.diff(x_roll_mean))\n    X.loc[seg_id, 'abs_max_roll_mean_' + str(windows)] = np.abs(x_roll_mean).max()","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:06:38.973775Z","iopub.execute_input":"2022-12-11T21:06:38.974105Z","iopub.status.idle":"2022-12-11T21:06:38.999428Z","shell.execute_reply.started":"2022-12-11T21:06:38.974061Z","shell.execute_reply":"2022-12-11T21:06:38.997748Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def denoise_signal_simple(x, wavelet='db4', level=1):\n    coeff = pywt.wavedec(x, wavelet, mode=\"per\")\n    #univeral threshold\n    uthresh = 10\n    coeff[1:] = (pywt.threshold(i, value=uthresh, mode='hard') for i in coeff[1:])\n    # Reconstruct the signal using the thresholded coefficients\n    return pywt.waverec(coeff, wavelet, mode='per')","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:06:39.838180Z","iopub.execute_input":"2022-12-11T21:06:39.838531Z","iopub.status.idle":"2022-12-11T21:06:39.844238Z","shell.execute_reply.started":"2022-12-11T21:06:39.838467Z","shell.execute_reply":"2022-12-11T21:06:39.843311Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for seg_id in tqdm_notebook(range(segments)):\n    seg = raw.iloc[seg_id*rows:seg_id*rows+rows]\n    create_features(seg_id, seg, train_X)\n    train_y.loc[seg_id, 'time_to_failure'] = seg['time_to_failure'].values[-1]","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:06:41.098477Z","iopub.execute_input":"2022-12-11T21:06:41.099102Z","iopub.status.idle":"2022-12-11T21:16:38.499813Z","shell.execute_reply.started":"2022-12-11T21:06:41.098755Z","shell.execute_reply":"2022-12-11T21:16:38.498736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_X.head()","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:17:49.182906Z","iopub.execute_input":"2022-12-11T21:17:49.183230Z","iopub.status.idle":"2022-12-11T21:17:49.311336Z","shell.execute_reply.started":"2022-12-11T21:17:49.183189Z","shell.execute_reply":"2022-12-11T21:17:49.310478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_X.shape, train_y.shape","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:17:51.898509Z","iopub.execute_input":"2022-12-11T21:17:51.898873Z","iopub.status.idle":"2022-12-11T21:17:51.904915Z","shell.execute_reply.started":"2022-12-11T21:17:51.898826Z","shell.execute_reply":"2022-12-11T21:17:51.903761Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = train_X\ny = train_y","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:17:53.890602Z","iopub.execute_input":"2022-12-11T21:17:53.890984Z","iopub.status.idle":"2022-12-11T21:17:53.895828Z","shell.execute_reply.started":"2022-12-11T21:17:53.890927Z","shell.execute_reply":"2022-12-11T21:17:53.894932Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.read_csv('../input/sample_submission.csv', index_col='seg_id')\ntest_X = pd.DataFrame(columns=train_X.columns, dtype=np.float64, index=submission.index)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:17:56.289857Z","iopub.execute_input":"2022-12-11T21:17:56.290180Z","iopub.status.idle":"2022-12-11T21:17:56.315598Z","shell.execute_reply.started":"2022-12-11T21:17:56.290129Z","shell.execute_reply":"2022-12-11T21:17:56.314893Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.shape, test_X.shape","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:17:57.884526Z","iopub.execute_input":"2022-12-11T21:17:57.884898Z","iopub.status.idle":"2022-12-11T21:17:57.891224Z","shell.execute_reply.started":"2022-12-11T21:17:57.884841Z","shell.execute_reply":"2022-12-11T21:17:57.890307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for seg_id in tqdm_notebook(test_X.index):\n    seg = pd.read_csv('../input/test/' + seg_id + '.csv')\n    create_features(seg_id, seg, test_X)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:18:00.152722Z","iopub.execute_input":"2022-12-11T21:18:00.153357Z","iopub.status.idle":"2022-12-11T21:25:02.349002Z","shell.execute_reply.started":"2022-12-11T21:18:00.153289Z","shell.execute_reply":"2022-12-11T21:25:02.347954Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tx = test_X","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:15.621126Z","iopub.execute_input":"2022-12-11T21:26:15.621456Z","iopub.status.idle":"2022-12-11T21:26:15.625854Z","shell.execute_reply.started":"2022-12-11T21:26:15.621412Z","shell.execute_reply":"2022-12-11T21:26:15.625096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"스케일링","metadata":{}},{"cell_type":"code","source":"scaler = MinMaxScaler()\nscaler.fit(train_X)\ntrain_X = scaler.transform(train_X)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:18.240628Z","iopub.execute_input":"2022-12-11T21:26:18.241321Z","iopub.status.idle":"2022-12-11T21:26:18.251675Z","shell.execute_reply.started":"2022-12-11T21:26:18.241249Z","shell.execute_reply":"2022-12-11T21:26:18.250298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X = scaler.transform(test_X)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:18.577790Z","iopub.execute_input":"2022-12-11T21:26:18.578159Z","iopub.status.idle":"2022-12-11T21:26:18.584104Z","shell.execute_reply.started":"2022-12-11T21:26:18.578093Z","shell.execute_reply":"2022-12-11T21:26:18.582986Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_X","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:21.103098Z","iopub.execute_input":"2022-12-11T21:26:21.103409Z","iopub.status.idle":"2022-12-11T21:26:21.110124Z","shell.execute_reply.started":"2022-12-11T21:26:21.103361Z","shell.execute_reply":"2022-12-11T21:26:21.109321Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:22.134984Z","iopub.execute_input":"2022-12-11T21:26:22.135300Z","iopub.status.idle":"2022-12-11T21:26:22.143388Z","shell.execute_reply.started":"2022-12-11T21:26:22.135251Z","shell.execute_reply":"2022-12-11T21:26:22.141547Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_y.head()","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:23.187462Z","iopub.execute_input":"2022-12-11T21:26:23.187914Z","iopub.status.idle":"2022-12-11T21:26:23.205849Z","shell.execute_reply.started":"2022-12-11T21:26:23.187852Z","shell.execute_reply":"2022-12-11T21:26:23.204827Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_y = train_y.values\ntrain_y = np.ravel(train_y)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:24.416960Z","iopub.execute_input":"2022-12-11T21:26:24.417279Z","iopub.status.idle":"2022-12-11T21:26:24.422170Z","shell.execute_reply.started":"2022-12-11T21:26:24.417236Z","shell.execute_reply":"2022-12-11T21:26:24.421066Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_y","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:25.348135Z","iopub.execute_input":"2022-12-11T21:26:25.348469Z","iopub.status.idle":"2022-12-11T21:26:25.355764Z","shell.execute_reply.started":"2022-12-11T21:26:25.348415Z","shell.execute_reply":"2022-12-11T21:26:25.354595Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Modeling","metadata":{}},{"cell_type":"code","source":"#params = {'num_leaves': 4,\n      'min_data_in_leaf': 5,\n      'objective':'fair',\n      'max_depth': -1,\n      'learning_rate': 0.02,\n      \"boosting\": \"gbdt\",\n      'boost_from_average': True,\n      \"feature_fraction\": 0.9,\n      \"bagging_freq\": 1,\n      \"bagging_fraction\": 0.5,\n      \"bagging_seed\": 0,\n      \"metric\": 'mae',\n      \"verbosity\": -1,\n      'max_bin': 500,\n      'reg_alpha': 0,\n      'reg_lambda': 0,\n      'seed': 0,\n      'n_jobs': 1\n      }","metadata":{"execution":{"iopub.status.busy":"2022-12-11T18:42:36.719617Z","iopub.execute_input":"2022-12-11T18:42:36.720084Z","iopub.status.idle":"2022-12-11T18:42:36.730084Z","shell.execute_reply.started":"2022-12-11T18:42:36.719993Z","shell.execute_reply":"2022-12-11T18:42:36.728746Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"params = {'num_leaves': 51,#\n         'min_data_in_leaf': 10, #\n         'objective':'regression', #고정\n         'max_depth': -1,#고정\n         'learning_rate': 0.001,#\n         \"boosting\": \"gbdt\",#고정\n         \"feature_fraction\": 0.91,#\n         \"bagging_freq\": 1,#고정\n         \"bagging_fraction\": 0.91,#\n         \"bagging_seed\": 42,#고정\n         \"metric\": 'mae',#고정\n         \"lambda_l1\": 0.1,#\n         \"verbosity\": -1,#고정\n         \"nthread\": -1,#고정\n         \"random_state\": 42}","metadata":{"execution":{"iopub.status.busy":"2022-12-11T18:43:36.797967Z","iopub.execute_input":"2022-12-11T18:43:36.799086Z","iopub.status.idle":"2022-12-11T18:43:36.806989Z","shell.execute_reply.started":"2022-12-11T18:43:36.799010Z","shell.execute_reply":"2022-12-11T18:43:36.805867Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import mean_absolute_error\nfrom bayes_opt import BayesianOptimization\nfrom sklearn.model_selection import cross_validate\nimport lightgbm as lgbm\nfrom bayes_opt import BayesianOptimization\nfrom sklearn.metrics import roc_auc_score, make_scorer\nfrom sklearn.model_selection import cross_validate\nfrom lightgbm import LGBMRegressor","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:30.537158Z","iopub.execute_input":"2022-12-11T21:26:30.537500Z","iopub.status.idle":"2022-12-11T21:26:30.543395Z","shell.execute_reply.started":"2022-12-11T21:26:30.537449Z","shell.execute_reply":"2022-12-11T21:26:30.542188Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#목적함수 생성\n#실수형 값들이 들어올 수 있으므로 정수형 하이퍼파라미터는 정수형으로 변경해줘야 함\n\ndef lgbm_cv(learning_rate, num_leaves, min_data_in_leaf,\n            feature_fraction, bagging_fraction, lambda_l1):\n    model = LGBMRegressor(learning_rate=learning_rate,\n                                n_estimators = 1000, #고정값\n                                num_leaves = int(round(num_leaves)),\n                                max_depth = -1,\n                                min_data_in_leaf = int(round(min_data_in_leaf)),\n                                objective = 'regression',\n                                boosting = 'gbdt',\n                                bagging_freq = 1,\n                                bagging_seed = 42,\n                                metric = 'mae',\n                                verbosity = -1,\n                                nthread = -1,\n                                feature_fraction = max(min(feature_fraction, 1), 0),\n                                bagging_fraction = max(min(bagging_fraction, 1), 0),\n                                lambda_l1 = max(lambda_l1, 0),\n                                #lambda_l2 = max(lambda_l2, 0)\n                               )\n    #scoring = {'MAE_score': make_scorer(mean_absolute_error)}\n    result = cross_validate(model, X, y, cv=3)\n    #mae_score = result[\"test_mean_abolute_error\"].mean()\n    return result['test_score'].mean()\n    #return result.mean()\n\n    #return scoring","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:32.395902Z","iopub.execute_input":"2022-12-11T21:26:32.396372Z","iopub.status.idle":"2022-12-11T21:26:32.408631Z","shell.execute_reply.started":"2022-12-11T21:26:32.396298Z","shell.execute_reply":"2022-12-11T21:26:32.407620Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 입력값의 탐색 대상 구간\npbounds = {'learning_rate' : (0.001, 0.05),#\n           'num_leaves': (5, 60),#\n           'min_data_in_leaf': (5, 20), #\n           'feature_fraction': (0.7, 0.95), #\n           'bagging_fraction': (0.5, 0.9), #\n           'lambda_l1' : (0, 0.99),\n           #'lambda_l2' : (0, 0.99),\n          }","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:38.873330Z","iopub.execute_input":"2022-12-11T21:26:38.873782Z","iopub.status.idle":"2022-12-11T21:26:38.881189Z","shell.execute_reply.started":"2022-12-11T21:26:38.873607Z","shell.execute_reply":"2022-12-11T21:26:38.880011Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#f: 목적함수, pbounds:입력값의 탐색구간\nlgbmBO = BayesianOptimization(f = lgbm_cv, pbounds = pbounds, verbose = 2, random_state = 42 )","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:41.678632Z","iopub.execute_input":"2022-12-11T21:26:41.678956Z","iopub.status.idle":"2022-12-11T21:26:41.684952Z","shell.execute_reply.started":"2022-12-11T21:26:41.678910Z","shell.execute_reply":"2022-12-11T21:26:41.683380Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#목적함수가 최대가 되는 최적해 찾기(acq=ei)\nlgbmBO.maximize(init_points=5, n_iter = 20, acq='ei', xi=0.01)","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:26:42.048988Z","iopub.execute_input":"2022-12-11T21:26:42.049285Z","iopub.status.idle":"2022-12-11T21:44:06.407820Z","shell.execute_reply.started":"2022-12-11T21:26:42.049246Z","shell.execute_reply":"2022-12-11T21:44:06.406725Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"lgbmBO.max","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:45:15.812219Z","iopub.execute_input":"2022-12-11T21:45:15.812696Z","iopub.status.idle":"2022-12-11T21:45:15.819288Z","shell.execute_reply.started":"2022-12-11T21:45:15.812611Z","shell.execute_reply":"2022-12-11T21:45:15.818570Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"lgbmBO.max['params']['learning_rate']","metadata":{"execution":{"iopub.status.busy":"2022-12-11T20:53:48.751458Z","iopub.execute_input":"2022-12-11T20:53:48.751825Z","iopub.status.idle":"2022-12-11T20:53:48.757849Z","shell.execute_reply.started":"2022-12-11T20:53:48.751756Z","shell.execute_reply":"2022-12-11T20:53:48.756888Z"}}},{"cell_type":"code","source":"int(round(lgbmBO.max['params']['learning_rate']))","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:00:12.268255Z","iopub.execute_input":"2022-12-11T21:00:12.268993Z","iopub.status.idle":"2022-12-11T21:00:12.276396Z","shell.execute_reply.started":"2022-12-11T21:00:12.268923Z","shell.execute_reply":"2022-12-11T21:00:12.275483Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"parameter = {'num_leaves': 15,#\n         'min_data_in_leaf': 20, #\n         'objective':'regression', #고정\n         'max_depth': -1,#고정\n         'learning_rate': 0.002,#\n         \"boosting\": \"gbdt\",#고정\n         \"feature_fraction\": 0.7,#\n         \"bagging_freq\": 1,#고정\n         \"bagging_fraction\": 0.5,#\n         \"bagging_seed\": 42,#고정\n         \"metric\": 'mae',#고정\n         \"lambda_l1\": 0.99,#\n         \"verbosity\": -1,#고정\n         \"nthread\": -1,#고정\n         \"random_state\": 42}","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:58:56.025331Z","iopub.execute_input":"2022-12-11T21:58:56.026068Z","iopub.status.idle":"2022-12-11T21:58:56.036336Z","shell.execute_reply.started":"2022-12-11T21:58:56.025995Z","shell.execute_reply":"2022-12-11T21:58:56.035001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#높은 파라미터\nparameter = {'num_leaves': 5,#\n         'min_data_in_leaf': 20, #\n         'objective':'regression', #고정\n         'max_depth': -1,#고정\n         'learning_rate': 0.003,#\n         \"boosting\": \"gbdt\",#고정\n         \"feature_fraction\": 0.9,#\n         \"bagging_freq\": 1,#고정\n         \"bagging_fraction\": 0.87,#\n         \"bagging_seed\": 42,#고정\n         \"metric\": 'mae',#고정\n         \"lambda_l1\": 0.85,#\n         \"verbosity\": -1,#고정\n         \"nthread\": -1,#고정\n         \"random_state\": 42}","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:01:54.419478Z","iopub.execute_input":"2022-12-11T21:01:54.419840Z","iopub.status.idle":"2022-12-11T21:01:54.427378Z","shell.execute_reply.started":"2022-12-11T21:01:54.419779Z","shell.execute_reply":"2022-12-11T21:01:54.426413Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"n_fold = 3\n\nkf = KFold(n_splits=n_fold, shuffle=True, random_state=1337)\nkf = list(kf.split(np.arange(len(train_X))))","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:57:26.854941Z","iopub.execute_input":"2022-12-11T21:57:26.855297Z","iopub.status.idle":"2022-12-11T21:57:26.863342Z","shell.execute_reply.started":"2022-12-11T21:57:26.855243Z","shell.execute_reply":"2022-12-11T21:57:26.862101Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"oof = np.zeros(len(train_X))\nprediction = np.zeros(len(submission))\n\nfor fold_n, (train_index, valid_index) in enumerate(kf):\n    print('Fold', fold_n)\n\n    trn_data = lgb.Dataset(train_X[train_index], label=train_y[train_index])\n    val_data = lgb.Dataset(train_X[valid_index], label=train_y[valid_index])\n\n    clf = lgb.train(parameter, trn_data, 1000000, valid_sets = [trn_data, val_data], verbose_eval=1000, early_stopping_rounds = 1000)\n\n    oof[valid_index] += clf.predict(train_X[valid_index], num_iteration=clf.best_iteration)\n    prediction += clf.predict(test_X, num_iteration=clf.best_iteration)\n\nprediction /= n_fold","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:59:00.940639Z","iopub.execute_input":"2022-12-11T21:59:00.941019Z","iopub.status.idle":"2022-12-11T21:59:49.907511Z","shell.execute_reply.started":"2022-12-11T21:59:00.940952Z","shell.execute_reply":"2022-12-11T21:59:49.906528Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction","metadata":{"execution":{"iopub.status.busy":"2022-12-11T21:59:55.199028Z","iopub.execute_input":"2022-12-11T21:59:55.199355Z","iopub.status.idle":"2022-12-11T21:59:55.206411Z","shell.execute_reply.started":"2022-12-11T21:59:55.199304Z","shell.execute_reply":"2022-12-11T21:59:55.205215Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission['time_to_failure'] = prediction \nprint(submission.head())\nsubmission.to_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-12-11T22:00:01.163739Z","iopub.execute_input":"2022-12-11T22:00:01.164108Z","iopub.status.idle":"2022-12-11T22:00:01.189171Z","shell.execute_reply.started":"2022-12-11T22:00:01.164044Z","shell.execute_reply":"2022-12-11T22:00:01.188017Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}