Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Pranjal-Soni/0298c968fa42bbdbf8215bcebcb84a79 to your computer and use it in GitHub Desktop.
Save Pranjal-Soni/0298c968fa42bbdbf8215bcebcb84a79 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Fake Job Description Prediction\n",
"\n",
"### About Dataset :\n",
"This dataset contains 18K job descriptions out of which about 800 are fake. The data consists of both textual information and meta-information about the jobs. The dataset can be used to create classification models which can learn the job descriptions which are fraudulent."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import nltk\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"WNlemma = nltk.WordNetLemmatizer()\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#importing the data\n",
"data = pd.read_csv('fake_job_postings.csv')\n",
"target = data['fraudulent']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exploratory Data Analysis"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"job_id 0.000000\n",
"title 0.000000\n",
"location 1.935123\n",
"department 64.580537\n",
"salary_range 83.959732\n",
"company_profile 18.501119\n",
"description 0.005593\n",
"requirements 15.072707\n",
"benefits 40.324385\n",
"telecommuting 0.000000\n",
"has_company_logo 0.000000\n",
"has_questions 0.000000\n",
"employment_type 19.412752\n",
"required_experience 39.429530\n",
"required_education 45.329978\n",
"industry 27.421700\n",
"function 36.101790\n",
"fraudulent 0.000000\n",
"dtype: float64\n"
]
}
],
"source": [
"print((data.isna().sum()/len(data))*100)\n",
"#drop department and salary_range because it have about 60 persent null values and removing irrelavent data from the dataset\n",
"data.drop(['job_id','salary_range','department','benefits'],axis=1,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>location</th>\n",
" <th>company_profile</th>\n",
" <th>description</th>\n",
" <th>requirements</th>\n",
" <th>telecommuting</th>\n",
" <th>has_company_logo</th>\n",
" <th>has_questions</th>\n",
" <th>employment_type</th>\n",
" <th>required_experience</th>\n",
" <th>required_education</th>\n",
" <th>industry</th>\n",
" <th>function</th>\n",
" <th>fraudulent</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Marketing Intern</td>\n",
" <td>US, NY, New York</td>\n",
" <td>We're Food52, and we've created a groundbreaki...</td>\n",
" <td>Food52, a fast-growing, James Beard Award-winn...</td>\n",
" <td>Experience with content management systems a m...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Other</td>\n",
" <td>Internship</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Marketing</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Customer Service - Cloud Video Production</td>\n",
" <td>NZ, , Auckland</td>\n",
" <td>90 Seconds, the worlds Cloud Video Production ...</td>\n",
" <td>Organised - Focused - Vibrant - Awesome!Do you...</td>\n",
" <td>What we expect from you:Your key responsibilit...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Full-time</td>\n",
" <td>Not Applicable</td>\n",
" <td>NaN</td>\n",
" <td>Marketing and Advertising</td>\n",
" <td>Customer Service</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Commissioning Machinery Assistant (CMA)</td>\n",
" <td>US, IA, Wever</td>\n",
" <td>Valor Services provides Workforce Solutions th...</td>\n",
" <td>Our client, located in Houston, is actively se...</td>\n",
" <td>Implement pre-commissioning and commissioning ...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Account Executive - Washington DC</td>\n",
" <td>US, DC, Washington</td>\n",
" <td>Our passion for improving quality of life thro...</td>\n",
" <td>THE COMPANY: ESRI – Environmental Systems Rese...</td>\n",
" <td>EDUCATION: Bachelor’s or Master’s in GIS, busi...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Full-time</td>\n",
" <td>Mid-Senior level</td>\n",
" <td>Bachelor's Degree</td>\n",
" <td>Computer Software</td>\n",
" <td>Sales</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Bill Review Manager</td>\n",
" <td>US, FL, Fort Worth</td>\n",
" <td>SpotSource Solutions LLC is a Global Human Cap...</td>\n",
" <td>JOB TITLE: Itemization Review ManagerLOCATION:...</td>\n",
" <td>QUALIFICATIONS:RN license in the State of Texa...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Full-time</td>\n",
" <td>Mid-Senior level</td>\n",
" <td>Bachelor's Degree</td>\n",
" <td>Hospital &amp; Health Care</td>\n",
" <td>Health Care Provider</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" title location \\\n",
"0 Marketing Intern US, NY, New York \n",
"1 Customer Service - Cloud Video Production NZ, , Auckland \n",
"2 Commissioning Machinery Assistant (CMA) US, IA, Wever \n",
"3 Account Executive - Washington DC US, DC, Washington \n",
"4 Bill Review Manager US, FL, Fort Worth \n",
"\n",
" company_profile \\\n",
"0 We're Food52, and we've created a groundbreaki... \n",
"1 90 Seconds, the worlds Cloud Video Production ... \n",
"2 Valor Services provides Workforce Solutions th... \n",
"3 Our passion for improving quality of life thro... \n",
"4 SpotSource Solutions LLC is a Global Human Cap... \n",
"\n",
" description \\\n",
"0 Food52, a fast-growing, James Beard Award-winn... \n",
"1 Organised - Focused - Vibrant - Awesome!Do you... \n",
"2 Our client, located in Houston, is actively se... \n",
"3 THE COMPANY: ESRI – Environmental Systems Rese... \n",
"4 JOB TITLE: Itemization Review ManagerLOCATION:... \n",
"\n",
" requirements telecommuting \\\n",
"0 Experience with content management systems a m... 0 \n",
"1 What we expect from you:Your key responsibilit... 0 \n",
"2 Implement pre-commissioning and commissioning ... 0 \n",
"3 EDUCATION: Bachelor’s or Master’s in GIS, busi... 0 \n",
"4 QUALIFICATIONS:RN license in the State of Texa... 0 \n",
"\n",
" has_company_logo has_questions employment_type required_experience \\\n",
"0 1 0 Other Internship \n",
"1 1 0 Full-time Not Applicable \n",
"2 1 0 NaN NaN \n",
"3 1 0 Full-time Mid-Senior level \n",
"4 1 1 Full-time Mid-Senior level \n",
"\n",
" required_education industry function \\\n",
"0 NaN NaN Marketing \n",
"1 NaN Marketing and Advertising Customer Service \n",
"2 NaN NaN NaN \n",
"3 Bachelor's Degree Computer Software Sales \n",
"4 Bachelor's Degree Hospital & Health Care Health Care Provider \n",
"\n",
" fraudulent \n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],\n",
" <a list of 20 Text xticklabel objects>)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Plotting the bar plot jobs funtion counts\n",
"plt.figure(figsize=(12,6))\n",
"plt.bar(data.function.value_counts().index[:20],data.function.value_counts()[:20])\n",
"plt.title('Top 20 Job Functions')\n",
"plt.xlabel('Job function Name')\n",
"plt.ylabel(\"No. of Job Functions\")\n",
"degrees = 75\n",
"plt.xticks(rotation=degrees)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Industry Name')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#plot top 20 industries which give most of job posting\n",
"plt.figure(figsize=(10,6))\n",
"plt.barh(data.industry.value_counts()[:20].index,data.industry.value_counts()[:20])\n",
"plt.title('Top 20 Industries With More Jobs')\n",
"plt.xlabel('No. of Jobs')\n",
"plt.ylabel(\"Industry Name\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of fake Job description: 866\n",
"Number of correct job description: 17014\n"
]
}
],
"source": [
"#separate both data to analyse them\n",
"fradulent_data = data[data.fraudulent==1]\n",
"non_fradulent_data = data[data.fraudulent==0]\n",
"\n",
"print('Number of fake Job description: ',len(fradulent_data))\n",
"print('Number of correct job description: ',len(non_fradulent_data))"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"title 0.000000\n",
"location 2.193995\n",
"company_profile 67.782910\n",
"description 0.115473\n",
"requirements 17.782910\n",
"telecommuting 0.000000\n",
"has_company_logo 0.000000\n",
"has_questions 0.000000\n",
"employment_type 27.829099\n",
"required_experience 50.230947\n",
"required_education 52.078522\n",
"industry 31.755196\n",
"function 38.914550\n",
"fraudulent 0.000000\n",
"dtype: float64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Missing values in fake jobs data\n",
"fradulent_data.isna().sum()/866*100"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"title 0.000000\n",
"location 1.921947\n",
"company_profile 15.992712\n",
"description 0.000000\n",
"requirements 14.934760\n",
"telecommuting 0.000000\n",
"has_company_logo 0.000000\n",
"has_questions 0.000000\n",
"employment_type 18.984366\n",
"required_experience 38.879746\n",
"required_education 44.986482\n",
"industry 27.201128\n",
"function 35.958622\n",
"fraudulent 0.000000\n",
"dtype: float64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#missing values in correct jobs\n",
"non_fradulent_data.isna().sum()/len(non_fradulent_data)*100"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"#removing target values form dataset\n",
"data.drop(['fraudulent'],axis=1,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['title', 'location', 'company_profile', 'description', 'requirements',\n",
" 'telecommuting', 'has_company_logo', 'has_questions', 'employment_type',\n",
" 'required_experience', 'required_education', 'industry', 'function'],\n",
" dtype='object')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cleaning and preprocessing the data"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"def remove_links(text):\n",
" text = re.sub(r'http://[\\w|\\S]+',' ',str(text))\n",
" return text"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def lower_text(text):\n",
" text = str(text)\n",
" text = ' '.join(x.lower() for x in text.split())\n",
" return text"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"from nltk.corpus import stopwords\n",
"stop = stopwords.words('english')\n",
"def remove_stopWords(text):\n",
" text = str(text)\n",
" text = ''.join( x for x in text if x.split() not in stop)\n",
" return(text)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"def remove_non_imp_words(series):\n",
" most_freq = pd.Series(' '.join(series).split()).value_counts()[:30]\n",
" less_freq = pd.Series(' '.join(series).split()).value_counts()[-30:]\n",
" series = series.apply(lambda x: \" \".join(x for x in x.split() if x not in most_freq))\n",
" series = series.apply(lambda x: \" \".join(x for x in x.split() if x not in less_freq))\n",
" return series\n",
"\n",
"def remove_nan(text):\n",
" if text == 'nan' or text == '':\n",
" text = 'not given'\n",
" return text"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def data_cleaning(feature):\n",
" feature = feature.apply(lambda x : remove_links(x))\n",
" feature = feature.apply(lambda x : lower_text(x))\n",
" feature = feature.apply(lambda x : remove_stopWords(x))\n",
" feature = feature.str.replace('[^\\w\\s]',' 111')\n",
" feature = remove_non_imp_words(feature)\n",
" feature = feature.apply(lambda x: ' '.join([WNlemma.lemmatize(word) for word in x.split()]))\n",
" feature = feature.apply(lambda x : remove_nan(x))\n",
" return feature\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"data['required_education'].fillna('no_info_about_education',inplace = True)\n",
"data['employment_type'].fillna('no_info_about_employment',inplace = True)\n",
"data['required_experience'].fillna('experience_not_asked',inplace = True)\n",
"data['industry'].fillna('industry_not_given',inplace = True)\n",
"data['function'].fillna('function_not_given',inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Pranjal Soni\\AppData\\Roaming\\Python\\Python37\\site-packages\\ipykernel_launcher.py:6: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" \n"
]
}
],
"source": [
"#dealing with company profile feature\n",
"for i in range(len(data.company_profile)):\n",
" if data.company_profile[i]=='NaN':\n",
" data.company_profile[i] = 'company_profile_not_given'\n",
" else:\n",
" data.company_profile[i] = 'company_profile_given'"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"#dealing catogorical data\n",
"cat_cols = ['employment_type','required_experience','required_education','industry','function','company_profile']\n",
"for c in cat_cols:\n",
" encoded = pd.get_dummies(data[c])\n",
" data = pd.concat([data,encoded],axis = 1 )\n",
"cat_cols = ['employment_type','required_experience','required_education','industry','function','title','location','company_profile']\n",
"data.drop(cat_cols,axis=1,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"#dealing with text data\n",
"description = data['description']+ ' ' + data['requirements']\n",
"description = data_cleaning(description)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"tfidf = TfidfVectorizer( min_df = 0.05, ngram_range=(1,3))\n",
"tfidf_features = tfidf.fit_transform(description) \n",
"tfidf_vect_df = pd.DataFrame(tfidf_features.todense(), columns = tfidf.get_feature_names())\n",
"data = pd.concat([data, tfidf_vect_df], axis = 1)\n",
"data.drop(['description','requirements'],axis = 1 , inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(17880, 727)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Applying different classification algorithms"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.feature_selection import SelectFromModel\n",
"from sklearn.metrics import accuracy_score,classification_report\n",
"from sklearn.metrics import precision_score,recall_score\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.model_selection import StratifiedKFold\n",
"\n",
"X = data\n",
"y = target"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.utils import resample\n",
"\n",
"def oversampling(X_train,y_train,target_name):\n",
" \n",
" training_set = pd.concat([X_train, y_train], axis=1)\n",
" \n",
" # Separating classes\n",
" fraud = training_set[training_set[target_name] == 1]\n",
" not_fraud = training_set[training_set[target_name] == 0]\n",
" \n",
" oversample = resample(fraud, \n",
" replace=True, \n",
" n_samples=len(not_fraud),\n",
" random_state=42)\n",
" \n",
" # Returning to new training set\n",
" oversample_train = pd.concat([not_fraud, oversample])\n",
" oversample_train[target_name].value_counts(normalize=True)\n",
" \n",
" # Separate oversampled data into X and y sets\n",
" oversample_x_train = oversample_train.drop('fraudulent', axis=1)\n",
" oversample_y_train = oversample_train[target_name]\n",
" return(oversample_x_train, oversample_y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Logistic Regression Model"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.94967305855558\n",
"Test Data Accuracy : 0.9172259507829977\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[12518 1093]\n",
" [ 277 13334]]\n",
"Confusion Matrix of Test Data : \n",
" [[3134 269]\n",
" [ 27 146]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.92 0.95 3403\n",
" 1 0.35 0.84 0.50 173\n",
"\n",
" accuracy 0.92 3576\n",
" macro avg 0.67 0.88 0.73 3576\n",
"weighted avg 0.96 0.92 0.93 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9454485342737492\n",
"Test Data Accuracy : 0.9012863534675615\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[12502 1109]\n",
" [ 376 13235]]\n",
"Confusion Matrix of Test Data : \n",
" [[3076 327]\n",
" [ 26 147]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.90 0.95 3403\n",
" 1 0.31 0.85 0.45 173\n",
"\n",
" accuracy 0.90 3576\n",
" macro avg 0.65 0.88 0.70 3576\n",
"weighted avg 0.96 0.90 0.92 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9480567188303578\n",
"Test Data Accuracy : 0.9077181208053692\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[12552 1059]\n",
" [ 355 13256]]\n",
"Confusion Matrix of Test Data : \n",
" [[3094 309]\n",
" [ 21 152]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.91 0.95 3403\n",
" 1 0.33 0.88 0.48 173\n",
"\n",
" accuracy 0.91 3576\n",
" macro avg 0.66 0.89 0.71 3576\n",
"weighted avg 0.96 0.91 0.93 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.949636323561825\n",
"Test Data Accuracy : 0.9049217002237137\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[12535 1076]\n",
" [ 295 13316]]\n",
"Confusion Matrix of Test Data : \n",
" [[3090 313]\n",
" [ 27 146]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.91 0.95 3403\n",
" 1 0.32 0.84 0.46 173\n",
"\n",
" accuracy 0.90 3576\n",
" macro avg 0.65 0.88 0.70 3576\n",
"weighted avg 0.96 0.90 0.92 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n",
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9475095503967088\n",
"Test Data Accuracy : 0.9119127516778524\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[12538 1074]\n",
" [ 355 13257]]\n",
"Confusion Matrix of Test Data : \n",
" [[3121 281]\n",
" [ 34 140]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.92 0.95 3402\n",
" 1 0.33 0.80 0.47 174\n",
"\n",
" accuracy 0.91 3576\n",
" macro avg 0.66 0.86 0.71 3576\n",
"weighted avg 0.96 0.91 0.93 3576\n",
"\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"\n",
"lr_clf = LogisticRegression(n_jobs=-1)\n",
"\n",
"kfold = StratifiedKFold(n_splits=5,shuffle=True,random_state=1)\n",
"for train_ix, test_ix in kfold.split(X_new,y):\n",
" print(' ********************************************** ')\n",
" #select rows\n",
" X_train, X_test = X.iloc[train_ix], X.iloc[test_ix]\n",
" y_train, y_test = y[train_ix], y[test_ix]\n",
" \n",
" oversample_x_train, oversample_y_train = oversampling(X_train,y_train,'fraudulent')\n",
" \n",
" \n",
" #fit the model with training data\n",
" lr_clf.fit(oversample_x_train, oversample_y_train)\n",
" \n",
" #feature_selection\n",
" sfm = SelectFromModel(lr_clf,threshold=0.002)\n",
" sfm.fit(oversample_x_train, oversample_y_train)\n",
" \n",
" X_important_train = sfm.transform(oversample_x_train)\n",
" X_important_test = sfm.transform(X_test)\n",
" \n",
" lr_clf = LogisticRegression()\n",
" lr_clf.fit(X_important_train, oversample_y_train)\n",
" y_train_pred = lr_clf.predict(X_important_train)\n",
" y_test_pred = lr_clf.predict(X_important_test)\n",
" #evalute the model\n",
" print('Train Data Accuracy : ',accuracy_score( oversample_y_train,y_train_pred))\n",
" print('Test Data Accuracy : ',accuracy_score(y_test,y_test_pred))\n",
" \n",
" print()\n",
" print('Confusion Matrix of Train Data : \\n',confusion_matrix( oversample_y_train,y_train_pred))\n",
" print('Confusion Matrix of Test Data : \\n',confusion_matrix(y_test,y_test_pred))\n",
" print()\n",
" #pricision and recall for test and train data\n",
" print(classification_report(y_test,y_test_pred))\n",
" print()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## KNN Model"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9530159429872896\n",
"Test Data Accuracy : 0.9544183445190156\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13290 321]\n",
" [ 958 12653]]\n",
"Confusion Matrix of Test Data : \n",
" [[3278 125]\n",
" [ 38 135]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.96 0.98 3403\n",
" 1 0.52 0.78 0.62 173\n",
"\n",
" accuracy 0.95 3576\n",
" macro avg 0.75 0.87 0.80 3576\n",
"weighted avg 0.97 0.95 0.96 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9511791932995372\n",
"Test Data Accuracy : 0.9555369127516778\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13308 303]\n",
" [ 1026 12585]]\n",
"Confusion Matrix of Test Data : \n",
" [[3288 115]\n",
" [ 44 129]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.97 0.98 3403\n",
" 1 0.53 0.75 0.62 173\n",
"\n",
" accuracy 0.96 3576\n",
" macro avg 0.76 0.86 0.80 3576\n",
"weighted avg 0.96 0.96 0.96 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9570200573065902\n",
"Test Data Accuracy : 0.9538590604026845\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13294 317]\n",
" [ 853 12758]]\n",
"Confusion Matrix of Test Data : \n",
" [[3285 118]\n",
" [ 47 126]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.97 0.98 3403\n",
" 1 0.52 0.73 0.60 173\n",
"\n",
" accuracy 0.95 3576\n",
" macro avg 0.75 0.85 0.79 3576\n",
"weighted avg 0.96 0.95 0.96 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9548159576812872\n",
"Test Data Accuracy : 0.9530201342281879\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13302 309]\n",
" [ 921 12690]]\n",
"Confusion Matrix of Test Data : \n",
" [[3277 126]\n",
" [ 42 131]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.96 0.98 3403\n",
" 1 0.51 0.76 0.61 173\n",
"\n",
" accuracy 0.95 3576\n",
" macro avg 0.75 0.86 0.79 3576\n",
"weighted avg 0.96 0.95 0.96 3576\n",
"\n",
"\n",
" ********************************************** \n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:764: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train Data Accuracy : 0.9522847487511019\n",
"Test Data Accuracy : 0.9569351230425056\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13311 301]\n",
" [ 998 12614]]\n",
"Confusion Matrix of Test Data : \n",
" [[3287 115]\n",
" [ 39 135]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.99 0.97 0.98 3402\n",
" 1 0.54 0.78 0.64 174\n",
"\n",
" accuracy 0.96 3576\n",
" macro avg 0.76 0.87 0.81 3576\n",
"weighted avg 0.97 0.96 0.96 3576\n",
"\n",
"\n"
]
}
],
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"knn_clf = KNeighborsClassifier(n_jobs=-1)\n",
"\n",
"kfold = StratifiedKFold(n_splits=5,shuffle=True,random_state=1)\n",
"for train_ix, test_ix in kfold.split(X_new,y):\n",
" print(' ********************************************** ')\n",
" #select rows\n",
" X_train, X_test = X.iloc[train_ix], X.iloc[test_ix]\n",
" y_train, y_test = y[train_ix], y[test_ix]\n",
" \n",
" oversample_x_train, oversample_y_train = oversampling(X_train,y_train,'fraudulent')\n",
" \n",
" \n",
" #fit the model with training data\n",
" lr_clf.fit(oversample_x_train, oversample_y_train)\n",
" \n",
" \n",
" knn_clf = KNeighborsClassifier()\n",
" knn_clf.fit(oversample_x_train, oversample_y_train)\n",
" y_train_pred = knn_clf.predict(oversample_x_train)\n",
" y_test_pred = knn_clf.predict(X_test)\n",
" #evalute the model\n",
" print('Train Data Accuracy : ',accuracy_score( oversample_y_train,y_train_pred))\n",
" print('Test Data Accuracy : ',accuracy_score(y_test,y_test_pred))\n",
" \n",
" print()\n",
" print('Confusion Matrix of Train Data : \\n',confusion_matrix( oversample_y_train,y_train_pred))\n",
" print('Confusion Matrix of Test Data : \\n',confusion_matrix(y_test,y_test_pred))\n",
" print()\n",
" #pricision and recall for test and train data\n",
" print(classification_report(y_test,y_test_pred))\n",
" print()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Random Forest Model"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" ********************************************** \n",
"Train Data Accuracy : 0.9865549922856514\n",
"Test Data Accuracy : 0.9711968680089486\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13431 180]\n",
" [ 186 13425]]\n",
"Confusion Matrix of Test Data : \n",
" [[3359 44]\n",
" [ 59 114]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.98 0.99 0.98 3403\n",
" 1 0.72 0.66 0.69 173\n",
"\n",
" accuracy 0.97 3576\n",
" macro avg 0.85 0.82 0.84 3576\n",
"weighted avg 0.97 0.97 0.97 3576\n",
"\n",
"\n",
" ********************************************** \n",
"Train Data Accuracy : 0.9805304533098229\n",
"Test Data Accuracy : 0.9541387024608501\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13355 256]\n",
" [ 274 13337]]\n",
"Confusion Matrix of Test Data : \n",
" [[3304 99]\n",
" [ 65 108]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.98 0.97 0.98 3403\n",
" 1 0.52 0.62 0.57 173\n",
"\n",
" accuracy 0.95 3576\n",
" macro avg 0.75 0.80 0.77 3576\n",
"weighted avg 0.96 0.95 0.96 3576\n",
"\n",
"\n",
" ********************************************** \n",
"Train Data Accuracy : 0.9814855631474543\n",
"Test Data Accuracy : 0.9661633109619687\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13335 276]\n",
" [ 228 13383]]\n",
"Confusion Matrix of Test Data : \n",
" [[3336 67]\n",
" [ 54 119]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.98 0.98 0.98 3403\n",
" 1 0.64 0.69 0.66 173\n",
"\n",
" accuracy 0.97 3576\n",
" macro avg 0.81 0.83 0.82 3576\n",
"weighted avg 0.97 0.97 0.97 3576\n",
"\n",
"\n",
" ********************************************** \n",
"Train Data Accuracy : 0.9812284181911689\n",
"Test Data Accuracy : 0.9619686800894854\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13330 281]\n",
" [ 230 13381]]\n",
"Confusion Matrix of Test Data : \n",
" [[3322 81]\n",
" [ 55 118]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.98 0.98 0.98 3403\n",
" 1 0.59 0.68 0.63 173\n",
"\n",
" accuracy 0.96 3576\n",
" macro avg 0.79 0.83 0.81 3576\n",
"weighted avg 0.96 0.96 0.96 3576\n",
"\n",
"\n",
" ********************************************** \n",
"Train Data Accuracy : 0.9840581839553335\n",
"Test Data Accuracy : 0.9600111856823266\n",
"\n",
"Confusion Matrix of Train Data : \n",
" [[13408 204]\n",
" [ 230 13382]]\n",
"Confusion Matrix of Test Data : \n",
" [[3334 68]\n",
" [ 75 99]]\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.98 0.98 0.98 3402\n",
" 1 0.59 0.57 0.58 174\n",
"\n",
" accuracy 0.96 3576\n",
" macro avg 0.79 0.77 0.78 3576\n",
"weighted avg 0.96 0.96 0.96 3576\n",
"\n",
"\n"
]
}
],
"source": [
"from sklearn.ensemble import RandomForestClassifier\n",
"\n",
"rf_clf = RandomForestClassifier(n_jobs=-1)\n",
"\n",
"kfold = StratifiedKFold(n_splits=5,shuffle=True,random_state=1)\n",
"for train_ix, test_ix in kfold.split(X_new,y):\n",
" print(' ********************************************** ')\n",
" #select rows\n",
" X_train, X_test = X.iloc[train_ix], X.iloc[test_ix]\n",
" y_train, y_test = y[train_ix], y[test_ix]\n",
" \n",
" oversample_x_train, oversample_y_train = oversampling(X_train,y_train,'fraudulent')\n",
" \n",
" \n",
" #fit the model with training data\n",
" rf_clf.fit(oversample_x_train, oversample_y_train)\n",
" \n",
" #feature_selection\n",
" sfm = SelectFromModel(rf_clf,threshold=0.002)\n",
" sfm.fit(oversample_x_train, oversample_y_train)\n",
" \n",
" X_important_train = sfm.transform(oversample_x_train)\n",
" X_important_test = sfm.transform(X_test)\n",
" \n",
" rf_clf = RandomForestClassifier(n_estimators=459, max_depth=30,oob_score=True,n_jobs=-1)\n",
" rf_clf.fit(X_important_train, oversample_y_train)\n",
" y_train_pred = rf_clf.predict(X_important_train)\n",
" y_test_pred = rf_clf.predict(X_important_test)\n",
" #evalute the model\n",
" print('Train Data Accuracy : ',accuracy_score( oversample_y_train,y_train_pred))\n",
" print('Test Data Accuracy : ',accuracy_score(y_test,y_test_pred))\n",
" \n",
" print()\n",
" print('Confusion Matrix of Train Data : \\n',confusion_matrix( oversample_y_train,y_train_pred))\n",
" print('Confusion Matrix of Test Data : \\n',confusion_matrix(y_test,y_test_pred))\n",
" print()\n",
" #pricision and recall for test and train data\n",
" print(classification_report(y_test,y_test_pred))\n",
" print()"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"has_company_logo, has_questions, Full-time, no_info_about_employment, Associate, Mid-Senior level, experience_not_asked, Bachelor's Degree, High School or equivalent, Accounting, Computer Software, Hospital & Health Care, Internet, Oil & Energy, industry_not_given, Administrative, Engineering, function_not_given, 111amp, 111re, 111you, ability, about, area, at, based, benefit, best, but, by, call, candidate, care, client, communication, company, computer, control, creative, degree, deliver, developer, development, duty, engineering, english, environment, excel, field, first, flexible, from, full, get, growing, growth, ha, high, home, hour, if, industry, information, internet, it, job, join, knowledge, looking, love, management, marketing, medium, mobile, month, more, multiple, must, new, no, not, office, only, other, own, passionate, per, perform, personal, phone, platform, play, position, preferred, problem, process, product, provide, required, requirement, responsibility, right, role, sale, schedule, school diploma, seeking, service, social, software, strategy, system, technical, their, them, this, time, university, user, web, who, within, without, word, working, year, your, "
]
}
],
"source": [
"for feature_list_index in sfm.get_support(indices=True):\n",
" print(data.columns[feature_list_index],end= \", \")"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"#Saving the models\n",
"import pickle \n",
"logistic_model = pickle.dumps(lr_clf) \n",
"knn_model = pickle.dumps(knn_clf)\n",
"randonForest_model = pickle.dumps(rf_clf)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment