# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3.7.4 64-bit
#     name: python374jvsc74a57bd07945e9a82d7512fbf96246d9bbc29cd2f106c1a4a9cf54c9563dadf10f2237d4
# ---

# ### 1. 
#
# En el archivo "logistic_regression_df_class" hemos visto un ejemplo multiclase. Elimina del dataframe todas las filas que se correspondan con la clase valor "1".
#
# Ahora, realiza el ejercicio con el nuevo dataframe:
#
# - ¿Se mejora la precisión del algoritmo con dos clases? ¿por qué?
#
# LogisticRegression() es una clase que tiene varios parámetros de entrada. Investiga (modifica, prueba) los argumentos y comenta si modificando algunas de ellas se mejora el porcentaje de acierto del problema (probar al menos 2 diferentes)
#
# https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
#

import numpy as np
import pandas as pd 
from sklearn import linear_model
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import seaborn as sb

dataframe = pd.read_csv("../data/usuarios_win_mac_lin.csv")

dataframe.columns

dataframe1 = dataframe[dataframe['clase'] != 1]

X = np.array(dataframe1.drop(['clase'], axis=1))

y = np.array(dataframe1['clase'])

# +

X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, y, test_size=0.2, random_state=2)

# +
model = linear_model.LogisticRegression(max_iter=1000)#

model.fit(X_train,Y_train) 
# -

y_pred = model.predict(X_train)
y_pred

print("score test:", model.score(X_test, Y_test))
print("score train:", model.score(X_train, Y_train))

# mejora el porcentaje, ya que ahora tiene menos clases por lo tanto la probabilidad de acierto es mayor y la de error es menor

# +
model2 = linear_model.LogisticRegression(max_iter=100000,multi_class="multinomial")

model2.fit(X_train,Y_train) 
# -

print("score test:", model2.score(X_test, Y_test))
print("score train:", model2.score(X_train, Y_train))


# +
model3 = linear_model.LogisticRegression(max_iter=100000000,multi_class="ovr")

model3.fit(X_train,Y_train) 
# -

print("score test:", model3.score(X_test, Y_test))
print("score train:", model3.score(X_train, Y_train))


# cambiando los valores de los argumentos no me modifica el porcetanje del score 

StarcoderdataJupyterScriptsDedupFiltered