{"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":"## I don't understand why I get a Submission Scoring Error. If anyone knows, please let me know.","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom lightgbm import LGBMRegressor\nimport gresearch_crypto\nimport re","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pickle\nf = open('../input/models1/models1', 'rb')\nmodels = pickle.load(f)\n\nf = open('../input/target-corr/target_corr', 'rb')\ncorr = pickle.load(f)","metadata":{"execution":{"iopub.status.busy":"2022-01-04T03:16:33.442399Z","iopub.execute_input":"2022-01-04T03:16:33.442656Z","iopub.status.idle":"2022-01-04T03:16:33.586728Z","shell.execute_reply.started":"2022-01-04T03:16:33.442625Z","shell.execute_reply":"2022-01-04T03:16:33.586013Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import datetime\ndef upper_shadow(df):\n    return df['High'] - np.maximum(df['Close'], df['Open'])\n\ndef lower_shadow(df):\n    return np.minimum(df['Close'], df['Open']) - df['Low']\n\n\ndef add_time(df):\n  df[\"date\"] = df.index.map(datetime.datetime.fromtimestamp)\n\n  df[\"year\"] = df[\"date\"].map(lambda x:x.year)\n  df['month'] = df['date'].map(lambda x:x.month)\n  df['day'] = df['date'].map(lambda x:x.day)\n  df['hour'] = df['date'].map(lambda x:x.hour)\n  df['minute'] = df['date'].map(lambda x:x.minute)\n\n  df[\"sin_month\"] = (np.sin(2 * np.pi * df.month/12))\n  df[\"cos_month\"] = (np.cos(2 * np.pi * df.month/12))\n  df[\"sin_day\"] = (np.sin(2 * np.pi * df.day/31))\n  df[\"cos_day\"] = (np.cos(2 * np.pi * df.day/31))\n  df[\"sin_hour\"] = (np.sin(2 * np.pi * df.hour/24))\n  df[\"cos_hour\"] = (np.cos(2 * np.pi * df.hour/24))\n\n  df['date_top'] = df['date'].dt.strftime('%Y')+'/1/1 0:0:0'\n  df['date_top'] = pd.to_datetime(df['date_top'])\n  df['sec_in_year'] = (df['date'].view('int64') - df['date_top'].view('int64')) // 10**9\n  df['sec_in_year'].head()\n\n  df[\"sin_year\"] = (np.sin(2 * np.pi * df.sec_in_year/(365*24*60*60)))\n  df[\"cos_year\"] = (np.cos(2 * np.pi * df.sec_in_year/(365*24*60*60)))\n  #df = df.add_suffix('_s')\n  #df.drop(\"datetime_0_s\",axis=1,inplace=True)\n  df.drop('date_top',axis=1,inplace=True)\n  df = df.add_suffix(\"_s\")\n\n  return df\n\ndef get_features(df):\n  df_all = pd.DataFrame()\n  for id in range(14):\n\n    df_ = df.groupby('Asset_ID').get_group(id)[['timestamp', 'Count', 'Open', 'High', 'Low', 'Close','Volume', 'VWAP']]\n    df_['Upper_Shadow'] = upper_shadow(df_)\n    df_['Lower_Shadow'] = lower_shadow(df_)\n    df_ = df_.set_index(\"timestamp\")\n    \n    df_ = df_.add_suffix(\"_\"+str(id))\n\n    df_all = pd.concat([df_all,df_],axis=1)\n\n    #y = df_train.groupby('Asset_ID').get_group(id)[\"Target\"] #提出時は消す\n    ##y = y.add_suffix(\"_\"+str(id))\n    #Target = pd.concat([Target,y],axis=1)\n\n  df_all = add_time(df_all)\n\n  return df_all\n\n#個別で求める。\ndef get_features2(df,id):\n  y = corr.columns[id]\n  best = corr[y].drop(y).sort_values(ascending=False,key=abs).index[0]\n\n  best_ind = re.sub(r\"\\D\", \"\", best)\n\n  col_id = [column for column in df.columns if \"_\"+str(id)+\"_s\" in column]\n  col_best = [column for column in df.columns if \"_\"+str(best_ind)+\"_s\" in column]\n  time = ['month_s', 'day_s', 'hour_s', 'minute_s', 'sin_month_s', 'cos_month_s','sin_day_s', 'cos_day_s', 'sin_hour_s', 'cos_hour_s']\n\n  df = df[col_id+col_best+time]\n\n  return df","metadata":{"execution":{"iopub.status.busy":"2022-01-04T03:16:33.588072Z","iopub.execute_input":"2022-01-04T03:16:33.588787Z","iopub.status.idle":"2022-01-04T03:16:33.607024Z","shell.execute_reply.started":"2022-01-04T03:16:33.588748Z","shell.execute_reply":"2022-01-04T03:16:33.606186Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"env = gresearch_crypto.make_env()\niter_test = env.iter_test()\n\nfor i, (df_test, df_pred) in enumerate(iter_test):\n    x = get_features(df_test)\n    row_ids = df_test.row_id\n    for id in df_test.Asset_ID.unique():\n        model = models[id]\n        x_test = get_features2(x,id)\n\n        row_id = row_ids[id]\n        \n             \n        pred = model.predict(x_test)\n        #pred = 0\n        \n        #x_test['row_id'] =row_id\n      \n        df_pred.loc[df_pred['row_id'] == row_id, 'Target'] = pred\n        \n        \n    env.predict(df_pred)","metadata":{"execution":{"iopub.status.busy":"2022-01-04T03:16:33.609237Z","iopub.execute_input":"2022-01-04T03:16:33.610286Z","iopub.status.idle":"2022-01-04T03:16:34.084501Z","shell.execute_reply.started":"2022-01-04T03:16:33.61025Z","shell.execute_reply":"2022-01-04T03:16:34.083805Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}