{"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":"code","source":"import pandas as pd \n\nfrom sklearn import model_selection\nfrom sklearn import linear_model\nfrom sklearn import metrics\nfrom sklearn import preprocessing","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-11-22T07:31:42.444027Z","iopub.execute_input":"2021-11-22T07:31:42.444283Z","iopub.status.idle":"2021-11-22T07:31:42.447902Z","shell.execute_reply.started":"2021-11-22T07:31:42.444257Z","shell.execute_reply":"2021-11-22T07:31:42.447266Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_folds(df, split=7):    \n    data = df.sample(frac=1).reset_index(drop=True)    \n    data[\"kfold\"] = -1    \n    skf = model_selection.StratifiedKFold(n_splits=split)\n    for fold, (train_, valid_) in enumerate(skf.split(data, data.target)):\n        data.loc[valid_, \"kfold\"] = fold        \n    return data","metadata":{"execution":{"iopub.status.busy":"2021-11-22T07:31:42.449547Z","iopub.execute_input":"2021-11-22T07:31:42.450104Z","iopub.status.idle":"2021-11-22T07:31:42.461236Z","shell.execute_reply.started":"2021-11-22T07:31:42.450073Z","shell.execute_reply":"2021-11-22T07:31:42.460596Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def run(fold, split):\n    df = pd.read_csv(\"/kaggle/input/cat-in-the-dat-ii/train.csv\")\n    test = pd.read_csv(\"/kaggle/input/cat-in-the-dat-ii/test.csv\")\n    \n    df = create_folds(df, split)\n        \n    features = [ feature for feature in df.columns if feature not in [\"id\", \"kfold\", \"target\"] ]\n        \n    for feature in features:\n        df[feature] = df[feature].astype(str).fillna(\"none\")\n        test[feature] = test[feature].astype(str).fillna(\"none\")\n        \n    all_data = pd.concat([df[features], test[features]], axis=0)\n                \n    train = df[df.kfold != fold ].reset_index(drop=True)\n    valid = df[df.kfold == fold].reset_index(drop=True) \n            \n    # One Hot Encoder\n    ohe = preprocessing.OneHotEncoder().fit(all_data[features])\n    train_ohe = ohe.transform(train[features])\n    valid_ohe = ohe.transform(valid[features])\n    test_ohe = ohe.transform(test[features])\n    \n    #Logistic Regression\n    lgr = linear_model.LogisticRegression(max_iter=800)\n    lgr.fit(train_ohe, train.target)\n    \n    return lgr, test_ohe    ","metadata":{"execution":{"iopub.status.busy":"2021-11-22T07:31:42.462943Z","iopub.execute_input":"2021-11-22T07:31:42.463467Z","iopub.status.idle":"2021-11-22T07:31:42.474347Z","shell.execute_reply.started":"2021-11-22T07:31:42.463422Z","shell.execute_reply":"2021-11-22T07:31:42.473722Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def evaluate(models):\n    result = pd.DataFrame()\n    for i, (model, test_ohe) in enumerate(models):\n        result[i] = model.predict_proba(test_ohe)[:, 1]         \n    result[\"mean\"] = result.mean(axis=1)\n    return result    ","metadata":{"execution":{"iopub.status.busy":"2021-11-22T07:31:42.475707Z","iopub.execute_input":"2021-11-22T07:31:42.476188Z","iopub.status.idle":"2021-11-22T07:31:42.486575Z","shell.execute_reply.started":"2021-11-22T07:31:42.476146Z","shell.execute_reply":"2021-11-22T07:31:42.485724Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"split = 7\nmodels = []\nfor i in range(split):\n    models.append(run(i, split))\nsub_vals = evaluate(models)","metadata":{"execution":{"iopub.status.busy":"2021-11-22T07:31:42.488186Z","iopub.execute_input":"2021-11-22T07:31:42.488657Z","iopub.status.idle":"2021-11-22T07:40:18.016468Z","shell.execute_reply.started":"2021-11-22T07:31:42.488624Z","shell.execute_reply":"2021-11-22T07:40:18.015108Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.read_csv(\"/kaggle/input/cat-in-the-dat-ii/sample_submission.csv\")\nsubmission[\"target\"] = sub_vals[\"mean\"]\nsubmission.to_csv('./submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2021-11-22T07:40:18.018430Z","iopub.execute_input":"2021-11-22T07:40:18.018683Z","iopub.status.idle":"2021-11-22T07:40:19.124885Z","shell.execute_reply.started":"2021-11-22T07:40:18.018656Z","shell.execute_reply":"2021-11-22T07:40:19.123913Z"},"trusted":true},"execution_count":null,"outputs":[]}]}