{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":63054,"databundleVersionId":6872631,"sourceType":"competition"}],"dockerImageVersionId":30579,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"#imports\n\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nfrom sklearn.preprocessing import LabelEncoder\nfrom imblearn.over_sampling import SMOTE\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.preprocessing import LabelEncoder\nfrom imblearn.over_sampling import SMOTE\nfrom sklearn.ensemble import RandomForestClassifier\n\n# loading data\n\nimport os\npaths = []\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    paths = [dirname + '/' + filename for filename in filenames]\npath_to_testing = paths[2]\npath_to_training = paths[1]\npath_to_y_test = paths[0]\n\n\ntrain = pd.read_csv(path_to_training)\ntest = pd.read_csv(path_to_testing)\nY_res = pd.read_csv(path_to_y_test)\n\n\n# preprocessing\n\ns = \"trans_date_trans_time\"\n\ntrain.drop(s,axis = 1, inplace=True)\ntrain.drop(\"trans_num\",axis = 1, inplace=True)\ntrain[\"full\"] = train[\"first\"] + train[\"last\"]\ntrain.drop([\"first\",\"last\"],axis = 1, inplace=True)\ntrain[\"age\"] = 2023 - train[\"dob\"].apply(lambda x : int(x.split('-')[0]))\n\ndef transform(cols,df):\n    for col in cols:\n        df[col] = le.fit_transform(df[col])\n\nle = LabelEncoder()\n\ntransform([\"full\",\"cc_num\",\"merchant\",\"category\",\"state\",\"city\",\"zip\",\"job\",\"dob\",\"gender\",\"street\"],train)\n\ntest.drop(s,axis = 1, inplace=True)\ntest.drop(\"trans_num\",axis = 1, inplace=True)\ntest[\"full\"] = test[\"first\"] + test[\"last\"]\ntest.drop([\"first\",\"last\"],axis = 1, inplace=True)\ntest[\"age\"] = 2023 - test[\"dob\"].apply(lambda x : int(x.split('-')[0]))\n\ntransform([\"full\",\"cc_num\",\"merchant\",\"category\",\"state\",\"city\",\"zip\",\"job\",\"dob\",\"gender\",\"street\"],test)\n\n# resampling because minority fraud datapoints\n\nsmote = SMOTE(sampling_strategy='minority', random_state=42)\nX_train, Y_train = smote.fit_resample(train.drop(\"is_fraud\",axis = 1),train[\"is_fraud\"])\n\n\n# predict\n\nclf = RandomForestClassifier(criterion = 'gini', max_depth = 10,min_samples_split = 10,random_state = 42)\nclf.fit(X_train,Y_train)\nres  = clf.predict(test)\nY_res[\"is_fraud\"] = res\nY_res.to_csv('/kaggle/working/submission.csv',index = False)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-11-21T20:44:57.050266Z","iopub.execute_input":"2023-11-21T20:44:57.050641Z","iopub.status.idle":"2023-11-21T20:45:35.760478Z","shell.execute_reply.started":"2023-11-21T20:44:57.050613Z","shell.execute_reply":"2023-11-21T20:45:35.758919Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport matplotlib.pyplot as plt\nfrom matplotlib import gridspec\nfrom sklearn.preprocessing import LabelEncoder\nimport seaborn as sns\n\n# loading data\n\nimport os\npaths = []\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    paths = [dirname + '/' + filename for filename in filenames]\n# path_to_testing = paths[2]\npath_to_training = paths[1]\n# path_to_y_test = paths[0]\n\n\ntrain = pd.read_csv(path_to_training)\n\n\n# preprocessing\n\ns = \"trans_date_trans_time\"\n\ntrain.drop(s,axis = 1, inplace=True)\ntrain.drop(\"trans_num\",axis = 1, inplace=True)\ntrain[\"full\"] = train[\"first\"] + train[\"last\"]\ntrain.drop([\"first\",\"last\"],axis = 1, inplace=True)\n\ndef transform(cols,df):\n    for col in cols:\n        df[col] = le.fit_transform(df[col])\n\nle = LabelEncoder()\n\ntransform([\"full\",\"cc_num\",\"merchant\",\"category\",\"state\",\"city\",\"zip\",\"job\",\"dob\",\"gender\",\"street\"],train)\n\nplt.figure(figsize=(12,28*4))\n\n# gs = gridspec.GridSpec(28, 1)\n# features =  [\"full\",\"cc_num\",\"merchant\",\"category\",\"state\",\"city\",\"zip\",\"job\",\"dob\",\"gender\",\"street\",\"amt\"]\n# for c in features:\n#     sns.scatterplot(x=c, y='is_fraud', data=train, hue='is_fraud', marker='o', s=100)\n#     plt.title(f'Scatter Plot of {c} vs Target')\n#     plt.xlabel(c)\n#     plt.ylabel('is_fraud')\n#     plt.legend(title='is_fraud', labels=['Class 0', 'Class 1'])\n# plt.show()","metadata":{"execution":{"iopub.status.busy":"2023-11-21T19:50:17.422939Z","iopub.execute_input":"2023-11-21T19:50:17.423350Z","iopub.status.idle":"2023-11-21T19:53:29.251444Z","shell.execute_reply.started":"2023-11-21T19:50:17.423320Z","shell.execute_reply":"2023-11-21T19:53:29.250356Z"},"trusted":true},"execution_count":null,"outputs":[]}]}