You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

2 Días
15 Hrs
17 Min
51 Seg

Carga y preprocesamiento de datos multiclase

13/17
Resources

What is multiple classification using logistic regression?

Multiple classification is a fundamental process in machine learning where the aim is to classify data into more than two different categories. In the case of logistic regression, which is primarily used for binary classification problems, it is extended to address multiple classification problems. A practical example of this is the Dry Beans dataset, where the objective is to classify different types of dry beans using several numerical variables, such as area, perimeter and length.

How to prepare a dataset for logistic regression?

Preparing a dataset properly is crucial for the success of any machine learning model. Here is a step-by-step guide on how to prepare the dataset used in logistic regression for multiple classes:

  1. Loading Necessary Libraries:various Python libraries such as Pandas for data manipulation, NumPy for algebraic calculations, Matplotlib and Seaborn for data visualization, and Scikit-learn for splitting the data and applying logistic regression are required.

  2. Data Loading and Visualization:

    import pandas as pddf = pd.read_csv('path/dataset.csv')print(df.head())
  3. Data Cleanup:

    • Duplicate Removal:
      df.drop_duplicates(inplace=True)
    • Null Value Detection:
      print(df.isnull().sum())
    • Outlier Analysis:
      df.describe()
  4. Dataset Balancing:Using the undersampling technique, the classes are adjusted to the size of the minority class to avoid biases.

    from imblearn.under_sampling import RandomUnderSamplerundersample = RandomUnderSampler(random_state=42)X_res, y_res = undersample.fit_resample(X, y)

How to transform categorical variables to numerical?

In logistic regression, it is essential that all variables are numeric. Categorical variables must be transformed as follows:

import numpy as np
 # Transformation of categorical variables to numericunique_classes = list(np.unique(y_res))y_res.replace(unique_classes, list(range(1, len(unique_classes)+1)), inplace=True)

Why is dataset balancing important?

A balanced dataset is crucial to prevent the model from being biased towards the most representative classes, which could lead to biased predictions. This balancing can be achieved by techniques such as undersampling or oversampling.

What happens after preparing the dataset?

After cleaning and balancing the dataset, it is important to standardize the dataset features. Standardization ensures that all features have a mean of zero and a standard deviation of one. This step will be covered in more depth along with exploratory analysis in later classes. We invite you to continue exploring and learning about these exciting techniques in the world of machine learning!

Contributions 18

Questions 3

Sort by:

Want to see more contributions, questions and answers from the community?

En casi 2 años que llevo estudiando Data Science y ML en esta plataforma es la primera vez que veo que usan la librería imblearn , me parece algo magífico, he llevado muchos cursos en los que la data esta bastante desbalanceada y nunca se dignan en balancearla. Excelente aporte y hasta ahora lo mejor del curso¡¡¡

Al correr el codigo del count plot obtuve el siguiente error
ValueError: could not convert string to float: ‘SEKER’

el error en

sns.countplot(y_over)
plt.xticks(rotation=45)
plt.show()

reemplazar por

sns.countplot(x=y_over, data=df)
plt.xticks(rotation=45)
plt.show()

Para la gráfica del undersampling pueden usar este código:

sns.countplot(x=y_over, data=X_over)
plt.xticks(rotation=45)
plt.show()

Otra forma de ver las proporciones rápidamente es con plt.pie()

El profesor Carlos Alarcón explica demasiado bien, la verdad que me siento volando cuando explica este profe. felicitaciones de verdad.

Yo hice un over sampling con la técnica SMOTE: Quedando con 24 mil datos. El código es bastante similar:

from imblearn.over_sampling import SMOTE
sm = SMOTE(random_state=42)
X = df.drop('Class', axis=1)
y = df.Class
X_sm, y_sm = sm.fit_resample(X, y)

Para el que no le corra el imblearn.under_sampling,

solo tiene que instalar el modulo: !pip install imblearn

Una forma automatizada para encodear los strings en números:

DICT = {key: item for key, item in zip(y.unique(), range(len(y.unique())))}
y_new = pd.Series(map(lambda x: DICT[x], y))
y_new
0        0
1        0
2        0
3        0
4        0
        ..
13538    6
13539    6
13540    6
13541    6
13542    6
Length: 13543, dtype: int64
Una consulta relacionada pero no a multiclase, estuve practicando time series que se supone son de regresión lineal intente con sarima y arima pero no tuve resultados, solo con prophet que es mucho más fácil. Mi consulta es si el undersampling puede afectar al forecasting con modelos de regresión? si alguien sabe se los agradezco un monton, y si tienen un curso, libro o video tambien
En pocas palabras, el *undersampling* es válido cuando hay muchos datos de X y pocos datos de Y. Es el único caso en el que "igualar para abajo" es válido. Aunque, como dijo Carlos, lo ideal es encontrar más casos para poder entrenar mejor al sistema.
Pero no vimos lo práctico de regularizers...
Para quienes el código de mostrar la barra causa error. lo solucioné de esta manera: ![](https://static.platzi.com/media/user_upload/image-e6e29042-36eb-497e-bb19-7bdd0d5ef5cb.jpg) Otra solución es contar los valores de 'Class' e imprimirlo con un función de matplotlib: ```js conteo_categorias = df['columna'].value_counts() plt.bar(conteo_categorias.index, conteo_categorias.values) ```conteo\_categorias = df\['columna'].value\_counts()
Porque se debe balancear o desbalancear mi variable a explicar y cual es el efecto de hacerlo? En q momento lo debo hacer , dado que en la mayoría de casos los datos prácticos son desbalanceados.
Ignoro el por qué, paece que SEKER está convertido en String y no se deja procesar, por lo que yo usé este código p ara generar el plot: import seaborn as sns import matplotlib.pyplot as plt \# Supongamos que 'Class' contiene las categorías que deseas contar \# y 'df\_data' es tu DataFrame sns.countplot(data=df\_data, x='Class') plt.xticks(rotation=45) # Rotar las etiquetas del eje x si es necesario plt.show()

Cuando pongo el siguiente codigo del minuto 7:00

sns.countplot(df.Class)
plt.xticks(rotation=45)
plt.show()

me da el siguiente error:

ValueError: could not convert string to float: 'SEKER'```

Alguien me puede decir porque?

Si te aparece un error en

sns.countplot(df.Class)
plt.xticks(rotation=45)
plt.show()

Debes cambiar el codigo por

sns.countplot(x="Class", data=df )
plt.xticks(rotation=45)
plt.show()

No aparecen los recursos de esta clase.