{"cells":[{"metadata":{},"cell_type":"markdown","source":"Is the second character of ord_5 junk?"},{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom sklearn.preprocessing import LabelEncoder, StandardScaler\nfrom sklearn.metrics import roc_auc_score, log_loss\nimport matplotlib.pyplot as plt\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ls ../input","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def OrdinalConverter(d):\n    a1 = ord(d[:1])-65\n    if(a1>26):\n        a1-=6\n    if(len(d)==1):\n        return a1\n    a2 = ord(d[1:2])-65\n    if(a2>26):\n        a2-=6\n    return a1*52+a2","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train = pd.read_csv('../input/cat-in-the-dat-ii/train.csv')\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train.ord_5.unique()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train = df_train.set_index('id')\ny_train = df_train.target\ndel df_train['target']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ord_0_mapping = {1 : 0, 2 : 1, 3 : 2}\nord_1_mapping = {'Novice' : 0, 'Contributor' : 1, 'Expert' : 2, 'Master': 3, 'Grandmaster': 4}\nord_2_mapping = { 'Freezing': 0, 'Cold': 1, 'Warm' : 2, 'Hot': 3, 'Boiling Hot' : 4, 'Lava Hot' : 5}\ndf_train['real_ord_0'] = df_train.loc[df_train.ord_0.notnull(), 'ord_0'].map(ord_0_mapping)\ndf_train['real_ord_1'] = df_train.loc[df_train.ord_1.notnull(), 'ord_1'].map(ord_1_mapping)\ndf_train['real_ord_2'] = df_train.loc[df_train.ord_2.notnull(), 'ord_2'].map(ord_2_mapping)\notherordinals = ['ord_3','ord_4','ord_5']\n\nfor c in otherordinals:\n    print(c)\n    df_train['real_'+c] = df_train[[c]].apply(lambda a: OrdinalConverter(a[c]) if not pd.isnull(a[c]) else np.nan,axis=1)\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train['real_right_'+c] = df_train[[c]].apply(lambda a: OrdinalConverter(a[c][:1]) if not pd.isnull(a[c]) else np.nan,axis=1)\ndf_train['real_left_'+c] = df_train[[c]].apply(lambda a: OrdinalConverter(a[c][1:]) if not pd.isnull(a[c]) else np.nan,axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"realordinals = [c for c in df_train.columns if 'real_' in c]\nfor c in realordinals:\n    print(c)\n    x = pd.DataFrame()\n    x['target'] = y_train[~df_train[c].isnull()]\n    x[c] = df_train[~df_train[c].isnull()][c]\n    y = x.groupby(c).target.mean().reset_index(drop=False)\n\n    plt.scatter(y[c],y.target)\n    plt.show()","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.3"}},"nbformat":4,"nbformat_minor":1}