Predicción de ubicación mediante regresión logística

Prerrequisitos: comprensión de la regresión logística , regresión logística con Python

En este artículo, analizaremos cómo predecir el estado de ubicación de un estudiante en función de varios atributos del estudiante utilizando el algoritmo de regresión logística.

Las prácticas tienen una gran importancia para los estudiantes y las instituciones educativas. Ayuda a un estudiante a construir una base sólida para la carrera profesional que tiene por delante, así como un buen registro de colocación le da una ventaja competitiva a una universidad en el mercado educativo.              

Este estudio se enfoca en un sistema que predice si un estudiante sería colocado o no en base a las calificaciones, datos históricos y experiencia del estudiante. Este predictor utiliza un algoritmo de aprendizaje automático para dar el resultado. 

El algoritmo utilizado es la regresión logística. La regresión logística es básicamente un algoritmo de clasificación supervisado. En un problema de clasificación, la variable de destino (o salida), y, puede tomar solo valores discretos para un conjunto dado de características (o entradas), X. Hablando sobre el conjunto de datos, contiene el porcentaje de escuela secundaria, porcentaje de escuela secundaria superior, grado porcentaje, grado y experiencia laboral de los estudiantes. Después de predecir el resultado, su eficiencia también se calcula en función del conjunto de datos. El conjunto de datos utilizado aquí está en formato .csv .

A continuación se muestra el enfoque paso a paso:

Paso 1: Importe los módulos requeridos.

Python

# import modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

Paso 2: ahora para leer el conjunto de datos que vamos a usar para el análisis y luego verificar el conjunto de datos.

Python

# reading the file
dataset = pd.read_csv('Placement_Data_Full_Class.csv')
dataset

Producción:

Paso 3: Ahora soltaremos las columnas que no sean necesarias.

Python

# dropping the serial no and salary col
dataset = dataset.drop('sl_no', axis=1)
dataset = dataset.drop('salary', axis=1)

Paso 4: ahora, antes de seguir adelante, debemos preprocesar y transformar nuestros datos. Para eso, usaremos el método astype() en algunas columnas y cambiaremos el tipo de datos a categoría .

Python

# catgorising col for further labelling
dataset["gender"] = dataset["gender"].astype('category')
dataset["ssc_b"] = dataset["ssc_b"].astype('category')
dataset["hsc_b"] = dataset["hsc_b"].astype('category')
dataset["degree_t"] = dataset["degree_t"].astype('category')
dataset["workex"] = dataset["workex"].astype('category')
dataset["specialisation"] = dataset["specialisation"].astype('category')
dataset["status"] = dataset["status"].astype('category')
dataset["hsc_s"] = dataset["hsc_s"].astype('category')
dataset.dtypes

Producción:

Paso 5: ahora aplicaremos códigos en algunas de estas columnas para convertir sus valores de texto en valores numéricos.

Python

# labelling the columns
dataset["gender"] = dataset["gender"].cat.codes
dataset["ssc_b"] = dataset["ssc_b"].cat.codes
dataset["hsc_b"] = dataset["hsc_b"].cat.codes
dataset["degree_t"] = dataset["degree_t"].cat.codes
dataset["workex"] = dataset["workex"].cat.codes
dataset["specialisation"] = dataset["specialisation"].cat.codes
dataset["status"] = dataset["status"].cat.codes
dataset["hsc_s"] = dataset["hsc_s"].cat.codes
 
# display dataset
dataset

Producción:

Paso 6: Ahora, para dividir el conjunto de datos en características y valores usando la función iloc() :

Python

# selecting the features and labels
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, -1].values
 
# display dependent variables
Y

Producción:

Paso 7: ahora dividiremos el conjunto de datos en datos de entrenamiento y prueba que se usarán para verificar la eficiencia más adelante.

Python

# dividing the data into train and test
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y,
                                                    test_size=0.2)
 
# display dataset
dataset.head()

Producción:

Paso 8: Ahora necesitamos entrenar nuestro modelo para lo cual necesitaremos importar un archivo, y luego crearemos un clasificador usando el módulo sklearn . Luego comprobaremos la precisión del modelo.

Python

# creating a classifier using sklearn
from sklearn.linear_model import LogisticRegression
 
clf = LogisticRegression(random_state=0, solver='lbfgs',
                         max_iter=1000).fit(X_train,
                                            Y_train)
# printing the acc
clf.score(X_test, Y_test)

Producción:

Paso 9: Una vez que hayamos entrenado el modelo, lo comprobaremos dando unos valores aleatorios:

Python

# predicting for random value
clf.predict([[0, 87, 0, 95, 0, 2, 78, 2, 0, 0, 1, 0]])

Producción:

Paso 10: Para obtener una comprensión más matizada del rendimiento de nuestro modelo, necesitamos hacer una array de confusión. Una array de confusión es una tabla con dos filas y dos columnas que informa el número de falsos positivos, falsos negativos, verdaderos positivos y verdaderos negativos.  

Para obtener la array de confusión, se necesitan dos argumentos: las etiquetas reales de su conjunto de prueba y_test y las etiquetas predichas. Las etiquetas pronosticadas del clasificador se almacenan en y_pred de la siguiente manera:

Python

# creating a Y_pred for test data
Y_pred = clf.predict(X_test)
 
# display predicted values
Y_pred

Producción:

Paso 11: Finalmente, tenemos y_pred, por lo que podemos generar la array de confusión:

Python

# evaluation of the classifier
from sklearn.metrics import confusion_matrix, accuracy_score
 
# display confusion matrix
print(confusion_matrix(Y_test, Y_pred))
 
# display accuracy
print(accuracy_score(Y_test, Y_pred))

Producción:

Publicación traducida automáticamente

Artículo escrito por ghaishradha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *