{"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":"## Problem\n\nHistorical loan application data to predict whether or not an applicant will be able to repay a loan.","metadata":{}},{"cell_type":"markdown","source":"## Data\n\n7가지\n\n1. Main: application at Home Credit information. train and test\n\n2. bureau: data concerning client's previous credit from other financial institutions.\n\n3. bureau_balance: Monthly data about the previous credit in bureau.\n\n4. previous_application: previous applications for loans at Home Credit of clients who have loans in the application data. \n\n5. POS_CASH_BALANCE: monthly data about previous  point of sale or cash loans clients have had with Home Credit.\n\nwhat is point of sale????\n\n6. credit_card_balance: monthly data about previous credit cards clients have had with Home Credit.\n\n7. installments_payment: payment history for previous loans at Home Credit.\n\n","metadata":{}},{"cell_type":"markdown","source":"### Metric: ROC AUC\n\nmachine learning의 성능을 측정하는 지표다. 특히 이진 분류에서 자주 쓰인다. ROC곡선은 재현율/1-특이성이다. 분류의 성능 지표로 사용되는 것은 ROC 곡선 면적에 기반한 AUC 값으로 결정된다. 그 면적이 1에 가까울수록 그 성능이 좋다.","metadata":{}},{"cell_type":"markdown","source":"### Import \n\nWe are using a typical data science stack: numpy, pandas, sklearn, matplotlib.\n\ndata분석에 필요한 도구들을 가지고온다.","metadata":{}},{"cell_type":"code","source":"# numpy and pandas for data manipulation\nimport numpy as np # 대량 데이터의 배열(튜플 형태로 데이터를 저장) 연산을 위한 것\nimport pandas as pd # 2차원 데이터를 효율적으로 가공/처리하려는 도구\n\n# sklearn preprocessing for dealing with categorical variables\nfrom sklearn.preprocessing import LabelEncoder # categorical data를 다루기 위해서\n\n\n# File system management\n\nimport os # 운영체제로 file system을 관리하기위해서\n\n\n# Suppress warnings\nimport warnings\nwarnings.filterwarnings('ignore') # 경고문구출력없앰\n\n# matplotlib and seaborn for plotting\n# data시각화를 위한 도구\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n\npd.set_option('display.max_columns', 200)\n\n","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:42.434644Z","iopub.execute_input":"2022-07-24T09:43:42.435637Z","iopub.status.idle":"2022-07-24T09:43:43.905013Z","shell.execute_reply.started":"2022-07-24T09:43:42.435475Z","shell.execute_reply":"2022-07-24T09:43:43.903023Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Read in Data\n\nwe can list all the available data files. There are a total of 9 files.\n\n주어진 데이터 셋이 많으므로  데이터 셋 리스트를 확인한다.","metadata":{}},{"cell_type":"code","source":"# List files available\n# 사용가능한 data들을 나열한다.\n\nprint(os.listdir(\"../input/home-credit-default-risk\"))","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:43.907457Z","iopub.execute_input":"2022-07-24T09:43:43.908241Z","iopub.status.idle":"2022-07-24T09:43:43.915795Z","shell.execute_reply.started":"2022-07-24T09:43:43.908184Z","shell.execute_reply":"2022-07-24T09:43:43.914617Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"a=os.listdir('../input/home-credit-default-risk')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:43.917064Z","iopub.execute_input":"2022-07-24T09:43:43.918104Z","iopub.status.idle":"2022-07-24T09:43:43.933739Z","shell.execute_reply.started":"2022-07-24T09:43:43.918062Z","shell.execute_reply":"2022-07-24T09:43:43.932327Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(a)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:43.936493Z","iopub.execute_input":"2022-07-24T09:43:43.937249Z","iopub.status.idle":"2022-07-24T09:43:43.947401Z","shell.execute_reply.started":"2022-07-24T09:43:43.937206Z","shell.execute_reply":"2022-07-24T09:43:43.946619Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"homecredit_columns_description은 homecredit에서 제공한 데이터들의 column에 대한 설명이다. 그리고 sample_submission은 어떻게 제출하냐를 말한다. 그러므로 실제 분석해야 할 데이터는 총8개인데 2개의 maindata와 6개의 subdata이다. ","metadata":{}},{"cell_type":"markdown","source":"![image.png](attachment:c9df33a1-e8d9-4aa5-b28f-4d5f64c452be.png)","metadata":{},"attachments":{"c9df33a1-e8d9-4aa5-b28f-4d5f64c452be.png":{"image/png":"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f/Ob38izlHPXrFkjhNi6deu2bdvksiX9he12u6urq6urq61Wa9+cobKyUs6NDFtR5qc//emgUY3YoFFJg17dDQ1p06ZNBw8ePHfuXFguqtPp5EZFRYV62c+nnnqqv6qEEPIRi2pyXqIQIhgMCiEee+yxH/zgB++//748Ue7SarXTp08/d+6c+t3ZsGGD8jOTm5u7bds2ZXsMbgQAANFDTghgDNy4FRcTExNbW1v37dt3/vz5hISEnJycDz/80OPx3H333epGf/WrX911113yqQBWqzUnJ0fuVY75n//5H3mirMRischdy5cv7+3tlf/2ffmjH/3ovffe++///u/z58/Lmh977LHe3t7i4uK77rpLpkxLly5duXLlli1bEhISlOZ27969ZMmSEydOCCGKi4uVOpWa5TMVlWVgEhISHn300R/96EdKzE8++WR3d7dymbNmzXrssceEEMrD4gcW8VntfaO6++67H3vsMXXkctcAVxd2St8a5DUuWbIkbLVVEenB8X1DuuOOO/7whz+8/fbbjY2N3d3dCQkJFovlsccemzZtWm9vb0dHR01NjTx+6dKlubm5s2bNknX2rSrifcjIyJABJycny+ZcLtfbb78tr3fevHn//M//PH/+/Pnz52u12kOHDskY5Luj1JabmysbktusOAoAmNDi+J8MwKC6urpOnjzZ396kpKQoLrKi1WqFEL/61a8iPvmgtbX1wQcfFEK89957gz7CYTK5cuWK7NT61a9+ZbVax2RlndH4yU9+8vbbbz/22GPDWuhllC5cuOB2u3/+85/LbbmC6wTl9/uV5Wr7MhgMBoPhZsYDAJhM6CcEgAnmwoULfYdEKnQ63axZs6ZNm/bYY4+9/fbbP//5zz0ez83MxMaP55577u233xZCyG7GaIcDAMA4RU4IABOM0vcVkdJl+tprr/3yl788f/58enr6TYxuHJEXPm/evH//93+PdiwAAIxf5IQAxkAUR6GHzbsLo0zDU2adTQKzZ8+WF9XfXnmld9xxx/bt22Vh1K9dLu+pTKe8OZ5++umnn35abkf9DgAAMG4xnxDA4AadTzhv3rybGQ8QawKBAPMJAQA3CM8nBAAAAIDYxdhRAGOAEQcAAAATFP2EAAAAABC76CcEMAamT58e7RCAyezChQvRDgEAMGnRTwgAAAAAsYucEAAAAABiFzkhAAAA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"}}},{"cell_type":"markdown","source":"그리고 위의 데이터 다이어그램을 보면 데이터들의 관계를 볼 수 있다.\n위의 데이터들은 id를 통해서 서로 연결되어있는 것을 볼 수 있다. \n그런데 여기서는 문제점이 있다. Machine learning model을 사용하기 위해서는 흩어진 데이터를 한 곳에 모아야 한다. 하지만 데이터의 갯수가 너무 많고 feature의 개수가 너무 많다. 그래서 한꺼번에 다루기에는 부담된다.\n일단은 maindata만으로 machine learning을 만들자.","metadata":{}},{"cell_type":"markdown","source":"### Main Data","metadata":{}},{"cell_type":"code","source":"train=pd.read_csv('../input/home-credit-default-risk/application_train.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:43.948805Z","iopub.execute_input":"2022-07-24T09:43:43.949430Z","iopub.status.idle":"2022-07-24T09:43:50.610428Z","shell.execute_reply.started":"2022-07-24T09:43:43.949395Z","shell.execute_reply":"2022-07-24T09:43:50.609482Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Head를 이용해서 데이터의 처음 5개의 부분만을 확인한다.\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:50.611521Z","iopub.execute_input":"2022-07-24T09:43:50.611838Z","iopub.status.idle":"2022-07-24T09:43:50.710693Z","shell.execute_reply.started":"2022-07-24T09:43:50.611802Z","shell.execute_reply":"2022-07-24T09:43:50.709749Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# shape를 이용해서 data의 행과 열을 확인한다.\nprint('Training data shape: ',train.shape)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:50.711759Z","iopub.execute_input":"2022-07-24T09:43:50.712091Z","iopub.status.idle":"2022-07-24T09:43:50.716357Z","shell.execute_reply.started":"2022-07-24T09:43:50.712062Z","shell.execute_reply":"2022-07-24T09:43:50.715582Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"300000만개의 관측값이 있다. 그리고 122개의 feature가 있다.","metadata":{}},{"cell_type":"code","source":"# data의 각 column의 nulldata를 확인한다.\nprint('NullData:\\n',train.isnull().sum())","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:50.717451Z","iopub.execute_input":"2022-07-24T09:43:50.717766Z","iopub.status.idle":"2022-07-24T09:43:51.266330Z","shell.execute_reply.started":"2022-07-24T09:43:50.717739Z","shell.execute_reply":"2022-07-24T09:43:51.265350Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"feature의 개수가 너무 많아서 모두 표시가 되지 않는다.\nfeature는 dataset의 특성이다. 독립변수=feature이다. 종속변수는 결정값이다.","metadata":{}},{"cell_type":"markdown","source":"maindata는 65개의 float type과 41개의 int type과 16개의 object type인 것을 볼 수 있다.","metadata":{}},{"cell_type":"markdown","source":"### Test Data\n\nMachine learning이 training이 잘됬는지 확인하는데 사용데는 data로 \ntarget값이 없다.","metadata":{}},{"cell_type":"code","source":"test=pd.read_csv('../input/home-credit-default-risk/application_test.csv')\nprint('Testing data shape: ',test.shape)\ntest.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:51.267717Z","iopub.execute_input":"2022-07-24T09:43:51.268637Z","iopub.status.idle":"2022-07-24T09:43:52.328341Z","shell.execute_reply.started":"2022-07-24T09:43:51.268591Z","shell.execute_reply":"2022-07-24T09:43:52.327344Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"test data는 5만개 정도의 관측값이 있고 121개의 feature가 있다. feature에서 target값이 없다. ","metadata":{}},{"cell_type":"markdown","source":"### Metadata\n\n","metadata":{}},{"cell_type":"markdown","source":"maindata의 feature개수가 많으므로 효과적으로 관리하기 위해서 metadata를 만들겠다. Metadata는 데이터의 데이터이다.\n\n* role: input, ID, Target \n\n-변수의 역할을 feature=input, Target=Target, id=id\n\n* Type: categorical, inteval, ordinal, binary\n\n* preserve: True or False\n\n* DataType: int, float, str","metadata":{}},{"cell_type":"code","source":"data=[]\nfor f in train.columns:\n    # Defining the role\n    \n    if f == 'TARGET':\n        role='target'\n        \n    elif 'id' in f:\n        role='id'\n    else:\n        role ='input'\n        \n        \n        \n    # Defining the Type\n    if len(train[f].value_counts().index)==2:\n        Type='binary'\n        \n    elif train[f].dtype=='O':\n        Type='categorical'\n        \n    elif train[f].dtype==float:\n        Type='interval'\n    elif train[f].dtype==int:\n        Type='ordinal'\n    \n    # Initialize preserve to True for all variables except for id\n    preserve=True\n    if 'id' in f:\n        keep=False\n        \n    # Defining the data type\n    DataType=train[f].dtype\n    \n    # Creating a Dict that contains all the metadata for the variable\n    f_dict={\n        'varname':f,\n        'role':role,\n        'Type':Type,\n        'preserve':preserve,\n        'DataType':DataType\n    }\n    data.append(f_dict)\n    \nmeta=pd.DataFrame(data)\nmeta.set_index('varname',inplace=True)\nmeta.loc['SK_ID_CURR','Type']='categorical'","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:52.331658Z","iopub.execute_input":"2022-07-24T09:43:52.332080Z","iopub.status.idle":"2022-07-24T09:43:53.431121Z","shell.execute_reply.started":"2022-07-24T09:43:52.332035Z","shell.execute_reply":"2022-07-24T09:43:53.429860Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 코드는 metadata를 만드는 코드이다.\nmetadata는 행으로 feature name을 열로 role, Type, preserve, DataType을 사용한다. metadata를 만들기위해서 for문과 if문을 사용한다. for문은 train의 feature개수만큼 반복한다. 그리고 if문으로 metadata의 feature(role, Type)를 구성한다.","metadata":{}},{"cell_type":"code","source":"meta","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:53.432737Z","iopub.execute_input":"2022-07-24T09:43:53.433461Z","iopub.status.idle":"2022-07-24T09:43:53.454707Z","shell.execute_reply.started":"2022-07-24T09:43:53.433413Z","shell.execute_reply":"2022-07-24T09:43:53.453555Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Exploratory Data Analysis","metadata":{}},{"cell_type":"markdown","source":"EDA(Exploratory Data Analysis)는 주어진 데이터가 우리에게 무엇을 말하는지 파악하는 거다. 좀 더 구체적으로 말하면 통계를 계산하거나 시각화를 통해서 데이터 내에서 추세, 이상치, 패턴 또는 관계를 찾아낸다. EDA는 처음에는 전체적으로 진행하다가 흥미로운 부분이 생기면 그 부분을 집중적으로 판다. EDA를 통해서 어떤 feature가 유용한지 어떤 feature를 machine learning에 활용할지를 판단할 수 있다.","metadata":{}},{"cell_type":"markdown","source":"### Examine the Distribution of the Target Column\nThe target is what we are asked to predict: 0= the loan was repaid on time\n\n1= a 1 indicating the client had payment difficulties\n\nTARGET은 우리가 예측해야 할 것이다. 0은 제때 돈을 갚은 경우다 1은 돈을 갚지 못한 경우이다.\n\nTARGET값에 따라 Machin learning의 성능이 달라진다. 예를 들어 극단적인 경우 TARGET 값의 0이 99개이고 1이 1개이면 0만 예측하면 Machine learning의 정확도는 99%가 넘어간다. 하지만 다른 데이터에서 제대로 작동하지 못한다.\n\n그러므로 TARGET값이 어떤 식으로 분포하고 있는지 확인해라","metadata":{}},{"cell_type":"code","source":"train['TARGET'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:53.456391Z","iopub.execute_input":"2022-07-24T09:43:53.456975Z","iopub.status.idle":"2022-07-24T09:43:53.470243Z","shell.execute_reply.started":"2022-07-24T09:43:53.456929Z","shell.execute_reply":"2022-07-24T09:43:53.469089Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f,ax=plt.subplots(1,2,figsize=(18,8))\ntrain['TARGET'].value_counts().plot.pie(explode=[0,0.1],autopct='%1.1f%%',ax=ax[0],shadow=False)\nax[0].set_title('TARGET')\nsns.countplot('TARGET',data=train,ax=ax[1])\nax[1].set_title('TARGET')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:53.472131Z","iopub.execute_input":"2022-07-24T09:43:53.473040Z","iopub.status.idle":"2022-07-24T09:43:53.830034Z","shell.execute_reply.started":"2022-07-24T09:43:53.472985Z","shell.execute_reply":"2022-07-24T09:43:53.828833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"0=91.9% \n\n1=8.1%\n\nTARGET값이 심하게 불균형하다. TARGET값이 불균형한 경우는 일반적으로 흔하다.\n이 경우 machine learning에 학습시킬 경우 성능이 나쁠가능성이 있다. 이것을 해결하는 방법으로 undersampling과 upsampling이 있다. \n보통은 upsampling을 쓴다. 그리고 모델내에서 이 부분을 다루는 부분이 있다.\n그러므로 일단은 베이스모델을 만들어보고 진행하겠다.\n","metadata":{}},{"cell_type":"markdown","source":"### Examine Missing Values\n\n","metadata":{}},{"cell_type":"markdown","source":"Next we can look at the number and percentage of missing values in each column\n\n위에서 잠깐 다루었지만 제대로 Missing Data를 다루겠다.\nMissingData는 빈 데이터로 이 data의 비율이 높을수록 Machine learning의 성능이 떨어진다.\n아래의 코드를 통해서 missingdata 개수와 그 비율을 표로 만들겠다.","metadata":{}},{"cell_type":"code","source":"# Function to calculate missing values by column \n\ndef missing_values_table(df):\n    # Total missing values\n    mis_val =df.isnull().sum()\n    # Percentage of missing values\n    mis_val_percent=100*df.isnull().sum()/len(df)\n    # Make a table with the results\n    mis_val_table=pd.concat([mis_val,mis_val_percent],axis=1)\n    # Rename the columns\n    mis_val_table_ren_columns=mis_val_table.rename(columns={0:'Missing Values',1:'% of Total Values'})\n    # Sort the table by percentage of missing descending\n    mis_val_table_ren_columns=mis_val_table_ren_columns[mis_val_table_ren_columns.iloc[:,1]!=0].sort_values('% of Total Values',ascending=False).round(1)\n    # Print some summary information\n    print('Your selected dataframe has '+str(df.shape[1])+' columns.\\n'\n         'There are '+str(mis_val_table_ren_columns.shape[0])+' columns that have missing values.')\n    # Return the dataframe with missing information\n    return mis_val_table_ren_columns\n    ","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:53.831487Z","iopub.execute_input":"2022-07-24T09:43:53.831923Z","iopub.status.idle":"2022-07-24T09:43:53.841014Z","shell.execute_reply.started":"2022-07-24T09:43:53.831883Z","shell.execute_reply":"2022-07-24T09:43:53.839882Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 코드는 missing value의 개수와 feature내에서 missing value가 차지하는 비율을 표로 만드는 코드이다. 자주 쓰일 것 같아서 사용자 지정 함수로 만들었다.\n코드를 설명하면 우선 표에 넣을 피처(missing value 개수 및 percentage)를 정의한다.\n그리고 시리즈(1차원배열)로 되어있는 feature들을 합친다(concat). 그러나 이렇게 만들어진 데이터는 feature이름이 0과1로 되어있다. 그러므로 feature이름을 바꾸어준다(rename). 그리고 missing value percentage를 내림차순으로 나열한다. 우선 data에서 mis_var_percentage를 뽑아서(iloc) 내림차순으로 나열한다.(sort_values(ascending=False))\n그렇게 만들어진 data의 정보(행과열의 갯수)를 출력한다.","metadata":{}},{"cell_type":"code","source":"# Missing values statistics\nmissing_values=missing_values_table(train)\nmissing_values.head(40)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:53.842929Z","iopub.execute_input":"2022-07-24T09:43:53.843352Z","iopub.status.idle":"2022-07-24T09:43:54.950798Z","shell.execute_reply.started":"2022-07-24T09:43:53.843316Z","shell.execute_reply":"2022-07-24T09:43:54.950124Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"전체 feature 중 50% 이상의 missing value를 가지고 있는 feature가 40개이다. \nmachine learning이 좋은 예측 성능을 갖기 위해서는 missingdata를 채워야 한다.\n보통은 SimpleImputer를 이용해서 평균값이나 중앙값으로 채우거나 그 비율이 높은 것들은 제거한다. 그러나 xgboost나 lgboost가 자체적으로 missing value를 처리한다.\n그러므로 일단은 모든 열을 유지한다.","metadata":{}},{"cell_type":"markdown","source":"### Column Types\n\n다음 단계로 feature들의 type을 파악한다. data type은 int(정수), float(실수), object(string, categorical)등이 있다. data의 type에 따라 접근방식이 달라진다. 그러므로 feature들의 type을 파악하는 것이 아주 중요하다.\n특히 object는 machine learning이 처리하지 못하므로 이것을 파악하고 처리하는 것이 아주 중요하다. 미리 만들어 놓은 metadata를 이용해서 datatype을 추출하겠다.","metadata":{}},{"cell_type":"code","source":"meta['DataType'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:54.951799Z","iopub.execute_input":"2022-07-24T09:43:54.952582Z","iopub.status.idle":"2022-07-24T09:43:54.959280Z","shell.execute_reply.started":"2022-07-24T09:43:54.952547Z","shell.execute_reply":"2022-07-24T09:43:54.958367Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta['Type'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:54.960248Z","iopub.execute_input":"2022-07-24T09:43:54.960524Z","iopub.status.idle":"2022-07-24T09:43:54.974517Z","shell.execute_reply.started":"2022-07-24T09:43:54.960498Z","shell.execute_reply":"2022-07-24T09:43:54.973861Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"datatype을 좀 더 자세하게 살펴보기 위해서 DataType이외에 Type을 불러왔다.\n다음으로 categorical data의 고유값들을 확인하겠다. categorical 값들의 개수에 따라 적용할 encoding이 달라진다. ","metadata":{}},{"cell_type":"code","source":"# Number of unique classes in each object column\ntrain.select_dtypes('object').apply(pd.Series.nunique,axis=0)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:54.975634Z","iopub.execute_input":"2022-07-24T09:43:54.976635Z","iopub.status.idle":"2022-07-24T09:43:55.455778Z","shell.execute_reply.started":"2022-07-24T09:43:54.976593Z","shell.execute_reply":"2022-07-24T09:43:55.455084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 코드는 categorical feature들의 고유값의 개수를 구하는 코드이다.\n먼저 data에서 type이 object(categorical)인 것을 뽑아낸다. 그리고 apply를 이용해서 특정 열에 원하는 함수를 적용한다. nunique를 이용해서 각 feature들의 고유값들의 개수를 반환한다.","metadata":{}},{"cell_type":"markdown","source":"occupation_type(18개)과 organization_type(58개)을 제외하면 그 개수가 많지않다.\n다음으로 고유값의 개수에 따라서 Encoding을 진행하겠다.","metadata":{}},{"cell_type":"markdown","source":"### Encoding Categorical variables\n\n\n\n\n* Label encoding: assign each unique category in a categorical variable with an integer. No new columns are created. An example is shown below\n\n-라벨인코딩은 categorical feature 값을 숫자값으로 변형한다. 선형 회귀와 같은 model에는 어울리지 않는다. 단순히 구분을 위한 숫자에 가중치를 부여하기 때문에\n\n![image](https://raw.githubusercontent.com/WillKoehrsen/Machine-Learning-Projects/master/label_encoding.png)\n\n\n* One-hot encoding: create a new column for each unique category in a categorical variable. Each observation recieves a 1 in the column for its corresponding category and a 0 in all other new columns. \n\n-라벨인코딩의 단점을 보완하는 인코딩으로 feature값에 따라 새로운 feature를 만들고 고유값에 해당하는 값에 1을 할당하고 그렇지않으면 0을 할당한다.\n그러나 차원이 너무 커져서 machine learning의 성능이 떨어진다.\n\n![image](https://raw.githubusercontent.com/WillKoehrsen/Machine-Learning-Projects/master/one_hot_encoding.png)\n\n\n그러므로 고유 value값이 2개초과인 경우 onhotencoding을 그렇지않은경우는 labelencoding을 적용하겠다.","metadata":{}},{"cell_type":"markdown","source":"### Label Encoding","metadata":{}},{"cell_type":"markdown","source":"machine learning을 수행하려면 train과 test의 column이 같아야한다. \n그러므로 label과 onehot 모두에 encoding을 진행한다.","metadata":{}},{"cell_type":"code","source":"train.select_dtypes('object').apply(pd.Series.nunique,axis=0)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:55.456791Z","iopub.execute_input":"2022-07-24T09:43:55.457177Z","iopub.status.idle":"2022-07-24T09:43:55.933121Z","shell.execute_reply.started":"2022-07-24T09:43:55.457149Z","shell.execute_reply":"2022-07-24T09:43:55.932049Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"le=LabelEncoder()\nfor col in train:\n    if train[col].dtype =='object':\n        if len(list(train[col].unique()))<=2:\n            le.fit(train[col])\n            train[col]=le.transform(train[col])\n            test[col]=le.transform(test[col])\n            ","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:55.934468Z","iopub.execute_input":"2022-07-24T09:43:55.935063Z","iopub.status.idle":"2022-07-24T09:43:56.752434Z","shell.execute_reply.started":"2022-07-24T09:43:55.935028Z","shell.execute_reply":"2022-07-24T09:43:56.751506Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### One hot Encoding","metadata":{}},{"cell_type":"code","source":"train=pd.get_dummies(train)\ntest=pd.get_dummies(test)\n\nprint('Training Features shape: ',train.shape)\nprint('Testing Features shape: ',test.shape)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:56.753571Z","iopub.execute_input":"2022-07-24T09:43:56.754511Z","iopub.status.idle":"2022-07-24T09:43:57.902722Z","shell.execute_reply.started":"2022-07-24T09:43:56.754467Z","shell.execute_reply":"2022-07-24T09:43:57.901766Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Aligning Training and Testing DATA\n\nmachine learning을 학습시키고 예측을 할려면 train과 test의 column이 같아야한다. 그런데 one hot을 수행하면 column이 새롭게 생긴다. 그러므로 align을 사용하여 train과 test를 맞추어야한다.\ntest에 없는 train의 columns을 제거한다. 처음으로 TARGET을 추출한다. TARGET은 학습에 사용되므로 \ntrain에서 제거하면 안된다. 그리고 align을 사용한다. 주의할 점은 axis=1을 설정한다.","metadata":{}},{"cell_type":"code","source":"train_labels=train['TARGET'] # label=특정 데이터 포인트에 대한 출력\n\n# Align the training and testing data, keep only columns present in both dataframes\n# train과 test 모두에 있는 columns만 남긴다.\ntrain,test=train.align(test,join='inner',axis=1)\n\n# Add the target back in\n# train에 target을 다시 추가한다.\ntrain['TARGET']=train_labels\nprint('Training Features shape: ',train.shape)\nprint('Testing Features shape: ',test.shape)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:57.904088Z","iopub.execute_input":"2022-07-24T09:43:57.904533Z","iopub.status.idle":"2022-07-24T09:43:58.287054Z","shell.execute_reply.started":"2022-07-24T09:43:57.904492Z","shell.execute_reply":"2022-07-24T09:43:58.285814Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 code의 결과를 보면 one hot encoding으로 인해서 feature의 개수가 2배가까이 늘어난것을 볼 수 있다. feature의 수가 많으면 model이 복잡해져서 예측성능이 떨어질 수가 있다. feature selection nulldata가 매우 많은 feature를 제거해서 feature의 개수를 줄일 수 있다.","metadata":{}},{"cell_type":"markdown","source":"본격적으로 feature를 EDA하겠다.","metadata":{}},{"cell_type":"markdown","source":"feature를 무작위로 EDA하기에는 효율성이 떨어진다. 그러므로 TARGET과의 상관관계를 우선적으로 보고 그것을 기준으로 EDA를 진행하겠다.","metadata":{}},{"cell_type":"markdown","source":"### Correlations(상관관계)\n\n변수 간의 선형상관관계를 구한다. 주의할 점은 이 값이 0이라고 변수간에 상관관계가 없는 것은 아니다.\n그러므로 Correlation coefficient가 변수 간의 상관관계를 나타내는 최고의 도구는 아니다.\n그러나 변수 간의 상관관계를 처음으로 접근할 때 꽤 쓸만한 도구이다.\n\n해석은 \n\n.00-.19 “very weak”\n\n.20-.39 “weak”\n\n.40-.59 “moderate”\n\n.60-.79 “strong”\n\n.80-1.0 “very strong”","metadata":{}},{"cell_type":"markdown","source":"target과의 상관관계가 높은 각각(+,-) 10개의 feature를 뽑아서 EDA를 진행하겠다.  ","metadata":{}},{"cell_type":"code","source":"# Correlations with the target and descending sort\n\ncorrelations=train.corr()['TARGET'].sort_values()\n\n# Display correlations\nprint('Most Positive Correlations:\\n',correlations.tail(10))\nprint('\\nMost Negative Correlations:\\n', correlations.head(10))","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:43:58.288469Z","iopub.execute_input":"2022-07-24T09:43:58.288838Z","iopub.status.idle":"2022-07-24T09:44:50.000428Z","shell.execute_reply.started":"2022-07-24T09:43:58.288799Z","shell.execute_reply":"2022-07-24T09:44:49.999690Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"보면 feature와 TARGET간의 상관관계가 대부분 낮다.\ntrain에서 TARGET과의 상관관계의 크기가 +,-로 내림차순으로 진행하였다.\n이것을 기준으로 EDA를 진행하겠다.\n먼저 target가 + 상관관계가 높은 feature들을 분석하겠다.","metadata":{}},{"cell_type":"markdown","source":"### +Correlations","metadata":{}},{"cell_type":"markdown","source":"### DAYS_BIRTH","metadata":{}},{"cell_type":"markdown","source":"상관관계를 보면 DAYS_BIRTH가 상관관계가 가장 높은 것을 볼 수 있다.\n\nDAYS_BIRTH의 정의는 제공된 기록을 보면 대출 당시 클라이언트의 나이이다.","metadata":{}},{"cell_type":"code","source":"train['DAYS_BIRTH']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:50.001569Z","iopub.execute_input":"2022-07-24T09:44:50.002089Z","iopub.status.idle":"2022-07-24T09:44:50.010485Z","shell.execute_reply.started":"2022-07-24T09:44:50.002054Z","shell.execute_reply":"2022-07-24T09:44:50.009596Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"DAYS_BIRTH의 값을 보면 음수이고 단위가 년(year)이 아니라 일(day)이다. 그러므로 보기 좋게 바꾸겠다.","metadata":{}},{"cell_type":"code","source":"# absolute feature\n\ntrain['DAYS_BIRTH']=abs(train['DAYS_BIRTH'])\ntrain['DAYS_BIRTH'].corr(train['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:50.011744Z","iopub.execute_input":"2022-07-24T09:44:50.012640Z","iopub.status.idle":"2022-07-24T09:44:50.034337Z","shell.execute_reply.started":"2022-07-24T09:44:50.012608Z","shell.execute_reply":"2022-07-24T09:44:50.033467Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"DAYS_BIRTH의 값을 정리한 다음 보면 상관관계가 -인 것을 볼 수있다. 다시 상관관계를 해석하면 나이가 많을수록 대출 상환률이 높다. ","metadata":{}},{"cell_type":"markdown","source":"TARGET과 DAYS_BIRTH간에 그래프를 그리겠다.\n그전에 DAYS_BIRTH에 이상치가 있는지 확인하겠다.\nDAYS_BIRTH의 단위가 'DAY'로 되어있으므로 'Year'로 바꾸겠다.","metadata":{}},{"cell_type":"code","source":"# Plot the distribution of ages in years\nplt.hist(train['DAYS_BIRTH']/365,edgecolor='k',bins=25) # bins는 x축 범위안에 몇개의 그래프를 넣을 것인가\nplt.title('Age of Client'); plt.xlabel('Age (years)'); plt.ylabel('Count')\n","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:50.035663Z","iopub.execute_input":"2022-07-24T09:44:50.036002Z","iopub.status.idle":"2022-07-24T09:44:50.225994Z","shell.execute_reply.started":"2022-07-24T09:44:50.035973Z","shell.execute_reply":"2022-07-24T09:44:50.225146Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 그래프를 보면 이상치가 없다는 것을 확인가능하다. kdeplot을 이용해서 TARGET과 DAYS_BIRTH에 관해서 그래프를 그리겠다. ","metadata":{}},{"cell_type":"markdown","source":"kdeplot(커널밀도함수)를 사용해서 target과 DAYS_BIRTH의 분포를 확인하겠다.\n커널밀도함수는 확률밀도를 구하는 것이다.\nkdeplot은 단일 변수의 분포를 보여준다.\ndata중에서 target이0 인 값과 1인 값들을 추출하고 kdeplot을 그린다.","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(10,8))\n\n# kde plot of loans that were repaid on time\n# 대출을 상환한 경우 kdeplot\nsns.kdeplot(train.loc[train['TARGET']==0,'DAYS_BIRTH']/365,label='target==0')\n\n# kde plot of loans which were not repaid on time\n# 대출상환실패의 경우 kdeplot\nsns.kdeplot(train.loc[train['TARGET']==1,'DAYS_BIRTH']/365,label='target==1')\n\n# Labeling of plot\nplt.xlabel('Age(years)'); plt.ylabel('Density'); plt.title('Distribution of Ages');\nplt.legend()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:50.227182Z","iopub.execute_input":"2022-07-24T09:44:50.227482Z","iopub.status.idle":"2022-07-24T09:44:51.598335Z","shell.execute_reply.started":"2022-07-24T09:44:50.227455Z","shell.execute_reply":"2022-07-24T09:44:51.597692Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 그래프를 보면 상환하지 못할 그래프가 젊은 나이대로 향하고 있는 것을 볼 수 있다. 비록 상관관계는 유의미하지 않다. 하지만 시각화를 해보면 feature가 target에 영향을 주는 것을 볼 수 있다.\n젊을수록 대출 상환 실패가 높아지므로 이 부분을 좀 더 살펴보겠다.그러므로 연령대별 상환 실패 평균을 그래프로 그려보겠다. ","metadata":{}},{"cell_type":"markdown","source":"먼저 연령대의 범위를 설정하겠다. 먼저 나이를 5년을 기준으로 자르겠다. 그리고 연령대별 상환실패평균을 계산하겠다. 그리고 연령대별상환실패평균과 연령대정보로 새로운 dataframe을 만들겠다. 이것을 가지고 새로운 그래프를 그리겠다.","metadata":{}},{"cell_type":"code","source":"# Age information into a separate dataframe\n# target과 연령대 정보 DataFrame\n\nAge_Data= train[['TARGET','DAYS_BIRTH']]\n\n# 보기좋게 하기 위해서 일반적인 나이(YEAR)feature를 추가한다.\nAge_Data['YEARS_BIRTH']=Age_Data['DAYS_BIRTH']/365\n\n# Bin the age data\n# YEARS_BIRTH feature를 사용해서 연령대feature를 만든다.\n\nAge_Data['YEARS_BINNED']=pd.cut(Age_Data['YEARS_BIRTH'],bins=np.linspace(20,70,num=11))\nAge_Data.head(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:51.603235Z","iopub.execute_input":"2022-07-24T09:44:51.604321Z","iopub.status.idle":"2022-07-24T09:44:51.717372Z","shell.execute_reply.started":"2022-07-24T09:44:51.604275Z","shell.execute_reply":"2022-07-24T09:44:51.716393Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"numberic feature를 특정구간으로 나누어서 categorical feature로 변환\npd.cut(): 구간을 동일한 길이로 나누는 것  pd.qcut(): 구간을 동일 개수로 나누는 것\n\npd.cut(나눌 데이터,구간의 갯수, label name)\n\nnp.linspace()\n:지정된 범위에 지정된 개수만큼 숫자를 생성한다.","metadata":{}},{"cell_type":"code","source":"# Group by the bin and calculate average\n# 위에서 만든 data를 years_binned로 그룹화(묶는다)한다. 그리고 각 피처에 대하서 평균을 구한다.\nage_groups=Age_Data.groupby('YEARS_BINNED').mean()\nage_groups","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:51.718557Z","iopub.execute_input":"2022-07-24T09:44:51.718924Z","iopub.status.idle":"2022-07-24T09:44:51.746057Z","shell.execute_reply.started":"2022-07-24T09:44:51.718894Z","shell.execute_reply":"2022-07-24T09:44:51.745311Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 Data를 설명하면 연령대별 대출상환실패률(TARGET),연령평균나이(day,year) 이다.\n\n다음으로 연령대별 대출상환실패률을 bar그래프를 이용해서 그리겠다.","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(8,8))\n\n\n# Grap the age bins and the average of the target as a bar plot\nplt.bar(age_groups.index.astype(str),100*age_groups['TARGET'])\n\n# Plot labeling\n\nplt.xticks(rotation=75); plt.xlabel('Age Group (years)'); plt.ylabel('Failure to Repay(%)')\nplt.title('Failure to Repay by Age Group')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:51.747173Z","iopub.execute_input":"2022-07-24T09:44:51.747920Z","iopub.status.idle":"2022-07-24T09:44:51.976847Z","shell.execute_reply.started":"2022-07-24T09:44:51.747885Z","shell.execute_reply":"2022-07-24T09:44:51.975590Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"kdeplot으로 시각화를 하는 것보다 연령대를 나누어서 시각화를 하는 것이 feature의 trend를 파악하기 쉽다. 위의 그래프를 해석하면 나이가 어릴수록 대출상환을 실패할 가능성이 높아진다.\n그러므로 젊은 사람들에게 대출을 해줄 때 좀 더 신경써서 대출을 해주어야 한다.","metadata":{}},{"cell_type":"markdown","source":"### REGION_RATING_CLIENT_W_CITY","metadata":{}},{"cell_type":"markdown","source":"다음으로 target과의 상관관계가 높은 것은 w_city에 거주하는 비율이다.\nregion_rating_client_w_city는 client가 살고있는 도시에 대한 평가이.","metadata":{}},{"cell_type":"code","source":"train['REGION_RATING_CLIENT_W_CITY'].value_counts()/train.shape[0]","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:51.978246Z","iopub.execute_input":"2022-07-24T09:44:51.978578Z","iopub.status.idle":"2022-07-24T09:44:51.991320Z","shell.execute_reply.started":"2022-07-24T09:44:51.978549Z","shell.execute_reply":"2022-07-24T09:44:51.990577Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot('REGION_RATING_CLIENT_W_CITY',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:51.992547Z","iopub.execute_input":"2022-07-24T09:44:51.993650Z","iopub.status.idle":"2022-07-24T09:44:52.197794Z","shell.execute_reply.started":"2022-07-24T09:44:51.993604Z","shell.execute_reply":"2022-07-24T09:44:52.196723Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"client의 74%가 2등급 도시에 살고있는 것을 볼 수 있다.","metadata":{}},{"cell_type":"code","source":"train['REGION_RATING_CLIENT_W_CITY'].corr(train['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.199302Z","iopub.execute_input":"2022-07-24T09:44:52.199724Z","iopub.status.idle":"2022-07-24T09:44:52.213183Z","shell.execute_reply.started":"2022-07-24T09:44:52.199683Z","shell.execute_reply":"2022-07-24T09:44:52.212348Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta.loc['REGION_RATING_CLIENT_W_CITY']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.214216Z","iopub.execute_input":"2022-07-24T09:44:52.214934Z","iopub.status.idle":"2022-07-24T09:44:52.234527Z","shell.execute_reply.started":"2022-07-24T09:44:52.214898Z","shell.execute_reply":"2022-07-24T09:44:52.233089Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"metadata를 보면 REGION_RATING_CLIENT_W_CITY는 ordinal data(1,2,3)이다.즉 순서가 존재한다.\nbar를 이용해서 그래프를 시각화를 하겠다. 그래프를 그리기 전에 REGION_RATING_CLIENT_W_CITY값에 따른 target의 %를 구하겠다.","metadata":{}},{"cell_type":"code","source":"region_w_data=train[['TARGET','REGION_RATING_CLIENT_W_CITY']]\nregion_w_data=region_w_data.groupby('REGION_RATING_CLIENT_W_CITY').mean()\nregion_w_data","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.236151Z","iopub.execute_input":"2022-07-24T09:44:52.236726Z","iopub.status.idle":"2022-07-24T09:44:52.266935Z","shell.execute_reply.started":"2022-07-24T09:44:52.236685Z","shell.execute_reply":"2022-07-24T09:44:52.266050Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(15,15))\n\nplt.bar(region_w_data.index.astype(str),region_w_data['TARGET']*100)\nplt.xlabel('City_Rating'); plt.ylabel('Failure to Repay')\nplt.title('Failure to Repay by City_Rating')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.268478Z","iopub.execute_input":"2022-07-24T09:44:52.269044Z","iopub.status.idle":"2022-07-24T09:44:52.489872Z","shell.execute_reply.started":"2022-07-24T09:44:52.269003Z","shell.execute_reply":"2022-07-24T09:44:52.488871Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"REGION_RATING_CLIENT_W_CITY에서 client가 거주하는 지역의 등급이 1->3등급으로 갈수록 대출상환실패율이 커지는 것을 볼 수 있다.","metadata":{}},{"cell_type":"code","source":"correlations.tail(10).sort_values(ascending=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.491213Z","iopub.execute_input":"2022-07-24T09:44:52.492256Z","iopub.status.idle":"2022-07-24T09:44:52.501539Z","shell.execute_reply.started":"2022-07-24T09:44:52.492207Z","shell.execute_reply":"2022-07-24T09:44:52.500573Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### REGION_RATING_CLIENT\n\nclient가 살고있는 거주지역의 등급으로 ordinal data(1,2,3)이다.","metadata":{}},{"cell_type":"code","source":"meta.loc['REGION_RATING_CLIENT']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.502823Z","iopub.execute_input":"2022-07-24T09:44:52.503843Z","iopub.status.idle":"2022-07-24T09:44:52.513052Z","shell.execute_reply.started":"2022-07-24T09:44:52.503769Z","shell.execute_reply":"2022-07-24T09:44:52.512137Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['REGION_RATING_CLIENT'].value_counts()/train.shape[0]","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.514735Z","iopub.execute_input":"2022-07-24T09:44:52.515529Z","iopub.status.idle":"2022-07-24T09:44:52.531238Z","shell.execute_reply.started":"2022-07-24T09:44:52.515481Z","shell.execute_reply":"2022-07-24T09:44:52.530286Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot('REGION_RATING_CLIENT',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.532204Z","iopub.execute_input":"2022-07-24T09:44:52.533178Z","iopub.status.idle":"2022-07-24T09:44:52.710458Z","shell.execute_reply.started":"2022-07-24T09:44:52.533141Z","shell.execute_reply":"2022-07-24T09:44:52.709428Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"client의 73%가 2등급 지역에 살고있는 것을 알 수 있다.","metadata":{}},{"cell_type":"code","source":"region_data=train[['REGION_RATING_CLIENT','TARGET']]\nregion_data=region_data.groupby('REGION_RATING_CLIENT').mean()\nregion_data","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.711693Z","iopub.execute_input":"2022-07-24T09:44:52.712143Z","iopub.status.idle":"2022-07-24T09:44:52.732729Z","shell.execute_reply.started":"2022-07-24T09:44:52.712113Z","shell.execute_reply":"2022-07-24T09:44:52.731858Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(15,15))\n\nplt.bar(region_w_data.index.astype(str),region_data['TARGET']*100)\nplt.xlabel('City_Rating'); plt.ylabel('Failure to Repay')\nplt.title('Failure to Repay by City_Rating')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.734197Z","iopub.execute_input":"2022-07-24T09:44:52.734796Z","iopub.status.idle":"2022-07-24T09:44:52.924235Z","shell.execute_reply.started":"2022-07-24T09:44:52.734736Z","shell.execute_reply":"2022-07-24T09:44:52.923187Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(15,15))\nplt.bar(region_data.index.astype(str),region_data['TARGET']*100)\nplt.xlabel('Region_Data'); plt.ylabel('Failure to Repay')\nplt.title('Failure to Repay by Region_Rating')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:52.925714Z","iopub.execute_input":"2022-07-24T09:44:52.926108Z","iopub.status.idle":"2022-07-24T09:44:53.116360Z","shell.execute_reply.started":"2022-07-24T09:44:52.926078Z","shell.execute_reply":"2022-07-24T09:44:53.115185Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 그래프를 보면 region의 등급이 1->3으로 갈수록 대출상환실패률이 올라가는 것을 볼 수 있다.","metadata":{}},{"cell_type":"markdown","source":"REGION_RATING_CLIENT,REGION_RATING_CLIENT_W_CITY를 eda하면서 두 feature가 꽤 유사한 점이 많다. 이 경우 다중공선성의 문제로 모델의 성능이 저하될 수 있다. 이것을 확인하기 위해서 두 feature의 상관관계를 확인하겠다.","metadata":{}},{"cell_type":"code","source":"region=train[['REGION_RATING_CLIENT','REGION_RATING_CLIENT_W_CITY']]\nregion.corr()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.117709Z","iopub.execute_input":"2022-07-24T09:44:53.118251Z","iopub.status.idle":"2022-07-24T09:44:53.138708Z","shell.execute_reply.started":"2022-07-24T09:44:53.118207Z","shell.execute_reply":"2022-07-24T09:44:53.137844Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"둘의 상관관계가 95%로 아주 높은 것을 볼 수 있다. 그러므로 모델을 만들 때 둘 중 하나만을 고려해야 할 수도 있다.","metadata":{}},{"cell_type":"code","source":"correlations.tail(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.139982Z","iopub.execute_input":"2022-07-24T09:44:53.140951Z","iopub.status.idle":"2022-07-24T09:44:53.148953Z","shell.execute_reply.started":"2022-07-24T09:44:53.140909Z","shell.execute_reply":"2022-07-24T09:44:53.148047Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### NAME_INCOME_TYPE_Working\n\n고객의 소득유형(사업가,근로자,출산휴가) 중 근로","metadata":{}},{"cell_type":"code","source":"train['NAME_INCOME_TYPE_Working']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.149994Z","iopub.execute_input":"2022-07-24T09:44:53.150639Z","iopub.status.idle":"2022-07-24T09:44:53.160288Z","shell.execute_reply.started":"2022-07-24T09:44:53.150606Z","shell.execute_reply":"2022-07-24T09:44:53.159446Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"Type_working=train[['TARGET','NAME_INCOME_TYPE_Working']]\nType_working=Type_working.groupby('NAME_INCOME_TYPE_Working').mean()\nType_working","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.161400Z","iopub.execute_input":"2022-07-24T09:44:53.162088Z","iopub.status.idle":"2022-07-24T09:44:53.188609Z","shell.execute_reply.started":"2022-07-24T09:44:53.162047Z","shell.execute_reply":"2022-07-24T09:44:53.187691Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train[['TARGET','NAME_INCOME_TYPE_Working']].groupby('NAME_INCOME_TYPE_Working').mean()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.190304Z","iopub.execute_input":"2022-07-24T09:44:53.190756Z","iopub.status.idle":"2022-07-24T09:44:53.212247Z","shell.execute_reply.started":"2022-07-24T09:44:53.190711Z","shell.execute_reply":"2022-07-24T09:44:53.211353Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(8,8))\nplt.bar(Type_working.index.astype(str),100*Type_working['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.213892Z","iopub.execute_input":"2022-07-24T09:44:53.214518Z","iopub.status.idle":"2022-07-24T09:44:53.368120Z","shell.execute_reply.started":"2022-07-24T09:44:53.214476Z","shell.execute_reply":"2022-07-24T09:44:53.367214Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"수입의 종류가 근로소득인 경우 그렇지않은경우보다 대출상환실패률이 높다.","metadata":{}},{"cell_type":"code","source":"correlations.tail(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.369331Z","iopub.execute_input":"2022-07-24T09:44:53.369829Z","iopub.status.idle":"2022-07-24T09:44:53.378997Z","shell.execute_reply.started":"2022-07-24T09:44:53.369790Z","shell.execute_reply":"2022-07-24T09:44:53.378125Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### DAYS_LAST_PHONE_CHANGE \n\n대출을 신청하기 전에 휴대폰을 바꾼지 얼마나 되었는가?","metadata":{}},{"cell_type":"code","source":"train['DAYS_LAST_PHONE_CHANGE']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.380231Z","iopub.execute_input":"2022-07-24T09:44:53.381025Z","iopub.status.idle":"2022-07-24T09:44:53.394255Z","shell.execute_reply.started":"2022-07-24T09:44:53.380982Z","shell.execute_reply":"2022-07-24T09:44:53.392850Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta.loc['DAYS_LAST_PHONE_CHANGE']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.396076Z","iopub.execute_input":"2022-07-24T09:44:53.396468Z","iopub.status.idle":"2022-07-24T09:44:53.409158Z","shell.execute_reply.started":"2022-07-24T09:44:53.396432Z","shell.execute_reply":"2022-07-24T09:44:53.408168Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['DAYS_LAST_PHONE_CHANGE'].describe()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.410873Z","iopub.execute_input":"2022-07-24T09:44:53.411438Z","iopub.status.idle":"2022-07-24T09:44:53.446006Z","shell.execute_reply.started":"2022-07-24T09:44:53.411397Z","shell.execute_reply":"2022-07-24T09:44:53.445163Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"DAYS_LAST_PHONE_CHANGE은 연속형 변수이고 이상치는 없다.","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(10,8))\nsns.kdeplot(train.loc[train['TARGET']==0,'DAYS_LAST_PHONE_CHANGE'],label='target==0')\nsns.kdeplot(train.loc[train['TARGET']==1,'DAYS_LAST_PHONE_CHANGE'],label='target==1')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:53.447377Z","iopub.execute_input":"2022-07-24T09:44:53.447930Z","iopub.status.idle":"2022-07-24T09:44:54.902185Z","shell.execute_reply.started":"2022-07-24T09:44:53.447890Z","shell.execute_reply":"2022-07-24T09:44:54.901265Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"target값 간에 큰 차이가 없다.","metadata":{}},{"cell_type":"markdown","source":"### CODE_GENDER_M ","metadata":{}},{"cell_type":"code","source":"meta.loc['CODE_GENDER']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:54.903416Z","iopub.execute_input":"2022-07-24T09:44:54.903733Z","iopub.status.idle":"2022-07-24T09:44:54.911699Z","shell.execute_reply.started":"2022-07-24T09:44:54.903705Z","shell.execute_reply":"2022-07-24T09:44:54.910855Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"man=train[['TARGET','CODE_GENDER_M']]\nman=man.groupby('CODE_GENDER_M').mean()\nman","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:54.912938Z","iopub.execute_input":"2022-07-24T09:44:54.913440Z","iopub.status.idle":"2022-07-24T09:44:54.936245Z","shell.execute_reply.started":"2022-07-24T09:44:54.913402Z","shell.execute_reply":"2022-07-24T09:44:54.935597Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(10,8))\nplt.bar(man.index.astype(str),man['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:54.937311Z","iopub.execute_input":"2022-07-24T09:44:54.937636Z","iopub.status.idle":"2022-07-24T09:44:55.092648Z","shell.execute_reply.started":"2022-07-24T09:44:54.937603Z","shell.execute_reply":"2022-07-24T09:44:55.091720Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"성별이 남자인 경우 대출상환실패율이 그렇지 않은 경우보다 높다.","metadata":{}},{"cell_type":"code","source":"correlations.tail(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:55.093991Z","iopub.execute_input":"2022-07-24T09:44:55.094411Z","iopub.status.idle":"2022-07-24T09:44:55.102501Z","shell.execute_reply.started":"2022-07-24T09:44:55.094370Z","shell.execute_reply":"2022-07-24T09:44:55.101608Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### DAYS_ID_PUBLISH\n\n\n대출을 신청하기 전에 대출id를 바꾼 기간","metadata":{}},{"cell_type":"code","source":"train['DAYS_ID_PUBLISH'].corr(train['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:55.103754Z","iopub.execute_input":"2022-07-24T09:44:55.104468Z","iopub.status.idle":"2022-07-24T09:44:55.119098Z","shell.execute_reply.started":"2022-07-24T09:44:55.104424Z","shell.execute_reply":"2022-07-24T09:44:55.118151Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['DAYS_ID_PUBLISH']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:55.120455Z","iopub.execute_input":"2022-07-24T09:44:55.121313Z","iopub.status.idle":"2022-07-24T09:44:55.129995Z","shell.execute_reply.started":"2022-07-24T09:44:55.121268Z","shell.execute_reply":"2022-07-24T09:44:55.129135Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta.loc['DAYS_ID_PUBLISH']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:55.131912Z","iopub.execute_input":"2022-07-24T09:44:55.132391Z","iopub.status.idle":"2022-07-24T09:44:55.143737Z","shell.execute_reply.started":"2022-07-24T09:44:55.132347Z","shell.execute_reply":"2022-07-24T09:44:55.142916Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['DAYS_ID_PUBLISH'].describe()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:55.145030Z","iopub.execute_input":"2022-07-24T09:44:55.145370Z","iopub.status.idle":"2022-07-24T09:44:55.167104Z","shell.execute_reply.started":"2022-07-24T09:44:55.145339Z","shell.execute_reply":"2022-07-24T09:44:55.166186Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(10,8))\n\nsns.kdeplot(train.loc[train['TARGET']==0,'DAYS_ID_PUBLISH'],label='target==0')\nsns.kdeplot(train.loc[train['TARGET']==1,'DAYS_ID_PUBLISH'],label='target==1')","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:55.168387Z","iopub.execute_input":"2022-07-24T09:44:55.168684Z","iopub.status.idle":"2022-07-24T09:44:56.554019Z","shell.execute_reply.started":"2022-07-24T09:44:55.168658Z","shell.execute_reply":"2022-07-24T09:44:56.552949Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"target값 간에 분포의 큰 차이가 없다.","metadata":{}},{"cell_type":"markdown","source":"### REG_CITY_NOT_WORK_CITY\n\n거주지와 일하는 곳의 주소지가 다른지 같은지\n\n0인 경우는 같다. 1인 경우는 다르다.","metadata":{}},{"cell_type":"code","source":"correlations.tail(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:56.555341Z","iopub.execute_input":"2022-07-24T09:44:56.555662Z","iopub.status.idle":"2022-07-24T09:44:56.563883Z","shell.execute_reply.started":"2022-07-24T09:44:56.555633Z","shell.execute_reply":"2022-07-24T09:44:56.562932Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta.loc['REG_CITY_NOT_WORK_CITY']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:56.565105Z","iopub.execute_input":"2022-07-24T09:44:56.565504Z","iopub.status.idle":"2022-07-24T09:44:56.576133Z","shell.execute_reply.started":"2022-07-24T09:44:56.565473Z","shell.execute_reply":"2022-07-24T09:44:56.575407Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['REG_CITY_NOT_WORK_CITY']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:56.577177Z","iopub.execute_input":"2022-07-24T09:44:56.577619Z","iopub.status.idle":"2022-07-24T09:44:56.590928Z","shell.execute_reply.started":"2022-07-24T09:44:56.577584Z","shell.execute_reply":"2022-07-24T09:44:56.589848Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot('REG_CITY_NOT_WORK_CITY',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:56.592053Z","iopub.execute_input":"2022-07-24T09:44:56.592479Z","iopub.status.idle":"2022-07-24T09:44:56.760613Z","shell.execute_reply.started":"2022-07-24T09:44:56.592446Z","shell.execute_reply":"2022-07-24T09:44:56.759599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['REG_CITY_NOT_WORK_CITY'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:56.762555Z","iopub.execute_input":"2022-07-24T09:44:56.763319Z","iopub.status.idle":"2022-07-24T09:44:56.773222Z","shell.execute_reply.started":"2022-07-24T09:44:56.763270Z","shell.execute_reply":"2022-07-24T09:44:56.772319Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"일하는 곳과 거주지가 같은 경우가 그렇지 않은 경우보다 3배 많다.","metadata":{}},{"cell_type":"code","source":"reg_work=train[['REG_CITY_NOT_WORK_CITY','TARGET']]\nreg_work=reg_work.groupby('REG_CITY_NOT_WORK_CITY').mean()\nreg_work","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:56.774296Z","iopub.execute_input":"2022-07-24T09:44:56.774695Z","iopub.status.idle":"2022-07-24T09:44:56.800275Z","shell.execute_reply.started":"2022-07-24T09:44:56.774668Z","shell.execute_reply":"2022-07-24T09:44:56.799110Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(8,8))\nplt.bar(reg_work.index.astype(str),reg_work['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:56.801687Z","iopub.execute_input":"2022-07-24T09:44:56.802420Z","iopub.status.idle":"2022-07-24T09:44:57.113008Z","shell.execute_reply.started":"2022-07-24T09:44:56.802372Z","shell.execute_reply":"2022-07-24T09:44:57.112076Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"일하는 곳과 거주지가 다를 경우 대출상환실패율이 높다/ ","metadata":{}},{"cell_type":"markdown","source":"### NAME_EDUCATION_TYPE_Secondary / secondary special\n\nclient의 학력 수준으로 최종학력이 중학교 수준인 경우이다.","metadata":{}},{"cell_type":"code","source":"correlations.tail(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.114156Z","iopub.execute_input":"2022-07-24T09:44:57.114455Z","iopub.status.idle":"2022-07-24T09:44:57.122144Z","shell.execute_reply.started":"2022-07-24T09:44:57.114419Z","shell.execute_reply":"2022-07-24T09:44:57.121298Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"meta.loc['NAME_EDUCATION_TYPE']","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.123219Z","iopub.execute_input":"2022-07-24T09:44:57.124049Z","iopub.status.idle":"2022-07-24T09:44:57.135545Z","shell.execute_reply.started":"2022-07-24T09:44:57.124018Z","shell.execute_reply":"2022-07-24T09:44:57.134861Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['NAME_EDUCATION_TYPE_Secondary / secondary special'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.136651Z","iopub.execute_input":"2022-07-24T09:44:57.136972Z","iopub.status.idle":"2022-07-24T09:44:57.149537Z","shell.execute_reply.started":"2022-07-24T09:44:57.136945Z","shell.execute_reply":"2022-07-24T09:44:57.148914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot('NAME_EDUCATION_TYPE_Secondary / secondary special',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.150687Z","iopub.execute_input":"2022-07-24T09:44:57.151401Z","iopub.status.idle":"2022-07-24T09:44:57.325903Z","shell.execute_reply.started":"2022-07-24T09:44:57.151368Z","shell.execute_reply":"2022-07-24T09:44:57.324973Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"대출신청자의 학력이 중학교인 경우가 그렇지 않은 경우보다 3배가까이된다.","metadata":{}},{"cell_type":"code","source":"edu_se=train[['NAME_EDUCATION_TYPE_Secondary / secondary special','TARGET']]\nedu_se=edu_se.groupby('NAME_EDUCATION_TYPE_Secondary / secondary special').mean()\nedu_se","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.327452Z","iopub.execute_input":"2022-07-24T09:44:57.328043Z","iopub.status.idle":"2022-07-24T09:44:57.350098Z","shell.execute_reply.started":"2022-07-24T09:44:57.328000Z","shell.execute_reply":"2022-07-24T09:44:57.348726Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(8,8))\nplt.bar(edu_se.index.astype(str),edu_se['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.351263Z","iopub.execute_input":"2022-07-24T09:44:57.351660Z","iopub.status.idle":"2022-07-24T09:44:57.493873Z","shell.execute_reply.started":"2022-07-24T09:44:57.351627Z","shell.execute_reply":"2022-07-24T09:44:57.492847Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"최종학력이 중졸인 사람이 그렇지 않은 사람보다 대출상환실패율이 더 높다.","metadata":{}},{"cell_type":"markdown","source":"### -Correlations\n\n\n다음으로 -correlation에 대해서 eda를 진행하겠다.","metadata":{}},{"cell_type":"code","source":"correlations.head(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.495319Z","iopub.execute_input":"2022-07-24T09:44:57.496364Z","iopub.status.idle":"2022-07-24T09:44:57.504511Z","shell.execute_reply.started":"2022-07-24T09:44:57.496316Z","shell.execute_reply":"2022-07-24T09:44:57.503671Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"correlations.tail(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.505693Z","iopub.execute_input":"2022-07-24T09:44:57.506067Z","iopub.status.idle":"2022-07-24T09:44:57.517320Z","shell.execute_reply.started":"2022-07-24T09:44:57.506037Z","shell.execute_reply":"2022-07-24T09:44:57.516160Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### EXT_SOURCE_3,2,1\n\n\n-외부 데이터의 정규화된 요소로 외부데이터이고 가장 강력한 -상관관계를 가지고 있다. ","metadata":{}},{"cell_type":"code","source":"ext=train[['TARGET', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']]\next_corr=ext.corr()\next_corr","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.518645Z","iopub.execute_input":"2022-07-24T09:44:57.519297Z","iopub.status.idle":"2022-07-24T09:44:57.575805Z","shell.execute_reply.started":"2022-07-24T09:44:57.519264Z","shell.execute_reply":"2022-07-24T09:44:57.575150Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 df는 새롭게 만든 ext내부의 feature들간의 상관관계를 나타낸 것이다. ext_source를 보면 그 정의가 모두 똑같다. 그러므로 ext_source와 target뿐만 아니라 ext_source간에 상관관계를 확인해야한다. 그래서 ext_source가 다중공선성관계가 있는지 확인해야한다.\n다중공선성은 변수들 간에 선형관계에 가까운 높은 상관관계를 갖는 것을 의미한다. 위의 표를 보면 ext_source들끼리 상관관계가 높지않아서 다중공선성 문제를 일으킬 가능성이 낮다. feature들간에 다중공선성 문제가 발생하면 model의 성능이 떨어질 가능성이 높다.","metadata":{}},{"cell_type":"markdown","source":"그러나 ext_source_1과 days_birth간에 상관관계가 꽤 높다. ext_source_1이 나이를 고려한 부분이 있다는 것을 추측할 수 있다.","metadata":{}},{"cell_type":"code","source":"meta.loc[['EXT_SOURCE_3','EXT_SOURCE_2','EXT_SOURCE_1']]","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.576874Z","iopub.execute_input":"2022-07-24T09:44:57.577270Z","iopub.status.idle":"2022-07-24T09:44:57.587974Z","shell.execute_reply.started":"2022-07-24T09:44:57.577242Z","shell.execute_reply":"2022-07-24T09:44:57.587113Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ext.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.589455Z","iopub.execute_input":"2022-07-24T09:44:57.589902Z","iopub.status.idle":"2022-07-24T09:44:57.601529Z","shell.execute_reply.started":"2022-07-24T09:44:57.589872Z","shell.execute_reply":"2022-07-24T09:44:57.600804Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(10,12))\n\n# iterate through the sources\n\nfor i, source in enumerate(['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']):\n    \n    \n    # create a new subplot for each source\n    # 반복횟수에 따라 subplot이 출력\n    \n    plt.subplot(3,1,i+1)\n    # plot repaid loans and plot loans that were not repaid\n    sns.kdeplot(train.loc[train['TARGET']==0,source],label='target==0')\n    sns.kdeplot(train.loc[train['TARGET']==1,source],label='target==1')\n    \n    # Label the plots\n    \n    plt.title('Distribution of %s by Target Value' % source)\n    plt.xlabel('%s' % source); plt.ylabel('Density');\n    plt.legend\n\n# 출력되는 그래프끼리 겹치는 것을 방지하기 위해서\nplt.tight_layout(h_pad=2.5)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:44:57.609670Z","iopub.execute_input":"2022-07-24T09:44:57.610154Z","iopub.status.idle":"2022-07-24T09:45:01.292087Z","shell.execute_reply.started":"2022-07-24T09:44:57.610124Z","shell.execute_reply":"2022-07-24T09:45:01.287244Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"위의 그래프를 보면 EXT_SOURCE_1,3가 target값 간에 꽤 큰 차이를 보인다. 비록 상관관계는 낮지만 EXT_SOURCE_1,3는 TARGET에 영향을 준다.","metadata":{}},{"cell_type":"markdown","source":"둘다 값이 작아질수록 대출상환실패율이 증가한다.","metadata":{}},{"cell_type":"markdown","source":"### multicollinearity\n\nfeature()들간의 분포를 보기위해서 lmplot로 시각화를 하겠다.\nlmplot을 그리면 scatter와 linear regression 모두 볼 수 있어서 feature간의 관계를 파악하기 쉽다. 단 회귀선을 구하는데 시간이 오래걸리므로 샘플을 뽑아서 진행하겠다.\n\n['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']","metadata":{}},{"cell_type":"code","source":"ext.columns","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.293424Z","iopub.execute_input":"2022-07-24T09:45:01.294434Z","iopub.status.idle":"2022-07-24T09:45:01.302596Z","shell.execute_reply.started":"2022-07-24T09:45:01.294386Z","shell.execute_reply":"2022-07-24T09:45:01.301621Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ext_corr","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.305405Z","iopub.execute_input":"2022-07-24T09:45:01.306605Z","iopub.status.idle":"2022-07-24T09:45:01.330110Z","shell.execute_reply.started":"2022-07-24T09:45:01.306555Z","shell.execute_reply":"2022-07-24T09:45:01.328601Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"ext_source_1,2,3은 다중공선성 문제가 발생하지않는다.","metadata":{}},{"cell_type":"markdown","source":"### NAME_EDUCATION_TYPE_Higher education","metadata":{}},{"cell_type":"code","source":"correlations.head(10)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.335274Z","iopub.execute_input":"2022-07-24T09:45:01.336183Z","iopub.status.idle":"2022-07-24T09:45:01.349236Z","shell.execute_reply.started":"2022-07-24T09:45:01.336129Z","shell.execute_reply":"2022-07-24T09:45:01.347589Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"다음으로 NAME_EDUCATION_TYPE_Higher education에 대해서 살펴보겠다.\nNAME_EDUCATION_TYPE_Higher education는 대출신청자의 교육수준이 고등학교인 경우이다. ","metadata":{}},{"cell_type":"code","source":"train['NAME_EDUCATION_TYPE_Secondary / secondary special'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.352004Z","iopub.execute_input":"2022-07-24T09:45:01.353076Z","iopub.status.idle":"2022-07-24T09:45:01.368770Z","shell.execute_reply.started":"2022-07-24T09:45:01.352999Z","shell.execute_reply":"2022-07-24T09:45:01.367477Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['NAME_EDUCATION_TYPE_Higher education'].value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.371003Z","iopub.execute_input":"2022-07-24T09:45:01.371853Z","iopub.status.idle":"2022-07-24T09:45:01.386403Z","shell.execute_reply.started":"2022-07-24T09:45:01.371773Z","shell.execute_reply":"2022-07-24T09:45:01.385050Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot('NAME_EDUCATION_TYPE_Secondary / secondary special',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.388046Z","iopub.execute_input":"2022-07-24T09:45:01.388703Z","iopub.status.idle":"2022-07-24T09:45:01.597387Z","shell.execute_reply.started":"2022-07-24T09:45:01.388663Z","shell.execute_reply":"2022-07-24T09:45:01.596113Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.countplot('NAME_EDUCATION_TYPE_Higher education',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.598647Z","iopub.execute_input":"2022-07-24T09:45:01.599485Z","iopub.status.idle":"2022-07-24T09:45:01.809601Z","shell.execute_reply.started":"2022-07-24T09:45:01.599444Z","shell.execute_reply":"2022-07-24T09:45:01.808615Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"대출신청자들 중 학력이 고등학교의 학력수준을 갖는 경우가 그렇지 않은 경우보다 훨씬 적다. 반대로 학력이 중학교인 경우는 그렇지 않은 경우보다 훨씬 많다.","metadata":{}},{"cell_type":"code","source":"train['NAME_EDUCATION_TYPE_Secondary / secondary special'].corr(train['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.810763Z","iopub.execute_input":"2022-07-24T09:45:01.811466Z","iopub.status.idle":"2022-07-24T09:45:01.827723Z","shell.execute_reply.started":"2022-07-24T09:45:01.811418Z","shell.execute_reply":"2022-07-24T09:45:01.826662Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['NAME_EDUCATION_TYPE_Higher education'].corr(train['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.829675Z","iopub.execute_input":"2022-07-24T09:45:01.830636Z","iopub.status.idle":"2022-07-24T09:45:01.853410Z","shell.execute_reply.started":"2022-07-24T09:45:01.830573Z","shell.execute_reply":"2022-07-24T09:45:01.851897Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"edu=train[['NAME_EDUCATION_TYPE_Higher education','TARGET']]\nedu=edu.groupby('NAME_EDUCATION_TYPE_Higher education').mean()\nedu","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.855248Z","iopub.execute_input":"2022-07-24T09:45:01.855680Z","iopub.status.idle":"2022-07-24T09:45:01.883692Z","shell.execute_reply.started":"2022-07-24T09:45:01.855642Z","shell.execute_reply":"2022-07-24T09:45:01.882200Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"edu_mi=train[['NAME_EDUCATION_TYPE_Secondary / secondary special','TARGET']]\neud_mi=edu_mi.groupby('NAME_EDUCATION_TYPE_Secondary / secondary special').mean()\neud_mi","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.885102Z","iopub.execute_input":"2022-07-24T09:45:01.886084Z","iopub.status.idle":"2022-07-24T09:45:01.915954Z","shell.execute_reply.started":"2022-07-24T09:45:01.886025Z","shell.execute_reply":"2022-07-24T09:45:01.914195Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(8,8))\nplt.bar(edu_mi.index.astype('str'),100*edu_mi['TARGET'])","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:45:01.918467Z","iopub.execute_input":"2022-07-24T09:45:01.919626Z","iopub.status.idle":"2022-07-24T09:46:05.604229Z","shell.execute_reply.started":"2022-07-24T09:45:01.919363Z","shell.execute_reply":"2022-07-24T09:46:05.602686Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(8,8))\nplt.bar(edu.index.astype('str'),100*edu['TARGET'])\n# astype(str)을 해주어야 x축이 좀 더 보기 편하다.","metadata":{"execution":{"iopub.status.busy":"2022-07-24T09:46:05.605169Z","iopub.status.idle":"2022-07-24T09:46:05.605545Z","shell.execute_reply.started":"2022-07-24T09:46:05.605380Z","shell.execute_reply":"2022-07-24T09:46:05.605397Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"TARGET인 대출상환실패율과의 관계를 보면 고등학교까지 나온 경우는 대출상환실패율이 중학교까지만 나온 경우보다 더 낮다는 것을 볼 수 있다.","metadata":{}},{"cell_type":"code","source":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"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":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}