Login
Order Now
Support
Python Task on Logistic Regression Model

Python Task on Logistic Regression Model

  • 2nd Jun, 2022
  • 23:13 PM
# Importing the dependencies
import warnings
import matplotlib.pyplot as plt
import numpy as np
from sklearn import preprocessing, datasets
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_curve, roc_auc_score
from sklearn.model_selection import train_test_split

warnings.filterwarnings("ignore")

#Loading the data set into data and target variables
X,Y = datasets.load_iris(return_X_y=True)

# training sets all the features as columns except the last column
#  target values as last column of the data frame
# 10 different sets of features considering 2 and 3 columns at a time as mentioned in question
X1 = X[:,[0,1]]
X2 = X[:, [0,2]]
X3 = X[:, [0,3]]
X4 = X[:, [1,2]]
X5 = X[:, [1,3]]
X6 = X[:, [2,3]]
X7 = X[:, [0,1,2]]
X8 = X[:, [0,1,3]]
X9 = X[:, [0,2,3]]
X10 = X[:, [1,2,3]]

# data split into 80% for training and 20% for testing
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
x_train1, x_test1, y_train1, y_test1 = train_test_split(X1, Y, test_size=0.2, random_state=42)
x_train2, x_test2, y_train2, y_test2 = train_test_split(X2, Y, test_size=0.2, random_state=42)
x_train3, x_test3, y_train3, y_test3 = train_test_split(X3, Y, test_size=0.2, random_state=42)
x_train4, x_test4, y_train4, y_test4 = train_test_split(X4, Y, test_size=0.2, random_state=42)
x_train5, x_test5, y_train5, y_test5 = train_test_split(X5, Y, test_size=0.2, random_state=42)
x_train6, x_test6, y_train6, y_test6 = train_test_split(X6, Y, test_size=0.2, random_state=42)
x_train7, x_test7, y_train7, y_test7 = train_test_split(X7, Y, test_size=0.2, random_state=42)
x_train8, x_test8, y_train8, y_test8 = train_test_split(X8, Y, test_size=0.2, random_state=42)
x_train9, x_test9, y_train9, y_test9 = train_test_split(X9, Y, test_size=0.2, random_state=42)
x_train10, x_test10, y_train10, y_test10 = train_test_split(X10, Y, test_size=0.2, random_state=42)

#Training the model

logistic= LogisticRegression()
# Create grid search using 5-fold cross validation
param_grid = [    
    {'penalty' : ['l1', 'l2'],
    'C' : [10,1,.1,.001],
    'solver' : ['lbfgs','newton-cg','liblinear','sag','saga'],
    'max_iter' : [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 250, 500, 1000]
    }
]
clf = GridSearchCV(logistic, param_grid = param_grid, cv = 3, verbose=True, n_jobs=-1)
lst=[]
X_train = [x_train, x_train1, x_train2, x_train3, x_train4, x_train5, x_train6, x_train7, x_train8, x_train9, x_train10]
Y_train = [y_train, y_train1, y_train2, y_train3, y_train4, y_train5, y_train6, y_train7, y_train8, y_train9, y_train10]
X_test =  [x_test, x_test1, x_test2, x_test3, x_test4, x_test5, x_test6, x_test7, x_test8, x_test9, x_test10]
Y_test =  [y_test, y_test1, y_test2, y_test3, y_test4, y_test5, y_test6, y_test7, y_test8, y_test9, y_test10 ]

for i in range(0,11):
    scaler = preprocessing.StandardScaler().fit(X_train[i])  #scaling data
    scaler.transform(X_train[i])
    scaler.transform(X_test[i])
    best_clf = clf.fit(X_train[i],Y_train[i])                #finding best model for the data by grid search
    lst1=[]
    lst1.append(best_clf.score(X_train[i],Y_train[i]))       #storing the result for each case into list
    lst1.append(best_clf.best_estimator_)
    lst.append(lst1)
for i in range(0,11):                                           #printing best accuracy and other important results for 11 cases
    print("for case: ",i) 
    for j in range(0,2):
        print(lst[i][j])
    print("\n")

C = [10, 1, .1, .001]                                           # a list of C values 
lstl1=[]
lstl2=[]

for i in range(0,11):
    scaler = preprocessing.StandardScaler().fit(X_train[i])
    scaler.transform(X_train[i])
    scaler.transform(X_test[i])
    lst_l1=[]
    lst_l2=[]
    for c in C:

        model_l1 = LogisticRegression(penalty='l1',C=c, solver='liblinear')   # Applying l1 regularization for all c values
        model_l1.fit(X_train[i],Y_train[i])
        lst_l1.append(model_l1.score(X_test[i],Y_test[i]))
        lstl1.append(lst_l1)                                   # storing the accuracy for all c values of each case
        
        model_l2 = LogisticRegression(C=c, solver='liblinear')   # Applying l2 regularization for all c values
        model_l2.fit(X_train[i],Y_train[i])
        lst_l2.append(model_l2.score(X_test[i],Y_test[i]))
        lstl2.append(lst_l2)                                    # storing the accuracy for all c values of each case
for i in range(0,11):
    print("for case: ",i) 
    print("\n")
    for j  in range(0,4):                                   # printing accuracy values for analysis
        print(lstl1[i][j])
    print("\n")
    for j in range(0,4):
        print(lstl2[i][j])
    print("\n")

Share this post

assignment helpassignment helperassignment expertsassignment writing services