{"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":"# Import Libraries\n\nSpecial Thanks to @[Ahmed El Fazouani](https://www.kaggle.com/ahmedelfazouan)\n\nand his notebook : https://www.kaggle.com/code/ahmedelfazouan/g2net-lgbm","metadata":{}},{"cell_type":"code","source":"import numpy as np \nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport random\n\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.naive_bayes import GaussianNB\nfrom sklearn.svm import SVC\nfrom sklearn.neighbors import RadiusNeighborsClassifier\nfrom sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis\nfrom sklearn.neighbors import NearestCentroid\nfrom sklearn.neural_network import MLPClassifier\nfrom sklearn.metrics import accuracy_score\n\n\nfrom sklearn.model_selection import train_test_split, cross_val_score\nfrom sklearn.model_selection import RandomizedSearchCV, GridSearchCV\nfrom sklearn.metrics import confusion_matrix, classification_report\nfrom sklearn.metrics import precision_score, recall_score, f1_score\n\n\nimport gc\n","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:31:25.134136Z","iopub.execute_input":"2022-11-18T15:31:25.134564Z","iopub.status.idle":"2022-11-18T15:31:25.462557Z","shell.execute_reply.started":"2022-11-18T15:31:25.134526Z","shell.execute_reply":"2022-11-18T15:31:25.461634Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load Train data\nThe train and Test data were generated in this [notebook](https://www.kaggle.com/code/ahmedelfazouan/g2net-prepare-features).\n","metadata":{}},{"cell_type":"code","source":"train = pd.read_csv(\"../input/traindata/train_g2_133.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:32:09.556741Z","iopub.execute_input":"2022-11-18T15:32:09.557126Z","iopub.status.idle":"2022-11-18T15:32:17.273423Z","shell.execute_reply.started":"2022-11-18T15:32:09.557096Z","shell.execute_reply":"2022-11-18T15:32:17.2724Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load Test data","metadata":{}},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:32:29.045829Z","iopub.execute_input":"2022-11-18T15:32:29.046914Z","iopub.status.idle":"2022-11-18T15:32:29.082578Z","shell.execute_reply.started":"2022-11-18T15:32:29.046871Z","shell.execute_reply":"2022-11-18T15:32:29.081539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Explore the train data and data spliting \n","metadata":{}},{"cell_type":"code","source":"\ndf = train.copy()\n\n\nprint(\"________________________________________________\")\nprint(\"len(df_test ) \" , len(df) )\nprint(\"________________________________________________\")\n\n\n\nprint(\"________________________________________________\")\nprint(\"df[target].value_counts()\")\n\nprint(df[\"target\"].value_counts())\n\nprint(\"________________________________________________\")\n\ndf_one = df[df[\"target\"] == 1]\ndf_zero = df[df[\"target\"] == 0]\n\n\n\nnumber = 8000  #taking only 8000 \n\ndf_one = df_one.head(number)\ndf_zero = df_zero.head(number)\n\nprint(\"________________________________________________\")\nprint(\"zero and one\")\nprint(df_one[\"target\"].value_counts())\nprint(df_zero[\"target\"].value_counts())\nprint(\"________________________________________________\")\n\n\n\n\ndf1 = pd.concat([df_one,df_zero])\n\nprint('__________________________________________________')\n\nprint(\"(df1[target].value_counts()\")\n\nprint(df1[\"target\"].value_counts())\n\nprint('__________________________________________________')\n\n\ndf1 = df1.sample(frac = 1)","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:32:50.304084Z","iopub.execute_input":"2022-11-18T15:32:50.304656Z","iopub.status.idle":"2022-11-18T15:32:50.555182Z","shell.execute_reply.started":"2022-11-18T15:32:50.304621Z","shell.execute_reply":"2022-11-18T15:32:50.554121Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = df1.drop([\"id\" , \"target\"] , axis= 1 )\ny = df1[\"target\"]\n\n\n\nrandom.seed(69)\n\nX_train, X_test, y_train, y_test = train_test_split(X, \n                                                    y, \n                                                    test_size = 0.2)","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:33:05.08952Z","iopub.execute_input":"2022-11-18T15:33:05.089918Z","iopub.status.idle":"2022-11-18T15:33:05.113405Z","shell.execute_reply.started":"2022-11-18T15:33:05.089887Z","shell.execute_reply":"2022-11-18T15:33:05.112497Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Testing different models from sklearn ","metadata":{}},{"cell_type":"code","source":"models = {\"KNN\": KNeighborsClassifier(),\n          \"SVC\": SVC(), \n          \"Random Forest\": RandomForestClassifier(),\n          \"LogisticRegression\" : LogisticRegression() , \n          \"GaussianNB\" : GaussianNB() , \n          \"QuadraticDiscriminantAnalysis\" : QuadraticDiscriminantAnalysis(),\n          \"NearestCentroid\" : NearestCentroid() , \n          \"MLPClassifier\" : MLPClassifier()\n\n\n\n          }\n\n\ndef fit_and_score(models, X_train, X_test, y_train, y_test):\n  \n    \n    # Random seed for reproducible results\n    np.random.seed(42)\n    # Make a list to keep model scores\n    model_scores = {}\n    # Loop through models\n    for name, model in models.items():\n        # Fit the model to the data\n\n        try:\n\n            print()\n            print()\n            print(name)\n            print()\n            model.fit(X_train, y_train)\n            # Evaluate the model and append its score to model_scores\n            val = model.score(X_test, y_test)\n            print(val)\n            print()\n            print()\n            model_scores[name] = val\n        \n        except Exception as e:\n\n            print(e)\n\n    return model_scores","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:33:26.206983Z","iopub.execute_input":"2022-11-18T15:33:26.207676Z","iopub.status.idle":"2022-11-18T15:33:26.217208Z","shell.execute_reply.started":"2022-11-18T15:33:26.20764Z","shell.execute_reply":"2022-11-18T15:33:26.216027Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_scores = fit_and_score(models=models,\n                             X_train=X_train,\n                             X_test=X_test,\n                             y_train=y_train,\n                             y_test=y_test)","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:33:34.541034Z","iopub.execute_input":"2022-11-18T15:33:34.541595Z","iopub.status.idle":"2022-11-18T15:34:17.643978Z","shell.execute_reply.started":"2022-11-18T15:33:34.541553Z","shell.execute_reply":"2022-11-18T15:34:17.64077Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cv_metrics = pd.DataFrame(model_scores,\n                          index=[0])\n\ncv_metrics.T.plot.bar(title=\"comparison\",\n                      legend=False);","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:34:17.64601Z","iopub.execute_input":"2022-11-18T15:34:17.646619Z","iopub.status.idle":"2022-11-18T15:34:17.929295Z","shell.execute_reply.started":"2022-11-18T15:34:17.646579Z","shell.execute_reply":"2022-11-18T15:34:17.92835Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Submission","metadata":{}},{"cell_type":"code","source":"model = RandomForestClassifier()\n\nmodel.fit(X_train,y_train)\n\nprint(model.score(X_test,y_test))","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:35:34.256376Z","iopub.execute_input":"2022-11-18T15:35:34.256757Z","iopub.status.idle":"2022-11-18T15:35:41.667065Z","shell.execute_reply.started":"2022-11-18T15:35:34.256725Z","shell.execute_reply":"2022-11-18T15:35:41.665894Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df = df = pd.read_csv(\"../input/testdata/test_g2net.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:35:41.669143Z","iopub.execute_input":"2022-11-18T15:35:41.670193Z","iopub.status.idle":"2022-11-18T15:35:41.870474Z","shell.execute_reply.started":"2022-11-18T15:35:41.670145Z","shell.execute_reply":"2022-11-18T15:35:41.869479Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"id = np.array([i for i in test_df[\"id\"]])\ntest_df = test_df.drop([\"id\"],axis = 1 )\nprob = model.predict_proba(test_df)\n\n\ntarget = []\nfor p in prob:\n\n    target.append(p[1])\n\ntarget = np.array(target)\n\ndata = {'id': id,\n        'target': target}\n\nsub = pd.DataFrame(data)","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:35:41.872091Z","iopub.execute_input":"2022-11-18T15:35:41.872488Z","iopub.status.idle":"2022-11-18T15:35:42.006559Z","shell.execute_reply.started":"2022-11-18T15:35:41.872448Z","shell.execute_reply":"2022-11-18T15:35:42.005641Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub.to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2022-11-18T15:35:48.61575Z","iopub.execute_input":"2022-11-18T15:35:48.616127Z","iopub.status.idle":"2022-11-18T15:35:48.636378Z","shell.execute_reply.started":"2022-11-18T15:35:48.616096Z","shell.execute_reply":"2022-11-18T15:35:48.635312Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}