{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":50160,"databundleVersionId":7921029,"sourceType":"competition"}],"dockerImageVersionId":30646,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import polars as pl\nimport pandas as pd\nimport numpy as np\nimport seaborn as sns\nimport matplotlib.pyplot as plt","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-03-17T11:37:31.285058Z","iopub.execute_input":"2024-03-17T11:37:31.285420Z","iopub.status.idle":"2024-03-17T11:37:31.290291Z","shell.execute_reply.started":"2024-03-17T11:37:31.285392Z","shell.execute_reply":"2024-03-17T11:37:31.289346Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dath_train = '/kaggle/input/home-credit-credit-risk-model-stability/csv_files/train/'\ndath_test = '/kaggle/input/home-credit-credit-risk-model-stability/csv_files/test/'","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:31.299387Z","iopub.execute_input":"2024-03-17T11:37:31.299646Z","iopub.status.idle":"2024-03-17T11:37:31.303888Z","shell.execute_reply.started":"2024-03-17T11:37:31.299624Z","shell.execute_reply":"2024-03-17T11:37:31.303007Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def set_type(df):\n    for col in df.columns:\n        if col[-1] in (\"P\", \"A\"):\n            df = df.with_columns(pl.col(col).cast(pl.Float64).alias(col))\n    return df","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:31.311614Z","iopub.execute_input":"2024-03-17T11:37:31.311909Z","iopub.status.idle":"2024-03-17T11:37:31.316929Z","shell.execute_reply.started":"2024-03-17T11:37:31.311885Z","shell.execute_reply":"2024-03-17T11:37:31.316058Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# base_data\ntrain_base.csv、test_base.csv","metadata":{}},{"cell_type":"code","source":"train_base = pl.read_csv(dath_train+'train_base.csv')\ntest_base  = pl.read_csv(dath_test +'test_base.csv')","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:31.318546Z","iopub.execute_input":"2024-03-17T11:37:31.319138Z","iopub.status.idle":"2024-03-17T11:37:31.462102Z","shell.execute_reply.started":"2024-03-17T11:37:31.319105Z","shell.execute_reply":"2024-03-17T11:37:31.461153Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# detph = 0\ninternal data: train_static_0_0.csv 、 train_static_0_1.csv 、test_static_0_0.csv、test_static_0_1.csv、test_static_0_2.csv\n\nexternal data: train_static_cb_0.csv 、 test_static_cb_0.csv","metadata":{}},{"cell_type":"code","source":"## internal\ntrain_static = pl.concat([\n    pl.read_csv(dath_train+'train_static_0_0.csv').pipe(set_type),\n    pl.read_csv(dath_train+'train_static_0_1.csv').pipe(set_type),\n],how='vertical_relaxed')\n\n\ntest_static = pl.concat([\n    pl.read_csv(dath_test+'test_static_0_0.csv').pipe(set_type),\n    pl.read_csv(dath_test+'test_static_0_1.csv').pipe(set_type),\n    pl.read_csv(dath_test+'test_static_0_2.csv').pipe(set_type),\n],how='vertical_relaxed')\n\n##extetnal\n\ntrain_static_cb = pl.read_csv(dath_train+'train_static_cb_0.csv').pipe(set_type)\ntest_static_cb = pl.read_csv(dath_test+'test_static_cb_0.csv').pipe(set_type)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:31.463662Z","iopub.execute_input":"2024-03-17T11:37:31.464025Z","iopub.status.idle":"2024-03-17T11:37:39.641852Z","shell.execute_reply.started":"2024-03-17T11:37:31.463993Z","shell.execute_reply":"2024-03-17T11:37:39.640937Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# detph =1\n## internal data source\n**Train Files:**\n\ntrain_applprev_1_0.csv\ntrain_applprev_1_1.csv\ntrain_other_1.csv\ntrain_deposit_1.csv\ntrain_person_1.csv\ntrain_debitcard_1.csv\n\n**Test Files:**\n\ntest_applprev_1_0.csv\ntest_applprev_1_1.csv\ntest_applprev_1_2.csv\ntest_other_1.csv\ntest_deposit_1.csv\ntest_person_1.csv\ntest_debitcard_1.csv","metadata":{}},{"cell_type":"code","source":"##internal\ntrain_applprev = pl.concat([\n    pl.read_csv(dath_train + 'train_applprev_1_0.csv').pipe(set_type),\n    pl.read_csv(dath_train + 'train_applprev_1_1.csv').pipe(set_type),\n],how='vertical_relaxed')\n\ntrain_other = pl.read_csv(dath_train + 'train_other_1.csv').pipe(set_type)\ntrain_deposit =  pl.read_csv(dath_train + 'train_deposit_1.csv').pipe(set_type)\ntrain_person =  pl.read_csv(dath_train + 'train_person_1.csv').pipe(set_type)\ntrain_debitcard =  pl.read_csv(dath_train + 'train_debitcard_1.csv').pipe(set_type)\n##########################################################################################\n\ntest_applprev = pl.concat([\n    pl.read_csv(dath_test + 'test_applprev_1_0.csv').pipe(set_type),\n    pl.read_csv(dath_test + 'test_applprev_1_1.csv').pipe(set_type),\n],how='vertical_relaxed')\n\ntest_other = pl.read_csv(dath_test + 'test_other_1.csv').pipe(set_type)\ntest_deposit =  pl.read_csv(dath_test + 'test_deposit_1.csv').pipe(set_type)\ntest_person =  pl.read_csv(dath_test + 'test_person_1.csv').pipe(set_type)\ntest_debitcard =  pl.read_csv(dath_test + 'test_debitcard_1.csv').pipe(set_type)\n\n","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:39.643201Z","iopub.execute_input":"2024-03-17T11:37:39.643754Z","iopub.status.idle":"2024-03-17T11:37:48.247161Z","shell.execute_reply.started":"2024-03-17T11:37:39.643717Z","shell.execute_reply":"2024-03-17T11:37:48.246313Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## clean null data\n\nratio > 0.5","metadata":{}},{"cell_type":"code","source":"def clean_data(df) :\n    for col in df.columns:\n        \n        null_ratio = df[col].null_count()/ len(df)\n        \n        if null_ratio >0.5:\n            df = df.drop(col)\n    \n    df = df.unique(subset='case_id')\n    df = df.drop('num_group1')\n    return df","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:48.249135Z","iopub.execute_input":"2024-03-17T11:37:48.249450Z","iopub.status.idle":"2024-03-17T11:37:48.255225Z","shell.execute_reply.started":"2024-03-17T11:37:48.249424Z","shell.execute_reply":"2024-03-17T11:37:48.254088Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# data concat","metadata":{}},{"cell_type":"code","source":"train_static        = train_static.pipe(clean_data).sort(by='case_id')\ntrain_static_cb     = train_static_cb.pipe(clean_data).sort(by='case_id')\ntrain_applprev      = train_applprev.pipe(clean_data).sort(by='case_id')\ntrain_other         = train_other.pipe(clean_data).sort(by='case_id')\ntrain_deposit       = train_deposit.pipe(clean_data).sort(by='case_id')\ntrain_person        = train_person.pipe(clean_data).sort(by='case_id')\ntrain_debitcard     = train_debitcard.pipe(clean_data).sort(by='case_id')\n\n\n","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:48.256273Z","iopub.execute_input":"2024-03-17T11:37:48.256517Z","iopub.status.idle":"2024-03-17T11:37:59.736638Z","shell.execute_reply.started":"2024-03-17T11:37:48.256497Z","shell.execute_reply":"2024-03-17T11:37:59.735678Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_static        = test_static.pipe(clean_data).sort(by='case_id')\ntest_static_cb     = test_static_cb.pipe(clean_data).sort(by='case_id')\ntest_applprev      = test_applprev.pipe(clean_data).sort(by='case_id')\ntest_other         = test_other.pipe(clean_data).sort(by='case_id')\ntest_deposit       = test_deposit.pipe(clean_data).sort(by='case_id')\ntest_person        = test_person.pipe(clean_data).sort(by='case_id')\ntest_debitcard     = test_debitcard.pipe(clean_data).sort(by='case_id')","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:59.737977Z","iopub.execute_input":"2024-03-17T11:37:59.738377Z","iopub.status.idle":"2024-03-17T11:37:59.764100Z","shell.execute_reply.started":"2024-03-17T11:37:59.738345Z","shell.execute_reply":"2024-03-17T11:37:59.763230Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_raw = train_base.join(train_static,on='case_id',how='left').join(\n    train_static_cb,on='case_id',how='left').join(\n    train_applprev,on='case_id',how='left').join(\n    train_other,on='case_id',how='left').join(\n    train_deposit,on='case_id',how='left').join(\n    train_person,on='case_id',how='left').join(\n    train_debitcard,on='case_id',how='left')\n\n\n                  ","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:37:59.765261Z","iopub.execute_input":"2024-03-17T11:37:59.765571Z","iopub.status.idle":"2024-03-17T11:38:02.043403Z","shell.execute_reply.started":"2024-03-17T11:37:59.765543Z","shell.execute_reply":"2024-03-17T11:38:02.042580Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_raw = test_base.join(test_static,on='case_id',how='left').join(\n    test_static_cb,on='case_id',how='left').join(\n    test_applprev,on='case_id',how='left').join(\n    test_other,on='case_id',how='left').join(\n    test_deposit,on='case_id',how='left').join(\n    test_person,on='case_id',how='left').join(\n    test_debitcard,on='case_id',how='left')","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.044573Z","iopub.execute_input":"2024-03-17T11:38:02.044922Z","iopub.status.idle":"2024-03-17T11:38:02.053757Z","shell.execute_reply.started":"2024-03-17T11:38:02.044890Z","shell.execute_reply":"2024-03-17T11:38:02.052933Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"drop_list = []\nfor i in train_raw.columns:\n    if train_raw[i].null_count()/len(train_raw) >0.5:\n        drop_list = np.append(drop_list,i)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.054684Z","iopub.execute_input":"2024-03-17T11:38:02.054912Z","iopub.status.idle":"2024-03-17T11:38:02.065563Z","shell.execute_reply.started":"2024-03-17T11:38:02.054891Z","shell.execute_reply":"2024-03-17T11:38:02.064829Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_raw = train_raw.drop(drop_list)\ntest_raw = test_raw.drop(drop_list)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.069781Z","iopub.execute_input":"2024-03-17T11:38:02.070305Z","iopub.status.idle":"2024-03-17T11:38:02.085598Z","shell.execute_reply.started":"2024-03-17T11:38:02.070281Z","shell.execute_reply":"2024-03-17T11:38:02.084806Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_lab = train_raw.select(['target'])","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.086505Z","iopub.execute_input":"2024-03-17T11:38:02.086777Z","iopub.status.idle":"2024-03-17T11:38:02.096033Z","shell.execute_reply.started":"2024-03-17T11:38:02.086754Z","shell.execute_reply":"2024-03-17T11:38:02.095296Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_raw = train_raw.drop(['id','target','date_decision','MONTH','WEEK_NUM'])\ntest_raw = test_raw.drop(['id','target','date_decision','MONTH','WEEK_NUM'])","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.097053Z","iopub.execute_input":"2024-03-17T11:38:02.097299Z","iopub.status.idle":"2024-03-17T11:38:02.111312Z","shell.execute_reply.started":"2024-03-17T11:38:02.097277Z","shell.execute_reply":"2024-03-17T11:38:02.110311Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def drop_diff(df):    \n    diff_1 = [col for col in train_raw.columns if col not in test_raw.columns]\n    diff_2 = [col for col in test_raw.columns if col not in train_raw.columns]\n    df = df.drop(diff_1)\n    df = df.drop(diff_2)\n    return df","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.112594Z","iopub.execute_input":"2024-03-17T11:38:02.113007Z","iopub.status.idle":"2024-03-17T11:38:02.120833Z","shell.execute_reply.started":"2024-03-17T11:38:02.112976Z","shell.execute_reply":"2024-03-17T11:38:02.119914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_raw = train_raw.pipe(drop_diff)\ntest_raw = test_raw.pipe(drop_diff)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.121953Z","iopub.execute_input":"2024-03-17T11:38:02.122288Z","iopub.status.idle":"2024-03-17T11:38:02.150623Z","shell.execute_reply.started":"2024-03-17T11:38:02.122263Z","shell.execute_reply":"2024-03-17T11:38:02.149835Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Label_Encoder","metadata":{}},{"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.151767Z","iopub.execute_input":"2024-03-17T11:38:02.152057Z","iopub.status.idle":"2024-03-17T11:38:02.156287Z","shell.execute_reply.started":"2024-03-17T11:38:02.152032Z","shell.execute_reply":"2024-03-17T11:38:02.155298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"le = LabelEncoder()","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.157621Z","iopub.execute_input":"2024-03-17T11:38:02.158024Z","iopub.status.idle":"2024-03-17T11:38:02.166141Z","shell.execute_reply.started":"2024-03-17T11:38:02.157973Z","shell.execute_reply":"2024-03-17T11:38:02.165275Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def label_encoder(df):\n    str_list=[]\n    for col in df.columns:\n        if df[col].dtype ==pl.String:\n            str_list.append(col)   \n    string = df[str_list]\n    string = string.to_pandas()\n    df = df.drop(string)\n    \n    for i in string.columns:\n        string[i] = le.fit_transform(string[i])\n    \n    string = pl.from_pandas(string)\n    \n    df = df.hstack(string)\n    return df","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.167149Z","iopub.execute_input":"2024-03-17T11:38:02.167403Z","iopub.status.idle":"2024-03-17T11:38:02.176757Z","shell.execute_reply.started":"2024-03-17T11:38:02.167382Z","shell.execute_reply":"2024-03-17T11:38:02.175803Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = train_raw.pipe(label_encoder)\ntest = test_raw.pipe(label_encoder)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:02.177880Z","iopub.execute_input":"2024-03-17T11:38:02.178192Z","iopub.status.idle":"2024-03-17T11:38:24.007672Z","shell.execute_reply.started":"2024-03-17T11:38:02.178168Z","shell.execute_reply":"2024-03-17T11:38:24.006805Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(train_raw.shape)\nprint(test_raw.shape)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:24.008966Z","iopub.execute_input":"2024-03-17T11:38:24.009252Z","iopub.status.idle":"2024-03-17T11:38:24.014519Z","shell.execute_reply.started":"2024-03-17T11:38:24.009228Z","shell.execute_reply":"2024-03-17T11:38:24.013393Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# model_LGBM","metadata":{}},{"cell_type":"code","source":"import optuna as opt\nfrom lightgbm import LGBMRegressor\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import accuracy_score,roc_auc_score\nimport lightgbm as lgb\n","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:31.508517Z","iopub.execute_input":"2024-03-17T11:38:31.509372Z","iopub.status.idle":"2024-03-17T11:38:35.567448Z","shell.execute_reply.started":"2024-03-17T11:38:31.509340Z","shell.execute_reply":"2024-03-17T11:38:35.566673Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_train,x_test,y_train,y_test=train_test_split(train,train_lab,train_size=0.7)\nx_train,x_valid,y_train,y_valid=train_test_split(x_train,y_train,train_size=0.7)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:35.568864Z","iopub.execute_input":"2024-03-17T11:38:35.569125Z","iopub.status.idle":"2024-03-17T11:38:39.097255Z","shell.execute_reply.started":"2024-03-17T11:38:35.569103Z","shell.execute_reply":"2024-03-17T11:38:39.096230Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model=LGBMRegressor()\nmodel.fit(x_train.to_numpy(),y_train.to_numpy(),eval_set=(x_valid.to_numpy(),y_valid.to_numpy()),eval_metric='auc')\npred = model.predict(x_test)\nauc = roc_auc_score(y_test,pred)\nprint(auc)\n","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:38:39.098750Z","iopub.execute_input":"2024-03-17T11:38:39.099093Z","iopub.status.idle":"2024-03-17T11:39:30.912311Z","shell.execute_reply.started":"2024-03-17T11:38:39.099065Z","shell.execute_reply":"2024-03-17T11:39:30.911124Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ID = test_raw['case_id']\nsubm = model.predict(test)\n\nsubmission = pd.DataFrame({'case_id':ID,'score':subm})","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:39:30.914724Z","iopub.execute_input":"2024-03-17T11:39:30.915406Z","iopub.status.idle":"2024-03-17T11:39:30.923539Z","shell.execute_reply.started":"2024-03-17T11:39:30.915368Z","shell.execute_reply":"2024-03-17T11:39:30.922704Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv('submission.csv',index=False)","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:39:30.924811Z","iopub.execute_input":"2024-03-17T11:39:30.925336Z","iopub.status.idle":"2024-03-17T11:39:30.947323Z","shell.execute_reply.started":"2024-03-17T11:39:30.925305Z","shell.execute_reply":"2024-03-17T11:39:30.946392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission","metadata":{"execution":{"iopub.status.busy":"2024-03-17T11:39:30.948554Z","iopub.execute_input":"2024-03-17T11:39:30.948906Z","iopub.status.idle":"2024-03-17T11:39:30.961710Z","shell.execute_reply.started":"2024-03-17T11:39:30.948876Z","shell.execute_reply":"2024-03-17T11:39:30.960852Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}}]}