{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import plotly.express as px\n", "from sklearn.linear_model import LinearRegression, Lasso , Ridge ,LogisticRegression\n", "from sklearn.model_selection import train_test_split , GridSearchCV\n", "from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score,accuracy_score,confusion_matrix,recall_score,precision_score\n", "from sklearn.metrics import f1_score,classification_report,roc_curve,roc_auc_score\n", "from sklearn.preprocessing import PolynomialFeatures,StandardScaler,OneHotEncoder , LabelEncoder,MinMaxScaler\n", "from sklearn import linear_model\n", "import math\n", "from sklearn.impute import SimpleImputer\n", "from sklearn.impute import KNNImputer\n", "from imblearn.under_sampling import RandomUnderSampler\n", "import xgboost as xgb\n", "from xgboost import XGBClassifier\n", "from imblearn.over_sampling import SMOTE\n", "from sklearn.neighbors import KNeighborsClassifier,KNeighborsRegressor\n", "from sklearn.svm import SVC,SVR\n", "from sklearn.tree import DecisionTreeRegressor , plot_tree, DecisionTreeClassifier\n", "from sklearn.ensemble import RandomForestClassifier , GradientBoostingClassifier,BaggingClassifier,AdaBoostClassifier , RandomForestRegressor\n", "from sklearn.datasets import load_iris\n", "from lazypredict.Supervised import LazyClassifier\n", "from sklearn.linear_model import SGDClassifier\n", "import warnings\n", "import module as md\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "pd.set_option('display.max_rows', None) \n", "pd.set_option('display.max_columns', None)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StudentIDCGPAInternshipsProjectsWorkshops/CertificationsAptitudeTestScoreSoftSkillsRatingExtracurricularActivitiesPlacementTrainingSSC_MarksHSC_MarksPlacementStatus
017.50111654.40NoNo6179NotPlaced
128.90032904.00YesYes7882Placed
237.30122824.80YesNo7980NotPlaced
347.50112854.40YesYes8180Placed
458.30122864.50YesYes7488Placed
\n", "
" ], "text/plain": [ " StudentID CGPA Internships Projects Workshops/Certifications \\\n", "0 1 7.50 1 1 1 \n", "1 2 8.90 0 3 2 \n", "2 3 7.30 1 2 2 \n", "3 4 7.50 1 1 2 \n", "4 5 8.30 1 2 2 \n", "\n", " AptitudeTestScore SoftSkillsRating ExtracurricularActivities \\\n", "0 65 4.40 No \n", "1 90 4.00 Yes \n", "2 82 4.80 Yes \n", "3 85 4.40 Yes \n", "4 86 4.50 Yes \n", "\n", " PlacementTraining SSC_Marks HSC_Marks PlacementStatus \n", "0 No 61 79 NotPlaced \n", "1 Yes 78 82 Placed \n", "2 No 79 80 NotPlaced \n", "3 Yes 81 80 Placed \n", "4 Yes 74 88 Placed " ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df= pd.read_csv(\"placementdata.csv\")\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EDA" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10000, 12)" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.shape " ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 10000 entries, 0 to 9999\n", "Data columns (total 12 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 StudentID 10000 non-null int64 \n", " 1 CGPA 10000 non-null float64\n", " 2 Internships 10000 non-null int64 \n", " 3 Projects 10000 non-null int64 \n", " 4 Workshops/Certifications 10000 non-null int64 \n", " 5 AptitudeTestScore 10000 non-null int64 \n", " 6 SoftSkillsRating 10000 non-null float64\n", " 7 ExtracurricularActivities 10000 non-null object \n", " 8 PlacementTraining 10000 non-null object \n", " 9 SSC_Marks 10000 non-null int64 \n", " 10 HSC_Marks 10000 non-null int64 \n", " 11 PlacementStatus 10000 non-null object \n", "dtypes: float64(2), int64(7), object(3)\n", "memory usage: 937.6+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StudentIDCGPAInternshipsProjectsWorkshops/CertificationsAptitudeTestScoreSoftSkillsRatingSSC_MarksHSC_Marks
count10000.0010000.0010000.0010000.0010000.0010000.0010000.0010000.0010000.00
mean5000.507.701.052.031.0179.454.3269.1674.50
std2886.900.640.670.870.908.160.4110.438.92
min1.006.500.000.000.0060.003.0055.0057.00
25%2500.757.401.001.000.0073.004.0059.0067.00
50%5000.507.701.002.001.0080.004.4070.0073.00
75%7500.258.201.003.002.0087.004.7078.0083.00
max10000.009.102.003.003.0090.004.8090.0088.00
\n", "
" ], "text/plain": [ " StudentID CGPA Internships Projects Workshops/Certifications \\\n", "count 10000.00 10000.00 10000.00 10000.00 10000.00 \n", "mean 5000.50 7.70 1.05 2.03 1.01 \n", "std 2886.90 0.64 0.67 0.87 0.90 \n", "min 1.00 6.50 0.00 0.00 0.00 \n", "25% 2500.75 7.40 1.00 1.00 0.00 \n", "50% 5000.50 7.70 1.00 2.00 1.00 \n", "75% 7500.25 8.20 1.00 3.00 2.00 \n", "max 10000.00 9.10 2.00 3.00 3.00 \n", "\n", " AptitudeTestScore SoftSkillsRating SSC_Marks HSC_Marks \n", "count 10000.00 10000.00 10000.00 10000.00 \n", "mean 79.45 4.32 69.16 74.50 \n", "std 8.16 0.41 10.43 8.92 \n", "min 60.00 3.00 55.00 57.00 \n", "25% 73.00 4.00 59.00 67.00 \n", "50% 80.00 4.40 70.00 73.00 \n", "75% 87.00 4.70 78.00 83.00 \n", "max 90.00 4.80 90.00 88.00 " ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "df = df.rename(columns={'Workshops/Certifications': 'Workshops_Certifications'})" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.duplicated().sum()" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [], "source": [ "df=df.drop(columns=\"StudentID\",axis=1)" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "72" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.duplicated().sum()" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [], "source": [ "df=df.drop_duplicates()" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "CGPA 0\n", "Internships 0\n", "Projects 0\n", "Workshops_Certifications 0\n", "AptitudeTestScore 0\n", "SoftSkillsRating 0\n", "ExtracurricularActivities 0\n", "PlacementTraining 0\n", "SSC_Marks 0\n", "HSC_Marks 0\n", "PlacementStatus 0\n", "dtype: int64" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna().sum()" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [], "source": [ "df[\"ExtracurricularActivities\"]=df[\"ExtracurricularActivities\"].replace(\"No\",0)\n", "df[\"ExtracurricularActivities\"]=df[\"ExtracurricularActivities\"].replace(\"Yes\",1)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "df[\"PlacementTraining\"]=df[\"PlacementTraining\"].replace(\"No\",0)\n", "df[\"PlacementTraining\"]=df[\"PlacementTraining\"].replace(\"Yes\",1)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [], "source": [ "df[\"PlacementStatus\"]=df[\"PlacementStatus\"].replace(\"NotPlaced\",0)\n", "df[\"PlacementStatus\"]=df[\"PlacementStatus\"].replace(\"Placed\",1)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CGPAInternshipsProjectsWorkshops_CertificationsAptitudeTestScoreSoftSkillsRatingExtracurricularActivitiesPlacementTrainingSSC_MarksHSC_MarksPlacementStatus
07.50111654.400061790
18.90032904.001178821
27.30122824.801079800
37.50112854.401181801
48.30122864.501174881
\n", "
" ], "text/plain": [ " CGPA Internships Projects Workshops_Certifications AptitudeTestScore \\\n", "0 7.50 1 1 1 65 \n", "1 8.90 0 3 2 90 \n", "2 7.30 1 2 2 82 \n", "3 7.50 1 1 2 85 \n", "4 8.30 1 2 2 86 \n", "\n", " SoftSkillsRating ExtracurricularActivities PlacementTraining SSC_Marks \\\n", "0 4.40 0 0 61 \n", "1 4.00 1 1 78 \n", "2 4.80 1 0 79 \n", "3 4.40 1 1 81 \n", "4 4.50 1 1 74 \n", "\n", " HSC_Marks PlacementStatus \n", "0 79 0 \n", "1 82 1 \n", "2 80 0 \n", "3 80 1 \n", "4 88 1 " ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Col_NameDtypeN_uniqueCountMissingUnique
0CGPAfloat642799280[7.5, 8.9, 7.3, 8.3, 7.0, 7.7, 6.5, 7.8, 7.9, ...
1Internshipsint64399280[1, 0, 2]
2Projectsint64499280[1, 3, 2, 0]
3Workshops_Certificationsint64499280[1, 2, 0, 3]
4AptitudeTestScoreint643199280[65, 90, 82, 85, 86, 71, 76, 84, 79, 74, 66, 7...
5SoftSkillsRatingfloat641999280[4.4, 4.0, 4.8, 4.5, 4.2, 3.5, 3.9, 4.6, 4.1, ...
6ExtracurricularActivitiesint64299280[0, 1]
7PlacementTrainingint64299280[0, 1]
8SSC_Marksint643699280[61, 78, 79, 81, 74, 55, 62, 59, 75, 85, 82, 7...
9HSC_Marksint643299280[79, 82, 80, 88, 66, 65, 72, 71, 86, 87, 83, 7...
10PlacementStatusint64299280[0, 1]
\n", "
" ], "text/plain": [ " Col_Name Dtype N_unique Count Missing \\\n", "0 CGPA float64 27 9928 0 \n", "1 Internships int64 3 9928 0 \n", "2 Projects int64 4 9928 0 \n", "3 Workshops_Certifications int64 4 9928 0 \n", "4 AptitudeTestScore int64 31 9928 0 \n", "5 SoftSkillsRating float64 19 9928 0 \n", "6 ExtracurricularActivities int64 2 9928 0 \n", "7 PlacementTraining int64 2 9928 0 \n", "8 SSC_Marks int64 36 9928 0 \n", "9 HSC_Marks int64 32 9928 0 \n", "10 PlacementStatus int64 2 9928 0 \n", "\n", " Unique \n", "0 [7.5, 8.9, 7.3, 8.3, 7.0, 7.7, 6.5, 7.8, 7.9, ... \n", "1 [1, 0, 2] \n", "2 [1, 3, 2, 0] \n", "3 [1, 2, 0, 3] \n", "4 [65, 90, 82, 85, 86, 71, 76, 84, 79, 74, 66, 7... \n", "5 [4.4, 4.0, 4.8, 4.5, 4.2, 3.5, 3.9, 4.6, 4.1, ... \n", "6 [0, 1] \n", "7 [0, 1] \n", "8 [61, 78, 79, 81, 74, 55, 62, 59, 75, 85, 82, 7... \n", "9 [79, 82, 80, 88, 66, 65, 72, 71, 86, 87, 83, 7... \n", "10 [0, 1] " ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "md.data_info(df)" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Index: 9928 entries, 0 to 9999\n", "Data columns (total 11 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 CGPA 9928 non-null float64\n", " 1 Internships 9928 non-null int64 \n", " 2 Projects 9928 non-null int64 \n", " 3 Workshops_Certifications 9928 non-null int64 \n", " 4 AptitudeTestScore 9928 non-null int64 \n", " 5 SoftSkillsRating 9928 non-null float64\n", " 6 ExtracurricularActivities 9928 non-null int64 \n", " 7 PlacementTraining 9928 non-null int64 \n", " 8 SSC_Marks 9928 non-null int64 \n", " 9 HSC_Marks 9928 non-null int64 \n", " 10 PlacementStatus 9928 non-null int64 \n", "dtypes: float64(2), int64(9)\n", "memory usage: 930.8 KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "corr_with_PlacementStatus = df.corr().abs()[['PlacementStatus']].sort_values(by='PlacementStatus', ascending=False)\n", "sns.heatmap(corr_with_PlacementStatus, annot=True)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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AAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACyIPQAAAAAAACy0K7Q45prromysrK44IILCtellGL8+PExcODAqKqqilGjRsWzzz7b3joBAAAAAAA2aatDjxkzZsRNN90U73nPe1pdf91118UNN9wQ3/nOd2LGjBlRW1sbxxxzTCxfvrzdxQIAAAAAAGzMVoUeK1asiNNOOy1+8IMfxHbbbVe4PqUUkyZNissvvzxOOeWUGD58eEyePDkaGhritttu67CiAQAAAAAA1le+NXc699xz4/jjj4/3v//98dWvfrVw/YIFC2Lx4sUxevTownWVlZVx5JFHxvTp0+Pss89uM1ZjY2M0NjYWLtfX10dERFNTUzQ1NW1NedlqWR/WC1tKz1AsPUOx9AzF0jMUQ79QLD1DsfQMxdIzFEvPUCw9s2HFrI+ylFIqZvDbb789rr766pgxY0Z07949Ro0aFfvtt19MmjQppk+fHoceemi88sorMXDgwMJ9zjrrrHjxxRfjvvvuazPe+PHj48orr2xz/W233RbV1dXFlAYAAAAAAGSmoaEhxo0bF8uWLYtevXptctmiZnq8/PLL8bnPfS7uv//+6N69+0aXKysra3U5pdTmuhaXXXZZXHjhhYXL9fX1MWjQoBg9evRmi3+naWpqiilTpsQxxxwTFRUVpS6HtwE9Q7H0DMXSMxRLz1AM/UKx9AzF0jMUS89QLD1DsfTMhrV8Q9SWKCr0qKuriyVLlsSIESMK161ZsyYeeuih+M53vhNz586NiIjFixfHgAEDCsssWbIk+vfvv8ExKysro7Kyss31FRUVntSNsG4olp6hWHqGYukZiqVnKIZ+oVh6hmLpGYqlZyiWnqFYeqa1YtZFUT9kfvTRR8esWbNi5syZhf8OOOCAOO2002LmzJmx6667Rm1tbUyZMqVwn9WrV8eDDz4YI0eOLOahAAAAAAAAilLUTI+ePXvG8OHDW11XU1MTffv2LVx/wQUXxIQJE2KPPfaIPfbYIyZMmBDV1dUxbty4jqsaAAAAAABgPUWFHlvi0ksvjVWrVsU555wTS5cujYMPPjjuv//+6NmzZ0c/FAAAAAAAQEG7Q49p06a1ulxWVhbjx4+P8ePHt3doAAAAAACALVbUb3oAAAAAAAB0VkIPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IPAAAAAAAgC0IP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L0RjY2PU1dXFEUccsa0eCtiAlFKsXr067r777li9erXAAwAAAADI3jYLPQAAAAAAAN5KQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACALQg8AAAAAACAL5aUuYH0ppYiIqK+vL3ElnU9TU1M0NDREfX19VFRUlLoc3gb0DMXSMxRLz1AsPUMx9AvF0jMUS89QLD1DsfQMxdIzG9aSF7TkB5vS6UKP5cuXR0TEoEGDSlwJAAAAAADQWSxfvjx69+69yWXK0pZEI2+htWvXxsKFC6Nnz55RVlZW6nI6lfr6+hg0aFC8/PLL0atXr1KXw9uAnqFYeoZi6RmKpWcohn6hWHqGYukZiqVnKJaeoVh6ZsNSSrF8+fIYOHBgdOmy6V/t6HQzPbp06RI777xzqcvo1Hr16qXhKYqeoVh6hmLpGYqlZyiGfqFYeoZi6RmKpWcolp6hWHqmrc3N8Gjhh8wBAAAAAIAsCD0AAAAAAIAsCD3eRiorK+OKK66IysrKUpfC24SeoVh6hmLpGYqlZyiGfqFYeoZi6RmKpWcolp6hWHqm/TrdD5kDAAAAAABsDTM9AAAAAACALAg9AAAAAACALAg9AAAAAACALAg9AAAAAACALAg9gIiIOPPMM+Pkk0/e5DK77LJLTJo06S2ph7fGLbfcEn369Cl1GdnZktfTxnhONmz9dZpSirPOOiu23377KCsri5kzZ8aoUaPiggsu2KZ1vPDCC4XH6+y25Tb7rVjXlNZNN90UgwYNii5durSrj8aPHx/77bffRm9ff5u3/vLt2Z52tLKysrj77rtLXUbWpk2bFmVlZfHGG2902Jid/Xkrdr+/peuoo/cB2+K5YeuO++yD8/d2Ot6k89jcMdc7iX0WEUKPt9zixYvjvPPOi1133TUqKytj0KBBceKJJ8bvf//7wjJPPfVUjB07NgYMGBCVlZUxePDgOOGEE+JXv/pVpJQi4h87wZb/tttuuzjiiCPiwQcfbPV4f/nLX6Jbt24xbNiwt/TvfKcq9o15Z38Ttr4ZM2bEWWedVeoy3rHOPPPMwmu+oqIidt1117j44otj5cqVWz3m2LFj4/nnn++wGjvzB/bf+973omfPntHc3Fy4bsWKFVFRURGHH354q2UffvjhKCsr69B1k5upU6fGmDFjom/fvlFdXR177bVXXHTRRfHKK6+0a9yNvcn75je/Gbfcckvh8r333hu33HJL3HPPPbFo0aIYPnx43HXXXfGVr3ylXY+/rg1t0wcNGlR4vI40ffr06Nq1axx33HFF33djr7v1t9ml2uesu+3a2H9ba2Nv7p566qk44YQTol+/ftG9e/fYZZddYuzYsfHqq6+24y95+1iyZEmcffbZ8a53vSsqKyujtrY2jj322Hjssce26P719fXx2c9+Nj7/+c/HK6+8EmedddZGP2T72c9+FgcffHD07t07evbsGXvvvXdcdNFFW1xrR+6Hxo8fX+ipLl26xMCBA+O0006Ll19+uehxNtRXixYtig984AMdUuumbOw1s6Xbh7fzB6IjR46MRYsWRe/evUtdyka1Z3u9oSCi2NfA+utoS/cBW2JbHGu+Xa3/XG2rfdnWbAM7+njn7WJz+7Yt3ff/7Gc/i1GjRkXv3r2jR48e8Z73vCeuuuqqeP311zdbwy233BJlZWWx5557trntzjvvjLKysthll1065O+lfTb22cz6H4Z///vfj3333TdqamqiT58+8d73vjeuvfbaVvepr6+Pyy+/PIYNGxbdu3eP2traeP/73x933XVX4TO6TRk1alSUlZXF1772tTa3jRkzJsrKymL8+PFb82e+o9ln/cPGTnTYXH9v7clFb5eATejxFnrhhRdixIgR8cADD8R1110Xs2bNinvvvTeOOuqoOPfccyMi4he/+EW8733vixUrVsTkyZPjueeei5/85Cdx8sknx5e+9KVYtmxZqzF/97vfxaJFi+LBBx+MXr16xZgxY2LBggWF22+55ZY49dRTo6GhIR599NG39O/lrdPU1PSWPM6OO+4Y1dXVb8ljsWHHHXdcLFq0KP785z/HV7/61fjud78bF198cZvltrQnqqqqol+/fh1dZqd01FFHxYoVK+LJJ58sXPfwww9HbW1tzJgxIxoaGgrXT5s2LQYOHBjvfve7i3qMNWvWxNq1azus5s7q+9//frz//e+P2tra+NnPfhbPPfdcfO9734tly5bFxIkTt3rc1atXb/S23r17t/pQZ/78+TFgwIAYOXJk1NbWRnl5eWy//fbRs2fPrX78LdG1a9fC43WkH/3oR3HeeefFI488Ei+99FKHjNlZttnf/OY3Y9GiRYX/IiJuvvnmNtd1lCVLlsT73//+2GGHHeK+++6L2bNnx49+9KMYMGBAq9d5R3ur9sVb4p//+Z/j6aefjsmTJ8fzzz8fv/zlL2PUqFFb9IFORMRLL70UTU1Ncfzxx8eAAQM22ke/+93v4iMf+Uh86EMfiieeeCLq6uri6quv3uRreX0dvR/ae++9Y9GiRfGXv/wl7rjjjpg1a1aceuqpHTJ2bW1tVFZWdshYm9Oyv1/3v//5n//psPFTSq1OAngrbey10tTUFN26dYva2tp2haEdbf16O3p7XexrYEvX0dbuA7b0WPOdpth92ZZuB7dmG/hWHO90Rpvat23pvv/yyy+PsWPHxoEHHhi//e1v45lnnomJEyfG008/HbfeeusW1VFTUxNLlixpcyLBj370o3jXu97V7r+zmH0o7fPDH/4wLrzwwjj//PPj6aefjkcffTQuvfTSWLFiRWGZN954I0aOHBn/9V//FZdddln84Q9/iIceeijGjh0bl156aZvP6DZm0KBBcfPNN7e6buHChfHAAw/EgAED2vV3lHKfXmr2WRu3Jf2dvcRb5gMf+EDaaaed0ooVK9rctnTp0rRixYrUt2/f9P/+3//b6Bhr165NKaW0YMGCFBHpqaeeKtz2l7/8JUVE+t73vldYdtddd0333ntv+vznP5/+5V/+pWP/INo444wz0gc/+MGUUkpHHnlkOu+889Ill1yStttuu9S/f/90xRVXFJYdPHhwiojCf4MHDy7c9stf/jLtv//+qbKyMg0ZMiSNHz8+NTU1FW6PiHTjjTemk046KVVXV6d///d/T1dccUXad99903/913+lwYMHp169eqWxY8em+vr6wv1+8pOfpOHDh6fu3bun7bffPh199NGFfmyp/etf/3qqra1N22+/fTrnnHPS6tWrW9X8jW98o1Ud3/3ud9Nxxx2XunfvnnbZZZd05513Fm5vbGxM5557bqqtrU2VlZVp8ODBacKECR20tt951u2vFp/85CdTbW1t4fn/4Q9/mIYMGZLKysrS2rVr04svvphOOumkVFNTk3r27Jk+/OEPp8WLFxfuf/PNN6fevXu3GnNz/bd06dL0qU99KvXr1y9VVlamvffeO/3qV79KU6dObdXTEVHo+f/4j/9Iu+++e6qsrEz9+vVL//zP/7ytVtMmDRw4MF1zzTWFy5deemk699xz01577ZWmTJlSuP6f/umf0mmnnZZef/31dPrpp6c+ffqkqqqqdNxxx6Xnn3++sFzL+vvVr36V9txzz9S1a9f05z//uc1z9eSTT6Ydd9wxffWrX00ppTRz5sw0atSo1KNHj9SzZ8+0//77pxkzZrQa8957703Dhg1LNTU16dhjj00LFy4sjLdmzZp05ZVXpp122il169Yt7bvvvum3v/1t4faWfcT//M//pEMOOSRVVlamvfbaK02dOrWwzOuvv57GjRuXdthhh9S9e/e0++67px/96EebXYcvv/xy6tatW7rgggs2ePvSpUsL///oo4+mww8/PHXv3j3tvPPO6bzzzmu1Dxw8eHD6yle+ks4444zUq1ev9PGPf7xNDx155JEppdb9f8YZZ2xw+3nkkUemz33uc4Xx//73v6dLLrkk7bzzzqlbt25p9913T//5n/+ZUkqpubk5feITn0i77LJL6t69e3r3u9+dJk2aVLjvFVdc0aaWqVOnbnD/O23atHTggQembt26pdra2vT5z3++1Wtmc/uDFStWFO7bpUuX1KNHj3TeeeellFLhdXXPPfek97znPamysjIddNBB6Y9//GOr2zf0ult3m72xfc6Gtiuf+9znCuu9pb7TTz891dTUpNra2nT99de3WdeNjY3pkksuSQMHDkzV1dXpoIMOatVv64qI9POf/7xw+S9/+Us69dRTU58+fdL222+fTjrppLRgwYLC7VOnTk0HHnhgqq6uTr17904jR45ML7zwQrr55pvb/O0333xz+vnPf57Ky8tbPQcb8swzz6QxY8aknj17ph49eqTDDjsszZs3L6W05a+xO+64Ix155JGpsrKy8Pr50Y9+lIYNG5YqKyvT0KFD03/8x39sso6OtnTp0hQRadq0aRtdZlP7hg2t1/VfcxGRFixYkD73uc+lUaNGbbKelv1Tiz//+c9pt912S5/+9KfTmjVr2uyH1l9+/R7d1LHM+vdNKaVvfetbKSLSsmXLCtddeumlaY899khVVVVpyJAh6Utf+lLheGdjfZVS695t6YGf/exnadSoUamqqiq95z3vSdOnT2/1+DfddFPaeeedU1VVVTr55JPTxIkT2+x317eh12WLqVOnpoqKivTQQw8Vrrv++utT375908KFCzf6XLVsK+699940YsSIVFFRkR544IE0b968dNJJJ6V+/fqlmpqadMABB7TaH6a06W3pho4jfv7zn6d132Zu7BhlQ8ezLXWuuy955JFH0hFHHJGqqqpSnz590ujRo9Prr7+eUmp7bJpSSvvuu2+rbez625xNPf+bqjelN7eHPXv2THPmzEljx45NV155ZZvn6Be/+EUaMWJEqqysbPXe7sgjj2zz3Ky/DufMmZMiIs2ePbvVmBMnTkyDBw9Oa9eubbWOtnQfkFJKb7zxRvrUpz6Vdtxxx9SzZ8901FFHpZkzZxZunzlzZurfv3/q2rVrq2OTlmPN9Z+bV199NX3kIx9JO+20U6qqqkrDhw9Pt912W6u616xZk772ta+l3XbbLXXr1i0NGjSocCyU0ua3/y2vhauvvjr169cv9e7du3BcevHFF6ftttsu7bTTTumHP/xhq8fd0nE39r5nY8/VutbvqyOPPDKde+656d/+7d9S37590xFHHFF47oYPH56qq6vTzjvvnD7zmc+k5cuXF+63sW3gpt7Trb8PHjx4cLr66qvTv/zLv6QePXqkQYMGpe9///ut6n300UfTvvvumyorK9OIESMKr9N1j2c6s83t27Zk3//444+niGh1vLf+Y2xOy/P12c9+Nn3yk58sXP/yyy+nysrK9IUvfKHV+/ot2cZu6Hh4/ePNNWvWpE9+8pNpjz32SC+88EJK6c1eGTRoUOrWrVsaMGBA4diRN21sX7rutuyDH/xgOvPMMzc5zmc+85lUU1OTXnnllTa3LV++fLPHmym9+Zr9zGc+k/r27ZseeeSRwvVXX311OvHEE9vst2699dY0YsSI1KNHj9S/f//00Y9+NP31r39t8zesv0/f3DHXCy+8kE444YTUp0+fVF1dnfbaa6/061//erP1d1ab+nzEPitttr839n43pa07Vt7Q++SWbXfLuFv7GcTWMtPjLfL666/HvffeG+eee27U1NS0ub1Pnz5x//33x2uvvRaXXnrpRsfZ1Bk9LWfytJyNNHXq1GhoaIj3v//9cfrpp8edd94Zy5cvb+dfQjEmT54cNTU18fjjj8d1110XV111VUyZMiUi3pxyHvGPM4RaLt93333xsY99LM4///x47rnn4vvf/37ccsstcfXVV7ca+4orrogPfvCDMWvWrPjEJz4REW+e+Xz33XfHPffcE/fcc088+OCDhSmUixYtio9+9KPxiU98ImbPnh3Tpk2LU045pdV0zKlTp8b8+fNj6tSpMXny5LjllltafZ3Mhnz5y18unHXzsY99LD760Y/G7NmzIyLiW9/6Vvzyl7+MO++8M+bOnRv//d//bbpvB6uqqiq85ufNmxd33nln/OxnPyt8NdDJJ58cr7/+ejz44IMxZcqUmD9/fowdO3aj422u/9auXRsf+MAHYvr06fHf//3f8dxzz8XXvva16Nq1a4wcOTImTZoUvXr1KpzxdvHFF8eTTz4Z559/flx11VUxd+7cuPfee+OII47Y5utmQ0aNGhVTp04tXJ46dWqMGjUqjjzyyML1q1evjsceeyyOOuqoOPPMM+PJJ5+MX/7yl/HYY49FSinGjBnT6qzPhoaGuOaaa+I///M/49lnn21ztt60adPi6KOPjiuvvDIuv/zyiIg47bTTYuedd44ZM2ZEXV1dfOELX4iKiopWY15//fVx6623xkMPPRQvvfRSqzNWvvnNb8bEiRPj+uuvjz/+8Y9x7LHHxkknnRR/+tOfWj32JZdcEhdddFE89dRTMXLkyDjppJPitddei4g3X7vPPfdc/Pa3v43Zs2fHjTfeGDvssMNm1+FPfvKTWL169Ub3VS2zMWbNmhXHHntsnHLKKfHHP/4x7rjjjnjkkUfis5/9bKvlv/71r8fw4cOjrq4uvvzlL8cTTzwREf+YyXjXXXe1eYxvfvObcdVVV8XOO+/cavu5vo9//ONx++23x7e+9a2YPXt2fO9734sePXpExJu9vPPOO8edd94Zzz33XPz7v/97fPGLX4w777wzIiIuvvjiOPXUU1udbT1y5Mg2j/HKK6/EmDFj4sADD4ynn346brzxxvjhD38YX/3qV1stt6n9wSWXXBLNzc3xox/9KP7zP/8zevbs2ebrsy655JK4/vrrY8aMGdGvX7846aSToqmpaaOvu/VtbJ+zJS655JKYOnVq/PznP4/7778/pk2bFnV1da2W+Zd/+Zd49NFH4/bbb48//vGP8eEPfziO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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.boxplot(figsize=(20,10))" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [], "source": [ "x=df.drop(columns=\"PlacementStatus\",axis=1)\n", "y=df[\"PlacementStatus\"]" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PlacementStatus\n", "0 5801\n", "1 4127\n", "Name: count, dtype: int64" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"PlacementStatus\"].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### MODELS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### not scaled " ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x_train shape: (5956, 10)\n", "x_val shape: (1986, 10)\n", "x_test shape: (1986, 10)\n", "y_train shape: (5956,)\n", "y_val shape: (1986,)\n", "y_test shape: (1986,)\n" ] } ], "source": [ "x_train, x_temp, y_train, y_temp = train_test_split(x, y, test_size=0.4, random_state=42)\n", "x_val, x_test, y_val, y_test = train_test_split(x_temp, y_temp, test_size=0.5, random_state=42)\n", "\n", "print(\"x_train shape:\", x_train.shape)\n", "print(\"x_val shape:\", x_val.shape)\n", "print(\"x_test shape:\", x_test.shape)\n", "print(\"y_train shape:\", y_train.shape)\n", "print(\"y_val shape:\", y_val.shape)\n", "print(\"y_test shape:\", y_test.shape)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 32/32 [00:05<00:00, 5.48it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[LightGBM] [Info] Number of positive: 2497, number of negative: 3459\n", "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.000056 seconds.\n", "You can set `force_row_wise=true` to remove the overhead.\n", "And if memory is not enough, you can set `force_col_wise=true`.\n", "[LightGBM] [Info] Total Bins 170\n", "[LightGBM] [Info] Number of data points in the train set: 5956, number of used features: 10\n", "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.419241 -> initscore=-0.325890\n", "[LightGBM] [Info] Start training from score -0.325890\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyBalanced AccuracyROC AUCF1 ScoreTime Taken
Model
LinearSVC0.810.810.810.810.02
GaussianNB0.810.810.810.810.02
NearestCentroid0.800.810.810.810.01
LogisticRegression0.810.810.810.810.02
BernoulliNB0.810.810.810.810.02
LinearDiscriminantAnalysis0.810.810.810.810.02
RidgeClassifierCV0.810.810.810.810.02
RidgeClassifier0.810.810.810.810.02
CalibratedClassifierCV0.810.810.810.810.05
AdaBoostClassifier0.810.800.800.810.16
SGDClassifier0.800.800.800.800.03
NuSVC0.800.790.790.801.06
SVC0.800.790.790.800.92
LGBMClassifier0.800.790.790.800.08
QuadraticDiscriminantAnalysis0.790.780.780.790.01
RandomForestClassifier0.790.780.780.790.52
ExtraTreesClassifier0.780.770.770.780.48
KNeighborsClassifier0.770.760.760.770.13
BaggingClassifier0.770.760.760.770.13
PassiveAggressiveClassifier0.730.750.750.730.02
Perceptron0.740.750.750.740.01
LabelSpreading0.710.710.710.711.11
LabelPropagation0.710.700.700.710.83
DecisionTreeClassifier0.710.700.700.710.03
ExtraTreeClassifier0.710.700.700.710.02
DummyClassifier0.580.500.500.420.01
\n", "
" ], "text/plain": [ " Accuracy Balanced Accuracy ROC AUC F1 Score \\\n", "Model \n", "LinearSVC 0.81 0.81 0.81 0.81 \n", "GaussianNB 0.81 0.81 0.81 0.81 \n", "NearestCentroid 0.80 0.81 0.81 0.81 \n", "LogisticRegression 0.81 0.81 0.81 0.81 \n", "BernoulliNB 0.81 0.81 0.81 0.81 \n", "LinearDiscriminantAnalysis 0.81 0.81 0.81 0.81 \n", "RidgeClassifierCV 0.81 0.81 0.81 0.81 \n", "RidgeClassifier 0.81 0.81 0.81 0.81 \n", "CalibratedClassifierCV 0.81 0.81 0.81 0.81 \n", "AdaBoostClassifier 0.81 0.80 0.80 0.81 \n", "SGDClassifier 0.80 0.80 0.80 0.80 \n", "NuSVC 0.80 0.79 0.79 0.80 \n", "SVC 0.80 0.79 0.79 0.80 \n", "LGBMClassifier 0.80 0.79 0.79 0.80 \n", "QuadraticDiscriminantAnalysis 0.79 0.78 0.78 0.79 \n", "RandomForestClassifier 0.79 0.78 0.78 0.79 \n", "ExtraTreesClassifier 0.78 0.77 0.77 0.78 \n", "KNeighborsClassifier 0.77 0.76 0.76 0.77 \n", "BaggingClassifier 0.77 0.76 0.76 0.77 \n", "PassiveAggressiveClassifier 0.73 0.75 0.75 0.73 \n", "Perceptron 0.74 0.75 0.75 0.74 \n", "LabelSpreading 0.71 0.71 0.71 0.71 \n", "LabelPropagation 0.71 0.70 0.70 0.71 \n", "DecisionTreeClassifier 0.71 0.70 0.70 0.71 \n", "ExtraTreeClassifier 0.71 0.70 0.70 0.71 \n", "DummyClassifier 0.58 0.50 0.50 0.42 \n", "\n", " Time Taken \n", "Model \n", "LinearSVC 0.02 \n", "GaussianNB 0.02 \n", "NearestCentroid 0.01 \n", "LogisticRegression 0.02 \n", "BernoulliNB 0.02 \n", "LinearDiscriminantAnalysis 0.02 \n", "RidgeClassifierCV 0.02 \n", "RidgeClassifier 0.02 \n", "CalibratedClassifierCV 0.05 \n", "AdaBoostClassifier 0.16 \n", "SGDClassifier 0.03 \n", "NuSVC 1.06 \n", "SVC 0.92 \n", "LGBMClassifier 0.08 \n", "QuadraticDiscriminantAnalysis 0.01 \n", "RandomForestClassifier 0.52 \n", "ExtraTreesClassifier 0.48 \n", "KNeighborsClassifier 0.13 \n", "BaggingClassifier 0.13 \n", "PassiveAggressiveClassifier 0.02 \n", "Perceptron 0.01 \n", "LabelSpreading 1.11 \n", "LabelPropagation 0.83 \n", "DecisionTreeClassifier 0.03 \n", "ExtraTreeClassifier 0.02 \n", "DummyClassifier 0.01 " ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf = LazyClassifier(verbose = 0,ignore_warnings= True,random_state= 42,classifiers= \"all\")\n", "models, predictions = clf.fit(x_train, x_val, y_train, y_val)\n", "models" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_train: 0.7919744795164539\n", "f1_train: 0.7555730913395147\n", "recall_score_train: 0.7669203043652383\n", "precision_score_train: 0.744556765163297\n", "confusion_matrix_train: [[2802 657]\n", " [ 582 1915]]\n", "classification_report_train:\n", " precision recall f1-score support\n", "\n", " 0 0.83 0.81 0.82 3459\n", " 1 0.74 0.77 0.76 2497\n", "\n", " accuracy 0.79 5956\n", " macro avg 0.79 0.79 0.79 5956\n", "weighted avg 0.79 0.79 0.79 5956\n", "\n", "**************************************************\n", "acc_test: 0.8101711983887211\n", "f1_test: 0.7773183697578263\n", "recall_score_test: 0.7824019024970273\n", "precision_score_test: 0.7723004694835681\n", "confusion_matrix_test: [[951 194]\n", " [183 658]]\n", "classification_report_test:\n", " precision recall f1-score support\n", "\n", " 0 0.84 0.83 0.83 1145\n", " 1 0.77 0.78 0.78 841\n", "\n", " accuracy 0.81 1986\n", " macro avg 0.81 0.81 0.81 1986\n", "weighted avg 0.81 0.81 0.81 1986\n", "\n" ] } ], "source": [ "from sklearn.svm import LinearSVC\n", "\n", "LinearSVC_clf = LinearSVC(random_state=42)\n", "\n", "LinearSVC_clf.fit(x_train, y_train)\n", "\n", "y_pred_train = LinearSVC_clf.predict(x_train)\n", "\n", "print('acc_train:',accuracy_score(y_train, y_pred_train))\n", "print('f1_train:', f1_score(y_train, y_pred_train))\n", "print('recall_score_train:', recall_score(y_train, y_pred_train))\n", "print('precision_score_train:',precision_score(y_train, y_pred_train))\n", "print('confusion_matrix_train:', confusion_matrix(y_train, y_pred_train))\n", "print('classification_report_train:\\n', classification_report(y_train, y_pred_train))\n", "\n", "print (\"*\"*50)\n", "\n", "y_pred_val = LinearSVC_clf.predict(x_val)\n", "\n", "print('acc_test:',accuracy_score(y_val, y_pred_val))\n", "print('f1_test:', f1_score(y_val, y_pred_val))\n", "print('recall_score_test:', recall_score(y_val, y_pred_val))\n", "print('precision_score_test:', precision_score(y_val, y_pred_val))\n", "print('confusion_matrix_test:', confusion_matrix(y_val, y_pred_val))\n", "print('classification_report_test:\\n', classification_report(y_val, y_pred_val))" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fitting 5 folds for each of 12 candidates, totalling 60 fits\n", "{'C': 10, 'dual': False, 'max_iter': 1000}\n", "acc_train: 0.7926460711887172\n", "f1_train: 0.7559770796285319\n", "recall_train: 0.7661193432118543\n", "precision_train: 0.7460998439937597\n", "confusion_matrix_train:\n", " [[2808 651]\n", " [ 584 1913]]\n", "classification_report_train:\n", " precision recall f1-score support\n", "\n", " 0 0.83 0.81 0.82 3459\n", " 1 0.75 0.77 0.76 2497\n", "\n", " accuracy 0.79 5956\n", " macro avg 0.79 0.79 0.79 5956\n", "weighted avg 0.79 0.79 0.79 5956\n", "\n", "**************************************************\n", "acc_val: 0.81067472306143\n", "f1_val: 0.7777777777777778\n", "recall_val: 0.7824019024970273\n", "precision_val: 0.7732079905992949\n", "confusion_matrix_val:\n", " [[952 193]\n", " [183 658]]\n", "classification_report_val:\n", " precision recall f1-score support\n", "\n", " 0 0.84 0.83 0.84 1145\n", " 1 0.77 0.78 0.78 841\n", "\n", " accuracy 0.81 1986\n", " macro avg 0.81 0.81 0.81 1986\n", "weighted avg 0.81 0.81 0.81 1986\n", "\n" ] } ], "source": [ "param_grid = {\n", " \"C\": [0.01, 0.1, 1, 10], \n", " \"max_iter\": [1000, 5000, 10000], \n", " \"dual\": [False], \n", "}\n", "LinearSVC_clf = LinearSVC(random_state=42)\n", "\n", "grid_search = GridSearchCV(LinearSVC_clf, param_grid, cv=5, scoring=\"f1\", verbose=1, n_jobs=-1)\n", "grid_search.fit(x_train, y_train)\n", "\n", "print( grid_search.best_params_)\n", "\n", "best_model = grid_search.best_estimator_\n", "\n", "y_pred_train = best_model.predict(x_train)\n", "\n", "print('acc_train:', accuracy_score(y_train, y_pred_train))\n", "print('f1_train:', f1_score(y_train, y_pred_train))\n", "print('recall_train:', recall_score(y_train, y_pred_train))\n", "print('precision_train:', precision_score(y_train, y_pred_train))\n", "print('confusion_matrix_train:\\n', confusion_matrix(y_train, y_pred_train))\n", "print('classification_report_train:\\n', classification_report(y_train, y_pred_train))\n", "\n", "print(\"*\" * 50)\n", "\n", "y_pred_val = best_model.predict(x_val)\n", "\n", "print('acc_val:', accuracy_score(y_val, y_pred_val))\n", "print('f1_val:', f1_score(y_val, y_pred_val))\n", "print('recall_val:', recall_score(y_val, y_pred_val))\n", "print('precision_val:', precision_score(y_val, y_pred_val))\n", "print('confusion_matrix_val:\\n', confusion_matrix(y_val, y_pred_val))\n", "print('classification_report_val:\\n', classification_report(y_val, y_pred_val))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### scaled" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [], "source": [ "scaler = StandardScaler()\n", "X_train = scaler.fit_transform(x_train)\n", "X_test = scaler.transform(x_test)\n", "X_val = scaler.transform(x_val)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'tuple' object has no attribute '__name__'\n", "Invalid Classifier(s)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 32/32 [00:05<00:00, 5.42it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[LightGBM] [Info] Number of positive: 2497, number of negative: 3459\n", "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.000058 seconds.\n", "You can set `force_row_wise=true` to remove the overhead.\n", "And if memory is not enough, you can set `force_col_wise=true`.\n", "[LightGBM] [Info] Total Bins 170\n", "[LightGBM] [Info] Number of data points in the train set: 5956, number of used features: 10\n", "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.419241 -> initscore=-0.325890\n", "[LightGBM] [Info] Start training from score -0.325890\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyBalanced AccuracyROC AUCF1 ScoreTime Taken
Model
LinearSVC0.810.810.810.810.02
GaussianNB0.810.810.810.810.01
NearestCentroid0.800.810.810.810.02
LogisticRegression0.810.810.810.810.10
BernoulliNB0.810.810.810.810.02
LinearDiscriminantAnalysis0.810.810.810.810.02
RidgeClassifierCV0.810.810.810.810.02
RidgeClassifier0.810.810.810.810.02
CalibratedClassifierCV0.810.810.810.810.04
AdaBoostClassifier0.810.800.800.810.16
SGDClassifier0.800.800.800.800.03
NuSVC0.800.790.790.801.09
SVC0.800.790.790.800.92
LGBMClassifier0.800.790.790.800.08
QuadraticDiscriminantAnalysis0.790.780.780.790.02
RandomForestClassifier0.790.780.780.790.53
ExtraTreesClassifier0.780.770.770.780.45
KNeighborsClassifier0.770.760.760.770.11
BaggingClassifier0.770.760.760.770.13
PassiveAggressiveClassifier0.730.750.750.730.02
Perceptron0.740.750.750.740.03
LabelSpreading0.710.710.710.711.10
LabelPropagation0.710.700.700.710.81
DecisionTreeClassifier0.710.700.700.710.03
ExtraTreeClassifier0.710.700.700.710.02
DummyClassifier0.580.500.500.420.01
\n", "
" ], "text/plain": [ " Accuracy Balanced Accuracy ROC AUC F1 Score \\\n", "Model \n", "LinearSVC 0.81 0.81 0.81 0.81 \n", "GaussianNB 0.81 0.81 0.81 0.81 \n", "NearestCentroid 0.80 0.81 0.81 0.81 \n", "LogisticRegression 0.81 0.81 0.81 0.81 \n", "BernoulliNB 0.81 0.81 0.81 0.81 \n", "LinearDiscriminantAnalysis 0.81 0.81 0.81 0.81 \n", "RidgeClassifierCV 0.81 0.81 0.81 0.81 \n", "RidgeClassifier 0.81 0.81 0.81 0.81 \n", "CalibratedClassifierCV 0.81 0.81 0.81 0.81 \n", "AdaBoostClassifier 0.81 0.80 0.80 0.81 \n", "SGDClassifier 0.80 0.80 0.80 0.80 \n", "NuSVC 0.80 0.79 0.79 0.80 \n", "SVC 0.80 0.79 0.79 0.80 \n", "LGBMClassifier 0.80 0.79 0.79 0.80 \n", "QuadraticDiscriminantAnalysis 0.79 0.78 0.78 0.79 \n", "RandomForestClassifier 0.79 0.78 0.78 0.79 \n", "ExtraTreesClassifier 0.78 0.77 0.77 0.78 \n", "KNeighborsClassifier 0.77 0.76 0.76 0.77 \n", "BaggingClassifier 0.77 0.76 0.76 0.77 \n", "PassiveAggressiveClassifier 0.73 0.75 0.75 0.73 \n", "Perceptron 0.74 0.75 0.75 0.74 \n", "LabelSpreading 0.71 0.71 0.71 0.71 \n", "LabelPropagation 0.71 0.70 0.70 0.71 \n", "DecisionTreeClassifier 0.71 0.70 0.70 0.71 \n", "ExtraTreeClassifier 0.71 0.70 0.70 0.71 \n", "DummyClassifier 0.58 0.50 0.50 0.42 \n", "\n", " Time Taken \n", "Model \n", "LinearSVC 0.02 \n", "GaussianNB 0.01 \n", "NearestCentroid 0.02 \n", "LogisticRegression 0.10 \n", "BernoulliNB 0.02 \n", "LinearDiscriminantAnalysis 0.02 \n", "RidgeClassifierCV 0.02 \n", "RidgeClassifier 0.02 \n", "CalibratedClassifierCV 0.04 \n", "AdaBoostClassifier 0.16 \n", "SGDClassifier 0.03 \n", "NuSVC 1.09 \n", "SVC 0.92 \n", "LGBMClassifier 0.08 \n", "QuadraticDiscriminantAnalysis 0.02 \n", "RandomForestClassifier 0.53 \n", "ExtraTreesClassifier 0.45 \n", "KNeighborsClassifier 0.11 \n", "BaggingClassifier 0.13 \n", "PassiveAggressiveClassifier 0.02 \n", "Perceptron 0.03 \n", "LabelSpreading 1.10 \n", "LabelPropagation 0.81 \n", "DecisionTreeClassifier 0.03 \n", "ExtraTreeClassifier 0.02 \n", "DummyClassifier 0.01 " ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf_scaled = LazyClassifier(verbose = 0,ignore_warnings= True,random_state= 42,classifiers= \"all\")\n", "models, predictions = clf.fit(x_train, x_val, y_train, y_val)\n", "models" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_train: 0.7919744795164539\n", "f1_train: 0.7555730913395147\n", "recall_score_train: 0.7669203043652383\n", "precision_score_train: 0.744556765163297\n", "confusion_matrix_train: [[2802 657]\n", " [ 582 1915]]\n", "classification_report_train:\n", " precision recall f1-score support\n", "\n", " 0 0.83 0.81 0.82 3459\n", " 1 0.74 0.77 0.76 2497\n", "\n", " accuracy 0.79 5956\n", " macro avg 0.79 0.79 0.79 5956\n", "weighted avg 0.79 0.79 0.79 5956\n", "\n", "**************************************************\n", "acc_test: 0.8101711983887211\n", "f1_test: 0.7773183697578263\n", "recall_score_test: 0.7824019024970273\n", "precision_score_test: 0.7723004694835681\n", "confusion_matrix_test: [[951 194]\n", " [183 658]]\n", "classification_report_test:\n", " precision recall f1-score support\n", "\n", " 0 0.84 0.83 0.83 1145\n", " 1 0.77 0.78 0.78 841\n", "\n", " accuracy 0.81 1986\n", " macro avg 0.81 0.81 0.81 1986\n", "weighted avg 0.81 0.81 0.81 1986\n", "\n" ] } ], "source": [ "from sklearn.svm import LinearSVC\n", "\n", "LinearSVC_clf_scaled = LinearSVC(random_state=42)\n", "\n", "LinearSVC_clf_scaled.fit(x_train, y_train)\n", "\n", "y_pred_train = LinearSVC_clf_scaled.predict(x_train)\n", "\n", "print('acc_train:',accuracy_score(y_train, y_pred_train))\n", "print('f1_train:', f1_score(y_train, y_pred_train))\n", "print('recall_score_train:', recall_score(y_train, y_pred_train))\n", "print('precision_score_train:',precision_score(y_train, y_pred_train))\n", "print('confusion_matrix_train:', confusion_matrix(y_train, y_pred_train))\n", "print('classification_report_train:\\n', classification_report(y_train, y_pred_train))\n", "\n", "print (\"*\"*50)\n", "\n", "y_pred_val = LinearSVC_clf_scaled.predict(x_val)\n", "\n", "print('acc_test:',accuracy_score(y_val, y_pred_val))\n", "print('f1_test:', f1_score(y_val, y_pred_val))\n", "print('recall_score_test:', recall_score(y_val, y_pred_val))\n", "print('precision_score_test:', precision_score(y_val, y_pred_val))\n", "print('confusion_matrix_test:', confusion_matrix(y_val, y_pred_val))\n", "print('classification_report_test:\\n', classification_report(y_val, y_pred_val))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEST MODEL" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_test: 0.8016112789526687\n", "f1_test: 0.7594627594627594\n", "recall_score_test: 0.788339670468948\n", "precision_score_test: 0.7326266195524146\n", "confusion_matrix_test: [[970 227]\n", " [167 622]]\n", "classification_report_test:\n", " precision recall f1-score support\n", "\n", " 0 0.85 0.81 0.83 1197\n", " 1 0.73 0.79 0.76 789\n", "\n", " accuracy 0.80 1986\n", " macro avg 0.79 0.80 0.80 1986\n", "weighted avg 0.81 0.80 0.80 1986\n", "\n" ] } ], "source": [ "y_pred_tast = LinearSVC_clf_scaled.predict(x_test)\n", "print('acc_test:',accuracy_score(y_test, y_pred_tast))\n", "print('f1_test:', (f1_score(y_test, y_pred_tast)))\n", "print('recall_score_test:', (recall_score(y_test, y_pred_tast)))\n", "print('precision_score_test:', (precision_score(y_test, y_pred_tast)))\n", "print('confusion_matrix_test:', confusion_matrix(y_test, y_pred_tast))\n", "print('classification_report_test:\\n', classification_report(y_test, y_pred_tast))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Oversampling scaled" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [], "source": [ "sm = SMOTE(random_state=42)\n", "X_over,y_over = sm.fit_resample(x,y)" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x_train shape: (6961, 10)\n", "x_val shape: (2320, 10)\n", "x_test shape: (2321, 10)\n", "y_train shape: (6961,)\n", "y_val shape: (2320,)\n", "y_test shape: (2321,)\n" ] } ], "source": [ "x_train, x_temp, y_train, y_temp = train_test_split(X_over,y_over , test_size=0.4, random_state=42)\n", "x_val, x_test, y_val, y_test = train_test_split(x_temp, y_temp, test_size=0.5, random_state=42)\n", "\n", "print(\"x_train shape:\", x_train.shape)\n", "print(\"x_val shape:\", x_val.shape)\n", "print(\"x_test shape:\", x_test.shape)\n", "print(\"y_train shape:\", y_train.shape)\n", "print(\"y_val shape:\", y_val.shape)\n", "print(\"y_test shape:\", y_test.shape)" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'tuple' object has no attribute '__name__'\n", "Invalid Classifier(s)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 32/32 [00:07<00:00, 4.10it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[LightGBM] [Info] Number of positive: 3498, number of negative: 3463\n", "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.000184 seconds.\n", "You can set `force_col_wise=true` to remove the overhead.\n", "[LightGBM] [Info] Total Bins 630\n", "[LightGBM] [Info] Number of data points in the train set: 6961, number of used features: 10\n", "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.502514 -> initscore=0.010056\n", "[LightGBM] [Info] Start training from score 0.010056\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyBalanced AccuracyROC AUCF1 ScoreTime Taken
Model
LGBMClassifier0.800.800.800.800.09
RandomForestClassifier0.800.800.800.800.65
ExtraTreesClassifier0.800.800.800.800.56
CalibratedClassifierCV0.790.790.790.790.05
LinearSVC0.790.790.790.790.02
NuSVC0.790.790.790.791.49
RidgeClassifierCV0.790.790.790.790.02
RidgeClassifier0.790.790.790.790.02
LinearDiscriminantAnalysis0.790.790.790.790.02
LogisticRegression0.790.790.790.790.02
BernoulliNB0.790.790.790.790.02
SVC0.780.780.780.781.41
NearestCentroid0.780.780.780.780.02
Perceptron0.780.780.780.780.02
BaggingClassifier0.780.780.780.780.15
AdaBoostClassifier0.780.780.780.780.20
GaussianNB0.780.780.780.780.02
SGDClassifier0.780.780.780.780.03
QuadraticDiscriminantAnalysis0.770.770.770.770.02
KNeighborsClassifier0.770.770.770.770.14
PassiveAggressiveClassifier0.760.760.760.760.02
LabelSpreading0.750.750.750.751.54
LabelPropagation0.750.750.750.751.11
DecisionTreeClassifier0.720.720.720.720.03
ExtraTreeClassifier0.720.720.720.720.02
DummyClassifier0.510.500.500.350.01
\n", "
" ], "text/plain": [ " Accuracy Balanced Accuracy ROC AUC F1 Score \\\n", "Model \n", "LGBMClassifier 0.80 0.80 0.80 0.80 \n", "RandomForestClassifier 0.80 0.80 0.80 0.80 \n", "ExtraTreesClassifier 0.80 0.80 0.80 0.80 \n", "CalibratedClassifierCV 0.79 0.79 0.79 0.79 \n", "LinearSVC 0.79 0.79 0.79 0.79 \n", "NuSVC 0.79 0.79 0.79 0.79 \n", "RidgeClassifierCV 0.79 0.79 0.79 0.79 \n", "RidgeClassifier 0.79 0.79 0.79 0.79 \n", "LinearDiscriminantAnalysis 0.79 0.79 0.79 0.79 \n", "LogisticRegression 0.79 0.79 0.79 0.79 \n", "BernoulliNB 0.79 0.79 0.79 0.79 \n", "SVC 0.78 0.78 0.78 0.78 \n", "NearestCentroid 0.78 0.78 0.78 0.78 \n", "Perceptron 0.78 0.78 0.78 0.78 \n", "BaggingClassifier 0.78 0.78 0.78 0.78 \n", "AdaBoostClassifier 0.78 0.78 0.78 0.78 \n", "GaussianNB 0.78 0.78 0.78 0.78 \n", "SGDClassifier 0.78 0.78 0.78 0.78 \n", "QuadraticDiscriminantAnalysis 0.77 0.77 0.77 0.77 \n", "KNeighborsClassifier 0.77 0.77 0.77 0.77 \n", "PassiveAggressiveClassifier 0.76 0.76 0.76 0.76 \n", "LabelSpreading 0.75 0.75 0.75 0.75 \n", "LabelPropagation 0.75 0.75 0.75 0.75 \n", "DecisionTreeClassifier 0.72 0.72 0.72 0.72 \n", "ExtraTreeClassifier 0.72 0.72 0.72 0.72 \n", "DummyClassifier 0.51 0.50 0.50 0.35 \n", "\n", " Time Taken \n", "Model \n", "LGBMClassifier 0.09 \n", "RandomForestClassifier 0.65 \n", "ExtraTreesClassifier 0.56 \n", "CalibratedClassifierCV 0.05 \n", "LinearSVC 0.02 \n", "NuSVC 1.49 \n", "RidgeClassifierCV 0.02 \n", "RidgeClassifier 0.02 \n", "LinearDiscriminantAnalysis 0.02 \n", "LogisticRegression 0.02 \n", "BernoulliNB 0.02 \n", "SVC 1.41 \n", "NearestCentroid 0.02 \n", "Perceptron 0.02 \n", "BaggingClassifier 0.15 \n", "AdaBoostClassifier 0.20 \n", "GaussianNB 0.02 \n", "SGDClassifier 0.03 \n", "QuadraticDiscriminantAnalysis 0.02 \n", "KNeighborsClassifier 0.14 \n", "PassiveAggressiveClassifier 0.02 \n", "LabelSpreading 1.54 \n", "LabelPropagation 1.11 \n", "DecisionTreeClassifier 0.03 \n", "ExtraTreeClassifier 0.02 \n", "DummyClassifier 0.01 " ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf_Oversampling_scaled = LazyClassifier(verbose = 0,ignore_warnings= True,random_state= 42,classifiers= \"all\")\n", "models, predictions = clf.fit(x_train, x_val, y_train, y_val)\n", "models" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_train: 0.9995690274385864\n", "f1_train: 0.9995712448192082\n", "recall_score_train: 0.9997141223556318\n", "precision_score_train: 0.9994284081166047\n", "confusion_matrix_train: [[3461 2]\n", " [ 1 3497]]\n", "classification_report_train:\n", " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 3463\n", " 1 1.00 1.00 1.00 3498\n", "\n", " accuracy 1.00 6961\n", " macro avg 1.00 1.00 1.00 6961\n", "weighted avg 1.00 1.00 1.00 6961\n", "\n", "**************************************************\n", "acc_test: 0.8025862068965517\n", "f1_test: 0.8088480801335559\n", "recall_score_test: 0.8170320404721754\n", "precision_score_test: 0.8008264462809918\n", "confusion_matrix_test: [[893 241]\n", " [217 969]]\n", "classification_report_test:\n", " precision recall f1-score support\n", "\n", " 0 0.80 0.79 0.80 1134\n", " 1 0.80 0.82 0.81 1186\n", "\n", " accuracy 0.80 2320\n", " macro avg 0.80 0.80 0.80 2320\n", "weighted avg 0.80 0.80 0.80 2320\n", "\n" ] } ], "source": [ "rfc_over_clf = RandomForestClassifier(random_state=42)\n", "\n", "rfc_over_clf.fit(x_train, y_train)\n", "\n", "y_pred_train = rfc_over_clf.predict(x_train)\n", "\n", "print('acc_train:',accuracy_score(y_train, y_pred_train))\n", "print('f1_train:', f1_score(y_train, y_pred_train))\n", "print('recall_score_train:', recall_score(y_train, y_pred_train))\n", "print('precision_score_train:',precision_score(y_train, y_pred_train))\n", "print('confusion_matrix_train:', confusion_matrix(y_train, y_pred_train))\n", "print('classification_report_train:\\n', classification_report(y_train, y_pred_train))\n", "\n", "print (\"*\"*50)\n", "\n", "y_pred_val = rfc_over_clf.predict(x_val)\n", "\n", "print('acc_test:',accuracy_score(y_val, y_pred_val))\n", "print('f1_test:', f1_score(y_val, y_pred_val))\n", "print('recall_score_test:', recall_score(y_val, y_pred_val))\n", "print('precision_score_test:', precision_score(y_val, y_pred_val))\n", "print('confusion_matrix_test:', confusion_matrix(y_val, y_pred_val))\n", "print('classification_report_test:\\n', classification_report(y_val, y_pred_val))" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_train: 0.802039936790691\n", "f1_train: 0.8043169554103948\n", "recall_score_train: 0.8096054888507719\n", "precision_score_train: 0.7990970654627539\n", "confusion_matrix_train:\n", " [[2751 712]\n", " [ 666 2832]]\n", "classification_report_train:\n", " precision recall f1-score support\n", "\n", " 0 0.81 0.79 0.80 3463\n", " 1 0.80 0.81 0.80 3498\n", "\n", " accuracy 0.80 6961\n", " macro avg 0.80 0.80 0.80 6961\n", "weighted avg 0.80 0.80 0.80 6961\n", "\n", "**************************************************\n", "acc_val: 0.7922413793103448\n", "f1_val: 0.7974789915966387\n", "recall_val: 0.8001686340640809\n", "precision_val: 0.7948073701842546\n", "confusion_matrix_val:\n", " [[889 245]\n", " [237 949]]\n", "classification_report_val:\n", " precision recall f1-score support\n", "\n", " 0 0.79 0.78 0.79 1134\n", " 1 0.79 0.80 0.80 1186\n", "\n", " accuracy 0.79 2320\n", " macro avg 0.79 0.79 0.79 2320\n", "weighted avg 0.79 0.79 0.79 2320\n", "\n" ] } ], "source": [ "rfc_over_clf = RandomForestClassifier(\n", " n_estimators=1000, \n", " max_depth=10, \n", " min_samples_split=50, \n", " min_samples_leaf=50, \n", " random_state=42,)\n", "\n", "rfc_over_clf.fit(x_train, y_train)\n", "\n", "y_pred_train = rfc_over_clf.predict(x_train)\n", "\n", "print('acc_train:', accuracy_score(y_train, y_pred_train))\n", "print('f1_train:', f1_score(y_train, y_pred_train))\n", "print('recall_score_train:', recall_score(y_train, y_pred_train))\n", "print('precision_score_train:', precision_score(y_train, y_pred_train))\n", "print('confusion_matrix_train:\\n', confusion_matrix(y_train, y_pred_train))\n", "print('classification_report_train:\\n', classification_report(y_train, y_pred_train))\n", "\n", "print(\"*\" * 50)\n", "\n", "y_pred_val = rfc_over_clf.predict(x_val)\n", "\n", "print('acc_val:', accuracy_score(y_val, y_pred_val))\n", "print('f1_val:', f1_score(y_val, y_pred_val))\n", "print('recall_val:', recall_score(y_val, y_pred_val))\n", "print('precision_val:', precision_score(y_val, y_pred_val))\n", "print('confusion_matrix_val:\\n', confusion_matrix(y_val, y_pred_val))\n", "print('classification_report_val:\\n', classification_report(y_val, y_pred_val))\n" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_test: 0.7819905213270142\n", "f1_test: 0.7784588441330998\n", "recall_score_test: 0.7958818263205013\n", "precision_score_test: 0.7617823479005998\n", "confusion_matrix_test: [[926 278]\n", " [228 889]]\n", "classification_report_test:\n", " precision recall f1-score support\n", "\n", " 0 0.80 0.77 0.79 1204\n", " 1 0.76 0.80 0.78 1117\n", "\n", " accuracy 0.78 2321\n", " macro avg 0.78 0.78 0.78 2321\n", "weighted avg 0.78 0.78 0.78 2321\n", "\n" ] } ], "source": [ "y_pred_tast = rfc_over_clf.predict(x_test)\n", "print('acc_test:',accuracy_score(y_test, y_pred_tast))\n", "print('f1_test:', (f1_score(y_test, y_pred_tast)))\n", "print('recall_score_test:', (recall_score(y_test, y_pred_tast)))\n", "print('precision_score_test:', (precision_score(y_test, y_pred_tast)))\n", "print('confusion_matrix_test:', confusion_matrix(y_test, y_pred_tast))\n", "print('classification_report_test:\\n', classification_report(y_test, y_pred_tast))" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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Hh4eGDRoEIBXQfPmzZuoX78+AKBevXrQ09PDsWPHxGUMr2vSpAl27NiBatWqwcjIqNTqL61+dXR0kJ2d/U61XLhwAVlZWVi8eLE4S13UcoayYGdnh61btyIjI0MMsBcuXHjvdRAREdGH66Ndw1sYa2trHDlyBJGRkYiPj8dXX32Fe/fuicd1dXUxZcoU+Pn54ccff0RCQgLOnj2LjRs3AgAGDhyIqlWrwsPDAxEREUhMTER4eDi+/vpr/P33329dV2n1a2lpiZMnT+LOnTt48ODBW9VSt25dZGVlYeXKlfjrr7+wZcsWrF279q36ehcDBgxATk4ORo4cifj4eBw6dAiLFi0CgLd+fjARERFJCwNvPqZPn44mTZrA3d0dHTp0gJmZGXr27Jmnja+vL2bMmIH69evD09NTXFeqr6+PkydPonbt2ujVqxfq168Pb29vvHjx4p1mZkur35kzZyIpKQl169ZVWwpREk5OTliyZAkWLFiAhg0bYuvWrZg3b95b9fUujIyM8OuvvyI2NhZOTk6YOnUqZsyYAQBq63qJiIjo4yUTirPgkagC2bp1K7788kukpqYWud46V1pa2qunNfiEQEOuX8YVvpuk+d3KuwQiIqIPQu7P79TU1EIn/z6qNbwkTT/++COsrKxQs2ZNXLp0CVOmTEHfvn2LHXaJiIhI2hh4qcK7d+8eZsyYgXv37sHc3Bx9+vRR+613RERE9HHjkgYiFP8jESIiIvpwFPfnN7+0RkRERESSxsBLRERERJLGwEtEREREksbAS0RERESSxsBLRERERJLGwEtEREREksbAS0RERESSxsBLRERERJLGwEtEREREksbAS0RERESSxsBLRERERJLGwEtEREREksbAS0RERESSxsBLRERERJLGwEtEREREksbAS0RERESSxsBLRERERJLGwEtEREREkqZV3gUQfUgaBhyChly/vMsoN0nzu5V3CURERKWOM7xEREREJGkMvEREREQkaQy8RERERCRpH2Tg9fLyQs+ePd/qXJVKBRMTk1KtRwreHFNBEDBy5EhUrlwZMpkMsbGx6NChA3x8fMq0jqSkJPF6RERERO9DsQPv2rVrYWhoiKysLHHfs2fPoK2tjXbt2qm1jYiIgEwmw40bN0qvUok5ceIEunbtiipVqkBfXx/29vbw9fXFnTt33qnfggLl8uXLoVKp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4vEBAwbg2bNnWL16db7tnzx5UqJrV65cGZ999hnCw8PzXc4AABEREfDy8sLnn38OBwcHmJmZISkpqdjXGD16NObPny9e53V6enr47LPPsGLFCoSFheHMmTPibDYRERF9vPJOwVGF8PDhQ/Tp0wfe3t5wdHSEoaEhLly4gIULF8LDwwOhoaHYvn07+vXrBxsbGwiCgF9//RUHDhxAcHAwAKBFixbw8/ODr68v7ty5g88//xw1atTAn3/+ibVr16Jt27b4+uuvS1SXSqXC6tWrUaVKlXyPW1tbY8+ePejRowdkMhmmT5+OnJycEl1j/PjxyM7ORvfu3fH777+jbdu2UKlUyM7ORosWLaCvr48tW7ZAT08PFhYWJeqbiIiIpIeBt4JSKBRo0aIFli5dKi5LUCqVGDFiBL777jukpKRAX18fvr6+uH37NuRyOerVq4cNGzZg8ODBYj8LFixA06ZNsWrVKqxduxY5OTmoW7cuvvjii2I/lux1enp60NPTK/D40qVL4e3tjdatW6Nq1aqYMmXKWz0hwcfHBzk5OejatSsOHjwIExMTzJ8/H9988w2ys7Ph4OCAX3/9tcDgTURERB8PmVDQM6uIPiJpaWmvntbgEwINuX55l0NEFVDS/G7lXQLRRyf353dqamqh38fhGl4iIiIikjQGXipUgwYNxF9y8ea2devW8i6PiIiIqEhc0kCFunXrVoGP9qpevToMDQ3fc0Vlo7gfiRAREdGHo7g/v/mlNSoUn3JAREREFR2XNBARERGRpDHwEhEREZGkMfASERERkaQx8BIRERGRpDHwEhEREZGkMfASERERkaQx8BIRERGRpDHwEhEREZGkMfASERERkaQx8BIRERGRpDHwEhEREZGkMfASERERkaQx8BIRERGRpDHwEhEREZGkMfASERERkaQx8BIRERGRpDHwEhEREZGkaZV3AUQfkoYBh6Ah1y/vMoiIiiVpfrfyLoGoQuAMLxERERFJGgMvEREREUkaAy8RERERSRoDbykKCwuDTCbDkydPSq1PmUyGffv2lVp/pU2lUsHExKTY7Ys7RpaWlli2bNk71UZEREQElEHg9fLygkwmy7N17ty5WOd36NABPj4+pV3We9G6dWukpKTA2Ni4vEspUGRkJDQ1NYv99/G6/EKop6cnbty4Uew+3hyjggJzVFQURo4cWeIaiYiI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hVMW7zu+l9WV9njwvZy/tx3nbdu2ITAwEL/88guqVatWKn1KVWmPsZTeywy8JClVq1aFpqZmnv/R3r9/P8//fHOZmZnl215LSwtVqlQptE1BfUpZWY3xmzQ0NNCsWbMKOZNQGt5mnIuD7+X/KasxfhPfy28/zjt27MCwYcOwc+dOuLm5qR3je/l/ymqM31SR38tc0kCSoqOjg6ZNm+LIkSNq+48cOYLWrVvne06rVq3ytD98+DCcnZ2hra1daJuC+pSyshrjNwmCgNjYWJibm5dO4RXM24xzcfC9/D9lNcZv4nv57cZ527Zt8PLyws8//4xu3brlOc738v+U1Ri/qUK/l8vjm3JEZWn79u2Ctra2sHHjRiEuLk7w8fERDAwMhKSkJEEQBOHbb78VBg8eLLb/66+/BH19fWHixIlCXFycsHHjRkFbW1vYtWuX2Ob06dOCpqamMH/+fCE+Pl6YP3++oKWlJZw9e/a939+HoCzGODAwUDh48KCQkJAgxMTECF9++aWgpaUlnDt37r3f34eipOMsCIIQExMjxMTECE2bNhUGDBggxMTECH/88Yd4nO9ldWUxxnwv51XScf75558FLS0tYdWqVUJKSoq4PXnyRGzD97K6shhjKb2XGXhJklatWiVYWFgIOjo6QpMmTYTw8HDx2NChQwUXFxe19mFhYULjxo0FHR0dwdLSUlizZk2ePnfu3CnY2toK2tragp2dnbB79+6yvo0PWmmPsY+Pj1C7dm1BR0dHMDU1FT799FMhMjLyfdzKB62k4wwgz2ZhYaHWhu9ldaU9xnwv568k4+zi4pLvOA8dOlStT76X1ZX2GEvpvSwThP//5ggRERERkQRxDS8RERERSRoDLxERERFJGgMvEREREUkaAy8RERERSRoDLxERERFJGgMvEREREUkaAy8RERERSRoDLxERERFJGgMvEREREUkaAy8RERERSRoDLxERERFJGgMvEREREUna/wFtIILbdhwYlQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "feature_importance = pd.Series(rfc_over_clf.feature_importances_, index=x.columns)\n", "feature_importance.nlargest(10).plot(kind='barh')\n", "#من شات " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### undersampling scaled" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "rus = RandomUnderSampler(random_state=42)\n", "X_under,y_under = rus.fit_resample(x,y)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x_train shape: (4952, 10)\n", "x_val shape: (1651, 10)\n", "x_test shape: (1651, 10)\n", "y_train shape: (4952,)\n", "y_val shape: (1651,)\n", "y_test shape: (1651,)\n" ] } ], "source": [ "x_train, x_temp, y_train, y_temp = train_test_split(X_under,y_under , test_size=0.4, random_state=42)\n", "x_val, x_test, y_val, y_test = train_test_split(x_temp, y_temp, test_size=0.5, random_state=42)\n", "\n", "print(\"x_train shape:\", x_train.shape)\n", "print(\"x_val shape:\", x_val.shape)\n", "print(\"x_test shape:\", x_test.shape)\n", "print(\"y_train shape:\", y_train.shape)\n", "print(\"y_val shape:\", y_val.shape)\n", "print(\"y_test shape:\", y_test.shape)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'tuple' object has no attribute '__name__'\n", "Invalid Classifier(s)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 32/32 [00:04<00:00, 6.97it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[LightGBM] [Info] Number of positive: 2470, number of negative: 2482\n", "[LightGBM] [Info] Auto-choosing col-wise multi-threading, the overhead of testing was 0.000209 seconds.\n", "You can set `force_col_wise=true` to remove the overhead.\n", "[LightGBM] [Info] Total Bins 170\n", "[LightGBM] [Info] Number of data points in the train set: 4952, number of used features: 10\n", "[LightGBM] [Info] [binary:BoostFromScore]: pavg=0.498788 -> initscore=-0.004847\n", "[LightGBM] [Info] Start training from score -0.004847\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AccuracyBalanced AccuracyROC AUCF1 ScoreTime Taken
Model
NuSVC0.790.790.790.790.75
BernoulliNB0.790.790.790.790.05
CalibratedClassifierCV0.790.790.790.790.04
NearestCentroid0.790.790.790.790.02
AdaBoostClassifier0.790.790.790.790.15
SGDClassifier0.790.790.790.790.03
LogisticRegression0.790.790.790.790.02
LinearSVC0.790.790.790.790.02
RidgeClassifier0.790.790.790.790.02
RidgeClassifierCV0.790.790.790.790.02
LinearDiscriminantAnalysis0.790.790.790.790.02
GaussianNB0.790.790.790.790.01
SVC0.790.790.790.790.70
LGBMClassifier0.780.780.780.780.08
RandomForestClassifier0.780.780.780.780.47
QuadraticDiscriminantAnalysis0.770.770.770.770.01
ExtraTreesClassifier0.770.770.770.770.43
PassiveAggressiveClassifier0.760.760.760.760.02
Perceptron0.760.760.760.760.02
KNeighborsClassifier0.750.750.750.750.10
BaggingClassifier0.750.750.750.740.11
LabelSpreading0.710.710.710.710.79
ExtraTreeClassifier0.710.710.710.710.02
LabelPropagation0.710.710.710.710.57
DecisionTreeClassifier0.690.690.690.690.03
DummyClassifier0.500.500.500.330.01
\n", "
" ], "text/plain": [ " Accuracy Balanced Accuracy ROC AUC F1 Score \\\n", "Model \n", "NuSVC 0.79 0.79 0.79 0.79 \n", "BernoulliNB 0.79 0.79 0.79 0.79 \n", "CalibratedClassifierCV 0.79 0.79 0.79 0.79 \n", "NearestCentroid 0.79 0.79 0.79 0.79 \n", "AdaBoostClassifier 0.79 0.79 0.79 0.79 \n", "SGDClassifier 0.79 0.79 0.79 0.79 \n", "LogisticRegression 0.79 0.79 0.79 0.79 \n", "LinearSVC 0.79 0.79 0.79 0.79 \n", "RidgeClassifier 0.79 0.79 0.79 0.79 \n", "RidgeClassifierCV 0.79 0.79 0.79 0.79 \n", "LinearDiscriminantAnalysis 0.79 0.79 0.79 0.79 \n", "GaussianNB 0.79 0.79 0.79 0.79 \n", "SVC 0.79 0.79 0.79 0.79 \n", "LGBMClassifier 0.78 0.78 0.78 0.78 \n", "RandomForestClassifier 0.78 0.78 0.78 0.78 \n", "QuadraticDiscriminantAnalysis 0.77 0.77 0.77 0.77 \n", "ExtraTreesClassifier 0.77 0.77 0.77 0.77 \n", "PassiveAggressiveClassifier 0.76 0.76 0.76 0.76 \n", "Perceptron 0.76 0.76 0.76 0.76 \n", "KNeighborsClassifier 0.75 0.75 0.75 0.75 \n", "BaggingClassifier 0.75 0.75 0.75 0.74 \n", "LabelSpreading 0.71 0.71 0.71 0.71 \n", "ExtraTreeClassifier 0.71 0.71 0.71 0.71 \n", "LabelPropagation 0.71 0.71 0.71 0.71 \n", "DecisionTreeClassifier 0.69 0.69 0.69 0.69 \n", "DummyClassifier 0.50 0.50 0.50 0.33 \n", "\n", " Time Taken \n", "Model \n", "NuSVC 0.75 \n", "BernoulliNB 0.05 \n", "CalibratedClassifierCV 0.04 \n", "NearestCentroid 0.02 \n", "AdaBoostClassifier 0.15 \n", "SGDClassifier 0.03 \n", "LogisticRegression 0.02 \n", "LinearSVC 0.02 \n", "RidgeClassifier 0.02 \n", "RidgeClassifierCV 0.02 \n", "LinearDiscriminantAnalysis 0.02 \n", "GaussianNB 0.01 \n", "SVC 0.70 \n", "LGBMClassifier 0.08 \n", "RandomForestClassifier 0.47 \n", "QuadraticDiscriminantAnalysis 0.01 \n", "ExtraTreesClassifier 0.43 \n", "PassiveAggressiveClassifier 0.02 \n", "Perceptron 0.02 \n", "KNeighborsClassifier 0.10 \n", "BaggingClassifier 0.11 \n", "LabelSpreading 0.79 \n", "ExtraTreeClassifier 0.02 \n", "LabelPropagation 0.57 \n", "DecisionTreeClassifier 0.03 \n", "DummyClassifier 0.01 " ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf_undersampling_scaled = LazyClassifier(verbose = 0,ignore_warnings= True,random_state= 42,classifiers= \"all\")\n", "models, predictions = clf.fit(x_train, x_val, y_train, y_val)\n", "models" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_train: 0.7481825525040388\n", "f1_train: 0.6956309494752257\n", "recall_score_train: 0.5769230769230769\n", "precision_score_train: 0.8758451137062078\n", "confusion_matrix_train: [[2280 202]\n", " [1045 1425]]\n", "classification_report_train:\n", " precision recall f1-score support\n", "\n", " 0 0.69 0.92 0.79 2482\n", " 1 0.88 0.58 0.70 2470\n", "\n", " accuracy 0.75 4952\n", " macro avg 0.78 0.75 0.74 4952\n", "weighted avg 0.78 0.75 0.74 4952\n", "\n", "**************************************************\n", "acc_test: 0.7425802543912781\n", "f1_test: 0.6881878209831255\n", "recall_score_test: 0.5643802647412756\n", "precision_score_test: 0.881578947368421\n", "confusion_matrix_test: [[757 63]\n", " [362 469]]\n", "classification_report_test:\n", " precision recall f1-score support\n", "\n", " 0 0.68 0.92 0.78 820\n", " 1 0.88 0.56 0.69 831\n", "\n", " accuracy 0.74 1651\n", " macro avg 0.78 0.74 0.73 1651\n", "weighted avg 0.78 0.74 0.73 1651\n", "\n" ] } ], "source": [ "sgd_clf = SGDClassifier(loss=\"log_loss\", max_iter=1000, tol=1e-3, random_state=42)\n", "\n", "sgd_clf.fit(x_train, y_train)\n", "\n", "y_pred_train = sgd_clf.predict(x_train)\n", "\n", "print('acc_train:',accuracy_score(y_train, y_pred_train))\n", "print('f1_train:', f1_score(y_train, y_pred_train))\n", "print('recall_score_train:', recall_score(y_train, y_pred_train))\n", "print('precision_score_train:',precision_score(y_train, y_pred_train))\n", "print('confusion_matrix_train:', confusion_matrix(y_train, y_pred_train))\n", "print('classification_report_train:\\n', classification_report(y_train, y_pred_train))\n", "\n", "print (\"*\"*50)\n", "\n", "y_pred_val = sgd_clf.predict(x_val)\n", "\n", "print('acc_test:',accuracy_score(y_val, y_pred_val))\n", "print('f1_test:', f1_score(y_val, y_pred_val))\n", "print('recall_score_test:', recall_score(y_val, y_pred_val))\n", "print('precision_score_test:', precision_score(y_val, y_pred_val))\n", "print('confusion_matrix_test:', confusion_matrix(y_val, y_pred_val))\n", "print('classification_report_test:\\n', classification_report(y_val, y_pred_val))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "acc_test: 0.4887946698970321\n", "f1_test: 0.48473748473748474\n", "recall_score_test: 0.4777376654632972\n", "precision_score_test: 0.4919454770755886\n", "confusion_matrix_test: [[410 410]\n", " [434 397]]\n", "classification_report_test:\n", " precision recall f1-score support\n", "\n", " 0 0.49 0.50 0.49 820\n", " 1 0.49 0.48 0.48 831\n", "\n", " accuracy 0.49 1651\n", " macro avg 0.49 0.49 0.49 1651\n", "weighted avg 0.49 0.49 0.49 1651\n", "\n" ] } ], "source": [ "y_pred_val = LinearSVC_clf_scaled.predict(x_test)\n", "print('acc_test:',accuracy_score(y_val, y_pred_val))\n", "print('f1_test:', (f1_score(y_val, y_pred_val)))\n", "print('recall_score_test:', (recall_score(y_val, y_pred_val)))\n", "print('precision_score_test:', (precision_score(y_val, y_pred_val)))\n", "print('confusion_matrix_test:', confusion_matrix(y_val, y_pred_val))\n", "print('classification_report_test:\\n', classification_report(y_val, y_pred_val))\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "with open(\"placement.pkl\", \"wb\") as file:\n", " pickle.dump(LinearSVC_clf_scaled,file)" ] } ], "metadata": { "kernelspec": { "display_name": "TF", "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.10.16" } }, "nbformat": 4, "nbformat_minor": 2 }