Code
#importing the Libraies
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Reading the Dataset
dataset = pd.read_csv('Social_Network_Ads.csv')
dataset
dataset
dataset=pd.get_dummies(dataset,drop_first=True)
dataset
indep=dataset[['Age', 'EstimatedSalary','Gender_Male']]
dep=dataset['Purchased']
#split into training set and test
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(indep, dep, test_size = 1/3, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
from sklearn.linear_model import LogisticRegression
#<https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter>
from sklearn.model_selection import GridSearchCV
param_grid = {'solver':['newton-cg', 'lbfgs', 'liblinear', 'saga'],
'penalty':['l2']}
grid = GridSearchCV(LogisticRegression(), param_grid, refit = True, verbose = 3,n_jobs=-1,scoring='f1_weighted')
# fitting the model for grid search
grid.fit(X_train, y_train)
# print best parameter after tuning
#print(grid.best_params_)
re=grid.cv_results_
#print(re)
grid_predictions = grid.predict(X_test)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, grid_predictions)
# print classification report
from sklearn.metrics import classification_report
clf_report = classification_report(y_test, grid_predictions)
from sklearn.metrics import f1_score
f1_macro=f1_score(y_test,grid_predictions,average='weighted')
print("The f1_macro value for best parameter {}:".format(grid.best_params_),f1_macro)
print("The confusion Matrix:\\n",cm)
print("The report:\\n",clf_report)
from sklearn.metrics import roc_auc_score
roc_auc_score(y_test,grid.predict_proba(X_test)[:,1])
table=pd.DataFrame.from_dict(re)
table
age_input=float(input("Age:"))
bmi_input=float(input("BMI:"))
children_input=float(input("Children:"))
sex_male_input=int(input("Sex Male 0 or 1:"))
smoker_yes_input=int(input("Smoker Yes 0 or 1:"))
Future_Prediction=grid.predict([[age_input,bmi_input,children_input,sex_male_input,smoker_yes_input]])# change the paramter,play with it.
print("Future_Prediction={}".format(Future_Prediction))
Dataset
User Purchase Data
| User ID |
Gender |
Age |
Estimated Salary |
Purchased |
| 15624510 |
Male |
19 |
19000 |
0 |
| 15810944 |
Male |
35 |
20000 |
0 |
| 15668575 |
Female |
26 |
43000 |
0 |
| 15603246 |
Female |
27 |
57000 |
0 |
| 15804002 |
Male |
19 |
76000 |
0 |
| 15728773 |
Male |
27 |
58000 |
0 |
| 15598044 |
Female |
27 |
84000 |
0 |
| 15694829 |
Female |
32 |
150000 |
1 |
| 15600575 |
Male |
25 |
33000 |
0 |
| 15727311 |
Female |
35 |
65000 |
0 |
| 15570769 |
Female |
26 |
80000 |
0 |
| 15606274 |
Female |
26 |
52000 |
0 |
| 15746139 |
Male |
20 |
86000 |
0 |
| 15704987 |
Male |
32 |
18000 |
0 |
| 15628972 |
Male |
18 |
82000 |
0 |
| 15697686 |
Male |
29 |
80000 |
0 |
| 15733883 |
Male |
47 |
25000 |
1 |
| 15617482 |
Male |
45 |
26000 |
1 |
| 15704583 |
Male |
46 |
28000 |
1 |
| 15621083 |
Female |
48 |
29000 |
1 |
| 15649487 |
Male |
45 |
22000 |
1 |
| 15736760 |
Female |
47 |
49000 |
1 |
| 15714658 |
Male |
48 |
41000 |
1 |
| 15599081 |
Female |
45 |
22000 |
1 |
| 15705113 |
Male |
46 |
23000 |
1 |
| 15631159 |
Male |
47 |
20000 |
1 |
| 15792818 |
Male |
49 |
28000 |
1 |
| 15633531 |
Female |
47 |
30000 |
1 |
| 15744529 |
Male |
29 |
43000 |
0 |
| 15669656 |
Male |
31 |
18000 |
0 |
| 15581198 |
Male |
31 |
74000 |
0 |
| 15729054 |
Female |
27 |
137000 |
1 |
| 15573452 |
Female |
21 |
16000 |
0 |
| 15776733 |
Female |
28 |
44000 |
0 |
| 15724858 |
Male |
27 |
90000 |
0 |
| 15713144 |
Male |
35 |
27000 |
0 |
| 15690188 |
Female |
33 |
28000 |
0 |
| 15689425 |
Male |
30 |
49000 |
0 |
| 15671766 |
Female |
26 |
72000 |
0 |
| 15782806 |
Female |
27 |
31000 |
0 |
| 15764419 |
Female |
27 |
17000 |
0 |
| 15591915 |
Female |
33 |
51000 |
0 |
| 15772798 |
Male |
35 |
108000 |
0 |
| 15792008 |
Male |
30 |
15000 |
0 |
| 15715541 |
Female |
28 |
84000 |
0 |
| 15639277 |
Male |
23 |
20000 |
0 |
| 15798850 |
Male |
25 |
79000 |
0 |
| 15776348 |
Female |
27 |
54000 |
0 |
| 15727696 |
Male |
30 |
135000 |
1 |
| 15793813 |
Female |
31 |
89000 |
0 |
| 15694395 |
Female |
24 |
32000 |
0 |
| 15764195 |
Female |
18 |
44000 |
0 |
| 15744919 |
Female |
29 |
83000 |
0 |
| 15671655 |
Female |
35 |
23000 |
0 |
| 15654901 |
Female |
27 |
58000 |
0 |
| 15649136 |
Female |
24 |
55000 |
0 |
| 15775562 |
Female |
23 |
48000 |
0 |
| 15807481 |
Male |
28 |
79000 |
0 |
| 15642885 |
Male |
22 |
18000 |
0 |
| 15789109 |
Female |
32 |
117000 |
0 |
| 15814004 |
Male |
27 |
20000 |
0 |
| 15673619 |
Male |
25 |
87000 |
0 |
| 15595135 |
Female |
23 |
66000 |
0 |
| 15583681 |
Male |
32 |
120000 |
1 |
| 15605000 |
Female |
59 |
83000 |
0 |
| 15718071 |
Male |
24 |
58000 |
0 |
| 15679760 |
Male |
24 |
19000 |
0 |
| 15654574 |
Female |
23 |
82000 |
0 |
| 15577178 |
Female |
22 |
63000 |
0 |
| 15595324 |
Female |
31 |
68000 |
0 |
| 15756932 |
Male |
25 |
80000 |
0 |
| 15726358 |
Female |
24 |
27000 |
0 |
| 15595228 |
Female |
20 |
23000 |
0 |
| 15782530 |
Female |
33 |
113000 |
0 |
| 15592877 |
Male |
32 |
18000 |
0 |
| 15651983 |
Male |
34 |
112000 |
1 |
| 15746737 |
Male |
18 |
52000 |
0 |
| 15774179 |
Female |
22 |
27000 |
0 |
| 15667265 |
Female |
28 |
87000 |
0 |
| 15655123 |
Female |
26 |
17000 |
0 |
| 15595917 |
Male |
30 |
80000 |
0 |
| 15668385 |
Male |
39 |
42000 |
0 |
| 15709476 |
Male |
20 |
49000 |
0 |
| 15711218 |
Male |
35 |
88000 |
0 |
| 15798659 |
Female |
30 |
62000 |
0 |
| 15663939 |
Female |
31 |
118000 |
1 |
| 15694946 |
Male |
24 |
55000 |
0 |
| 15631912 |
Female |
28 |
85000 |
0 |
| 15768816 |
Male |
26 |
81000 |
0 |
| 15682268 |
Male |
35 |
50000 |
0 |
| 15684801 |
Male |
22 |
81000 |
0 |
| 15636428 |
Female |
30 |
116000 |
0 |
| 15809823 |
Male |
26 |
15000 |
0 |
| 15699284 |
Female |
29 |
28000 |
0 |
| 15786993 |
Female |
29 |
83000 |
0 |
| 15709441 |
Female |
35 |
44000 |
0 |
| 15710257 |
Female |
35 |
25000 |
0 |
| 15582492 |
Male |
28 |
123000 |
1 |
| 15575694 |
Male |
35 |
73000 |
0 |