{"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":"markdown","source":"# Crypt Target Visualize Importance","metadata":{}},{"cell_type":"code","source":"import os\nimport numpy as np\nimport pandas as pd\nimport random\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom contextlib import contextmanager\nfrom time import time\nfrom tqdm import tqdm\nimport lightgbm as lgbm\nimport category_encoders as ce\nfrom tensorflow.keras.utils import to_categorical\nfrom sklearn.metrics import classification_report, log_loss, accuracy_score\nfrom sklearn.metrics import mean_squared_error\nfrom sklearn.model_selection import KFold","metadata":{"papermill":{"duration":8.212399,"end_time":"2021-06-28T12:28:15.407991","exception":false,"start_time":"2021-06-28T12:28:07.195592","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:03.581439Z","iopub.execute_input":"2022-01-20T10:43:03.581988Z","iopub.status.idle":"2022-01-20T10:43:03.58814Z","shell.execute_reply.started":"2022-01-20T10:43:03.581951Z","shell.execute_reply":"2022-01-20T10:43:03.587272Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Data preparation","metadata":{"papermill":{"duration":0.025357,"end_time":"2021-06-28T12:28:15.459748","exception":false,"start_time":"2021-06-28T12:28:15.434391","status":"completed"},"tags":[]}},{"cell_type":"code","source":"data = pd.read_csv(\"../input/g-research-crypto-forecasting/train.csv\")\ndata[0:2].T","metadata":{"papermill":{"duration":0.14736,"end_time":"2021-06-28T12:28:15.632876","exception":false,"start_time":"2021-06-28T12:28:15.485516","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:03.59019Z","iopub.execute_input":"2022-01-20T10:43:03.59046Z","iopub.status.idle":"2022-01-20T10:43:35.469616Z","shell.execute_reply.started":"2022-01-20T10:43:03.590428Z","shell.execute_reply":"2022-01-20T10:43:35.468801Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data0=data[data['Asset_ID']==0]","metadata":{"papermill":{"duration":0.034834,"end_time":"2021-06-28T12:28:15.693652","exception":false,"start_time":"2021-06-28T12:28:15.658818","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:35.470773Z","iopub.execute_input":"2022-01-20T10:43:35.471306Z","iopub.status.idle":"2022-01-20T10:43:35.720162Z","shell.execute_reply.started":"2022-01-20T10:43:35.471267Z","shell.execute_reply":"2022-01-20T10:43:35.719421Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\ndata0['sma15T'] = data0['Count'].rolling(15).mean()/data0['Count'] -1\ndata0['sma60T'] = data0['Count'].rolling(60).mean()/data0['Count'] -1\ndata0['sma240T'] = data0['Count'].rolling(240).mean()/data0['Count'] -1\ndata0['return15T'] = data0['Count']/data0['Count'].shift(15) -1\ndata0['return60T'] = data0['Count']/data0['Count'].shift(60) -1\ndata0['return240T'] = data0['Count']/data0['Count'].shift(240) -1\n\ndata0['sma15P'] = data0['Open'].rolling(15).mean()/data0['Open'] -1\ndata0['sma60P'] = data0['Open'].rolling(60).mean()/data0['Open'] -1\ndata0['sma240P'] = data0['Open'].rolling(240).mean()/data0['Open'] -1\ndata0['return15P'] = data0['Open']/data0['Open'].shift(15) -1\ndata0['return60P'] = data0['Open']/data0['Open'].shift(60) -1\ndata0['return240P'] = data0['Open']/data0['Open'].shift(240) -1\n\ndata0['sma15H'] = data0['High'].rolling(15).mean()/data0['High'] -1\ndata0['sma60H'] = data0['High'].rolling(60).mean()/data0['High'] -1\ndata0['sma240H'] = data0['High'].rolling(240).mean()/data0['High'] -1\ndata0['return15H'] = data0['High']/data0['High'].shift(15) -1\ndata0['return60H'] = data0['High']/data0['High'].shift(60) -1\ndata0['return240H'] = data0['High']/data0['High'].shift(240) -1\n\ndata0['sma15L'] = data0['Low'].rolling(15).mean()/data0['Low'] -1\ndata0['sma60L'] = data0['Low'].rolling(60).mean()/data0['Low'] -1\ndata0['sma240L'] = data0['Low'].rolling(240).mean()/data0['Low'] -1\ndata0['return15L'] = data0['Low']/data0['Low'].shift(15) -1\ndata0['return60L'] = data0['Low']/data0['Low'].shift(60) -1\ndata0['return240L'] = data0['Low']/data0['Low'].shift(240) -1\n\ndata0['sma15C'] = data0['Close'].rolling(15).mean()/data0['Close'] -1\ndata0['sma60C'] = data0['Close'].rolling(60).mean()/data0['Close'] -1\ndata0['sma240C'] = data0['Close'].rolling(240).mean()/data0['Close'] -1\ndata0['return15C'] = data0['Close']/data0['Close'].shift(15) -1\ndata0['return60C'] = data0['Close']/data0['Close'].shift(60) -1\ndata0['return240C'] = data0['Close']/data0['Close'].shift(240) -1\n\ndata0['sma15V'] = data0['Volume'].rolling(15).mean()/data0['Volume'] -1\ndata0['sma60V'] = data0['Volume'].rolling(60).mean()/data0['Volume'] -1\ndata0['sma240V'] = data0['Volume'].rolling(240).mean()/data0['Volume'] -1\ndata0['return15V'] = data0['Volume']/data0['Volume'].shift(15) -1\ndata0['return60V'] = data0['Volume']/data0['Volume'].shift(60) -1\ndata0['return240V'] = data0['Volume']/data0['Volume'].shift(240) -1\n\ndata0['sma15W'] = data0['VWAP'].rolling(15).mean()/data0['VWAP'] -1\ndata0['sma60W'] = data0['VWAP'].rolling(60).mean()/data0['VWAP'] -1\ndata0['sma240W'] = data0['VWAP'].rolling(240).mean()/data0['VWAP'] -1\ndata0['return15W'] = data0['VWAP']/data0['VWAP'].shift(15) -1\ndata0['return60W'] = data0['VWAP']/data0['VWAP'].shift(60) -1\ndata0['return240W'] = data0['VWAP']/data0['VWAP'].shift(240) -1\n\ndata0['Upper_Shadow'] = data0['High'] - np.maximum(data0['Close'], data0['Open'])\ndata0['Lower_Shadow'] = np.minimum(data0['Close'], data0['Open']) - data0['Low']\n\ndata0['high2low'] = data0['High'] / data0['Low']\ndata0['close2open'] = data0['Close'] / data0['Open']\ndata0['high2open'] = data0['High'] / data0['Open']\ndata0['low2open'] = data0['Low'] / data0['Open']\n\ndata0['volume2count'] = data0['Volume'] / (data0['Count'] + 1)\ndata0['vwap2count'] = data0['VWAP'] / (data0['Count'] + 1)\ndata0['open2count'] = data0['Open'] / (data0['Count'] + 1)\ndata0['high2count'] = data0['High'] / (data0['Count'] + 1)\ndata0['low2count'] = data0['Low'] / (data0['Count'] + 1)\ndata0['close2count'] = data0['Close'] / (data0['Count'] + 1)\n\ndata0['count2vwap'] = data0['Count'] / (data0['VWAP'] + 1)\ndata0['open2vwap'] = data0['Open'] / (data0['VWAP'] + 1)\ndata0['high2vwap'] = data0['High'] / (data0['VWAP'] + 1)\ndata0['low2vwap'] = data0['Low'] / (data0['VWAP'] + 1)\ndata0['close2vwap'] = data0['Close'] / (data0['VWAP'] + 1)","metadata":{"execution":{"iopub.status.busy":"2022-01-20T10:43:35.723028Z","iopub.execute_input":"2022-01-20T10:43:35.723568Z","iopub.status.idle":"2022-01-20T10:43:36.889886Z","shell.execute_reply.started":"2022-01-20T10:43:35.723528Z","shell.execute_reply":"2022-01-20T10:43:36.889165Z"},"_kg_hide-output":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data0.info()","metadata":{"papermill":{"duration":0.060392,"end_time":"2021-06-28T12:28:15.780205","exception":false,"start_time":"2021-06-28T12:28:15.719813","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:36.891107Z","iopub.execute_input":"2022-01-20T10:43:36.891447Z","iopub.status.idle":"2022-01-20T10:43:36.905401Z","shell.execute_reply.started":"2022-01-20T10:43:36.891407Z","shell.execute_reply":"2022-01-20T10:43:36.904432Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data0=data0.dropna()","metadata":{"execution":{"iopub.status.busy":"2022-01-20T10:43:36.907009Z","iopub.execute_input":"2022-01-20T10:43:36.90734Z","iopub.status.idle":"2022-01-20T10:43:38.007647Z","shell.execute_reply.started":"2022-01-20T10:43:36.907298Z","shell.execute_reply":"2022-01-20T10:43:38.00677Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df=data0.copy()\nfrom sklearn.preprocessing import LabelEncoder\nfor c in df.columns:\n    if df[c].dtype=='object': \n        df[c] = df[c].fillna('N')\n        lbl = LabelEncoder()\n        lbl.fit(list(df[c].values))\n        df[c] = lbl.transform(df[c].values)","metadata":{"papermill":{"duration":0.178166,"end_time":"2021-06-28T12:28:15.987569","exception":false,"start_time":"2021-06-28T12:28:15.809403","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:38.008872Z","iopub.execute_input":"2022-01-20T10:43:38.009368Z","iopub.status.idle":"2022-01-20T10:43:38.293974Z","shell.execute_reply.started":"2022-01-20T10:43:38.009324Z","shell.execute_reply":"2022-01-20T10:43:38.293189Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1=df\ndata1[0:2].T","metadata":{"papermill":{"duration":0.043767,"end_time":"2021-06-28T12:28:16.05785","exception":false,"start_time":"2021-06-28T12:28:16.014083","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:38.295192Z","iopub.execute_input":"2022-01-20T10:43:38.295882Z","iopub.status.idle":"2022-01-20T10:43:38.314901Z","shell.execute_reply.started":"2022-01-20T10:43:38.29584Z","shell.execute_reply":"2022-01-20T10:43:38.3142Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data1.columns","metadata":{"papermill":{"duration":0.035139,"end_time":"2021-06-28T12:28:16.121085","exception":false,"start_time":"2021-06-28T12:28:16.085946","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:38.318459Z","iopub.execute_input":"2022-01-20T10:43:38.318658Z","iopub.status.idle":"2022-01-20T10:43:38.323629Z","shell.execute_reply.started":"2022-01-20T10:43:38.318635Z","shell.execute_reply":"2022-01-20T10:43:38.322988Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Target setting","metadata":{"papermill":{"duration":0.027206,"end_time":"2021-06-28T12:28:16.175632","exception":false,"start_time":"2021-06-28T12:28:16.148426","status":"completed"},"tags":[]}},{"cell_type":"code","source":"target=['Target']\ndatay=data1[target]\ndatax=data1.drop([target[0]],axis=1)","metadata":{"papermill":{"duration":0.037729,"end_time":"2021-06-28T12:28:16.240999","exception":false,"start_time":"2021-06-28T12:28:16.20327","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:38.324764Z","iopub.execute_input":"2022-01-20T10:43:38.325344Z","iopub.status.idle":"2022-01-20T10:43:38.557505Z","shell.execute_reply.started":"2022-01-20T10:43:38.325309Z","shell.execute_reply":"2022-01-20T10:43:38.556616Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train=np.array(datax)\ntrainy=np.array(datay)\nprint(train.shape)\nprint(trainy.shape)","metadata":{"papermill":{"duration":0.038268,"end_time":"2021-06-28T12:28:16.37726","exception":false,"start_time":"2021-06-28T12:28:16.338992","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:38.560028Z","iopub.execute_input":"2022-01-20T10:43:38.560261Z","iopub.status.idle":"2022-01-20T10:43:39.120715Z","shell.execute_reply.started":"2022-01-20T10:43:38.560215Z","shell.execute_reply":"2022-01-20T10:43:39.119919Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_columns = list(datax.columns)\nprint(df_columns)","metadata":{"papermill":{"duration":0.037756,"end_time":"2021-06-28T12:28:16.44335","exception":false,"start_time":"2021-06-28T12:28:16.405594","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:39.121982Z","iopub.execute_input":"2022-01-20T10:43:39.122219Z","iopub.status.idle":"2022-01-20T10:43:39.127071Z","shell.execute_reply.started":"2022-01-20T10:43:39.122186Z","shell.execute_reply":"2022-01-20T10:43:39.126295Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df=pd.DataFrame(train)\n#test_df=pd.DataFrame(test)","metadata":{"papermill":{"duration":0.036518,"end_time":"2021-06-28T12:28:16.509841","exception":false,"start_time":"2021-06-28T12:28:16.473323","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:39.128585Z","iopub.execute_input":"2022-01-20T10:43:39.128959Z","iopub.status.idle":"2022-01-20T10:43:39.136899Z","shell.execute_reply.started":"2022-01-20T10:43:39.128807Z","shell.execute_reply":"2022-01-20T10:43:39.136236Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.columns=df_columns\n#test_df.columns=df_columns","metadata":{"papermill":{"duration":0.035824,"end_time":"2021-06-28T12:28:16.574277","exception":false,"start_time":"2021-06-28T12:28:16.538453","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:39.138116Z","iopub.execute_input":"2022-01-20T10:43:39.138402Z","iopub.status.idle":"2022-01-20T10:43:39.144927Z","shell.execute_reply.started":"2022-01-20T10:43:39.138369Z","shell.execute_reply":"2022-01-20T10:43:39.144157Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_numeric_feature(input_df):\n    use_columns = df_columns \n    return input_df[use_columns].copy()","metadata":{"papermill":{"duration":0.036347,"end_time":"2021-06-28T12:28:16.639646","exception":false,"start_time":"2021-06-28T12:28:16.603299","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:39.147394Z","iopub.execute_input":"2022-01-20T10:43:39.147633Z","iopub.status.idle":"2022-01-20T10:43:39.153374Z","shell.execute_reply.started":"2022-01-20T10:43:39.147603Z","shell.execute_reply":"2022-01-20T10:43:39.152693Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from contextlib import contextmanager\nfrom time import time\n\nclass Timer:\n    def __init__(self, logger=None, format_str='{:.3f}[s]', prefix=None, suffix=None, sep=' '):\n\n        if prefix: format_str = str(prefix) + sep + format_str\n        if suffix: format_str = format_str + sep + str(suffix)\n        self.format_str = format_str\n        self.logger = logger\n        self.start = None\n        self.end = None\n\n    @property\n    def duration(self):\n        if self.end is None:\n            return 0\n        return self.end - self.start\n\n    def __enter__(self):\n        self.start = time()\n\n    def __exit__(self, exc_type, exc_val, exc_tb):\n        self.end = time()\n        out_str = self.format_str.format(self.duration)\n        if self.logger:\n            self.logger.info(out_str)\n        else:\n            print(out_str)","metadata":{"papermill":{"duration":0.041052,"end_time":"2021-06-28T12:28:16.712567","exception":false,"start_time":"2021-06-28T12:28:16.671515","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:39.155055Z","iopub.execute_input":"2022-01-20T10:43:39.155262Z","iopub.status.idle":"2022-01-20T10:43:39.165184Z","shell.execute_reply.started":"2022-01-20T10:43:39.155219Z","shell.execute_reply":"2022-01-20T10:43:39.164457Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tqdm import tqdm\n\ndef to_feature(input_df):\n\n    processors = [\n        create_numeric_feature,\n    ]\n    \n    out_df = pd.DataFrame()\n    \n    for func in tqdm(processors, total=len(processors)):\n        with Timer(prefix='create' + func.__name__ + ' '):\n            _df = func(input_df)\n\n        assert len(_df) == len(input_df), func.__name__\n        out_df = pd.concat([out_df, _df], axis=1)\n        \n    return out_df","metadata":{"papermill":{"duration":0.036753,"end_time":"2021-06-28T12:28:16.777956","exception":false,"start_time":"2021-06-28T12:28:16.741203","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:39.166524Z","iopub.execute_input":"2022-01-20T10:43:39.167325Z","iopub.status.idle":"2022-01-20T10:43:39.174828Z","shell.execute_reply.started":"2022-01-20T10:43:39.167245Z","shell.execute_reply":"2022-01-20T10:43:39.174095Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_feat_df = to_feature(train_df)\n#test_feat_df = to_feature(test_df)","metadata":{"papermill":{"duration":0.043956,"end_time":"2021-06-28T12:28:16.851836","exception":false,"start_time":"2021-06-28T12:28:16.80788","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:39.176276Z","iopub.execute_input":"2022-01-20T10:43:39.176898Z","iopub.status.idle":"2022-01-20T10:43:40.076882Z","shell.execute_reply.started":"2022-01-20T10:43:39.176862Z","shell.execute_reply":"2022-01-20T10:43:40.075363Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Model","metadata":{"papermill":{"duration":0.029424,"end_time":"2021-06-28T12:28:16.910956","exception":false,"start_time":"2021-06-28T12:28:16.881532","status":"completed"},"tags":[]}},{"cell_type":"code","source":"import lightgbm as lgbm\nfrom sklearn.metrics import mean_squared_error\n\ndef fit_lgbm(X, y, cv, \n             params: dict=None, \n             verbose: int=50):\n\n    if params is None:\n        params = {}\n\n    models = []\n    oof_pred = np.zeros_like(y, dtype=np.float)\n\n    for i, (idx_train, idx_valid) in enumerate(cv): \n        x_train, y_train = X[idx_train], y[idx_train]\n        x_valid, y_valid = X[idx_valid], y[idx_valid]\n\n        clf = lgbm.LGBMRegressor(**params)\n        \n        with Timer(prefix='fit fold={} '.format(i)):\n            clf.fit(x_train, y_train, \n                    eval_set=[(x_valid, y_valid)],  \n                    early_stopping_rounds=100,\n                    verbose=verbose)\n\n        pred_i = clf.predict(x_valid)\n        oof_pred[idx_valid] = pred_i\n        models.append(clf)\n        print(f'Fold {i} RMSLE: {mean_squared_error(y_valid, pred_i) ** .5:.4f}')\n        print()\n\n    score = mean_squared_error(y, oof_pred) ** .5\n    print('-' * 50)\n    print('FINISHED | Whole RMSLE: {:.4f}'.format(score))\n    return oof_pred, models","metadata":{"papermill":{"duration":0.042534,"end_time":"2021-06-28T12:28:16.984282","exception":false,"start_time":"2021-06-28T12:28:16.941748","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:40.078247Z","iopub.execute_input":"2022-01-20T10:43:40.078615Z","iopub.status.idle":"2022-01-20T10:43:40.088567Z","shell.execute_reply.started":"2022-01-20T10:43:40.078571Z","shell.execute_reply":"2022-01-20T10:43:40.087774Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"params = {\n    'objective': 'rmse', \n    'learning_rate': .1,\n    'reg_lambda': 1.,\n    'reg_alpha': .1,\n    'max_depth': 5, \n    'n_estimators': 10000, \n    'colsample_bytree': .5, \n    'min_child_samples': 10,\n    'subsample_freq': 3,\n    'subsample': .9,\n    'importance_type': 'gain', \n    'random_state': 71,\n    'num_leaves': 62\n}","metadata":{"papermill":{"duration":0.038177,"end_time":"2021-06-28T12:28:17.051859","exception":false,"start_time":"2021-06-28T12:28:17.013682","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:40.090078Z","iopub.execute_input":"2022-01-20T10:43:40.090594Z","iopub.status.idle":"2022-01-20T10:43:40.101621Z","shell.execute_reply.started":"2022-01-20T10:43:40.090555Z","shell.execute_reply":"2022-01-20T10:43:40.100782Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = trainy\nydf=pd.DataFrame(y)\nydf","metadata":{"papermill":{"duration":0.047348,"end_time":"2021-06-28T12:28:17.203614","exception":false,"start_time":"2021-06-28T12:28:17.156266","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:40.103342Z","iopub.execute_input":"2022-01-20T10:43:40.103665Z","iopub.status.idle":"2022-01-20T10:43:40.117334Z","shell.execute_reply.started":"2022-01-20T10:43:40.103627Z","shell.execute_reply":"2022-01-20T10:43:40.11639Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import KFold\n\nfor i in range(1):\n    fold = KFold(n_splits=5, shuffle=True, random_state=71)\n    ydfi=ydf.iloc[:,i]\n    y=np.array(ydfi)\n    cv = list(fold.split(train_feat_df, y))\n    oof, models = fit_lgbm(train_feat_df.values, y, cv, params=params, verbose=500)\n    \n    fig,ax = plt.subplots(figsize=(6,6))\n    ax.set_title(target[i],fontsize=20)\n    ax.set_xlabel('Predicted Target',fontsize=12)\n    ax.set_ylabel('Actual Target',fontsize=12)\n    ax.scatter(oof,y)\n","metadata":{"papermill":{"duration":5.842095,"end_time":"2021-06-28T12:28:23.078826","exception":false,"start_time":"2021-06-28T12:28:17.236731","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2022-01-20T10:43:40.119003Z","iopub.execute_input":"2022-01-20T10:43:40.119789Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(target)","metadata":{"papermill":{"duration":0.04582,"end_time":"2021-06-28T12:28:23.159532","exception":false,"start_time":"2021-06-28T12:28:23.113712","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Visualize Importance","metadata":{"papermill":{"duration":0.033834,"end_time":"2021-06-28T12:28:23.229055","exception":false,"start_time":"2021-06-28T12:28:23.195221","status":"completed"},"tags":[]}},{"cell_type":"code","source":"def visualize_importance(models, feat_train_df):\n\n    feature_importance_df = pd.DataFrame()\n    for i, model in enumerate(models):\n        _df = pd.DataFrame()\n        _df['feature_importance'] = model.feature_importances_\n        _df['column'] = feat_train_df.columns\n        _df['fold'] = i + 1\n        feature_importance_df = pd.concat([feature_importance_df, _df], \n                                          axis=0, ignore_index=True)\n\n    order = feature_importance_df.groupby('column')\\\n        .sum()[['feature_importance']]\\\n        .sort_values('feature_importance', ascending=False).index[:50]\n\n    fig, ax = plt.subplots(figsize=(8, max(6, len(order) * .25)))\n    sns.boxenplot(data=feature_importance_df, \n                  x='feature_importance', \n                  y='column', \n                  order=order, \n                  ax=ax, \n                  palette='viridis', \n                  orient='h')\n    \n    ax.tick_params(axis='x', rotation=0)\n    #ax.set_title('Importance')\n    ax.grid()\n    fig.tight_layout()\n    \n    return fig,ax\n\n#fig, ax = visualize_importance(models, train_feat_df)","metadata":{"papermill":{"duration":0.047023,"end_time":"2021-06-28T12:28:23.310431","exception":false,"start_time":"2021-06-28T12:28:23.263408","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(1):\n    fold = KFold(n_splits=5, shuffle=True, random_state=71)\n    ydfi=ydf.iloc[:,i]\n    y=np.array(ydfi)\n    cv = list(fold.split(train_feat_df, y))\n    oof, models = fit_lgbm(train_feat_df.values, y, cv, params=params, verbose=500)\n    fig, ax = visualize_importance(models, train_feat_df)\n    ax.set_title(target[i]+' Imortance',fontsize=20)","metadata":{"papermill":{"duration":6.188472,"end_time":"2021-06-28T12:28:29.533311","exception":false,"start_time":"2021-06-28T12:28:23.344839","status":"completed"},"tags":[],"_kg_hide-output":false,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig,ax = plt.subplots(figsize=(6,6))\nax.set_title('Low vs Target',fontsize=20)\nax.set_xlabel('Low',fontsize=12)\nax.set_ylabel('Target',fontsize=12)\nax.scatter(data0['Low'],data0['Target'])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fig,ax = plt.subplots(figsize=(6,6))\nax.set_title('Close vs Target',fontsize=20)\nax.set_xlabel('Close',fontsize=12)\nax.set_ylabel('Target',fontsize=12)\nax.scatter(data0['Close'],data0['Target'])","metadata":{"papermill":{"duration":0.282721,"end_time":"2021-06-28T12:28:29.930676","exception":false,"start_time":"2021-06-28T12:28:29.647955","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"papermill":{"duration":0.040568,"end_time":"2021-06-28T12:28:30.451319","exception":false,"start_time":"2021-06-28T12:28:30.410751","status":"completed"},"tags":[]},"execution_count":null,"outputs":[]}]}