Python ValueError: Desconocido Tipo de etiqueta: 'continuo'

Salman Mehmood 21 junio 2023
  1. Causas de ValueError: Tipo de etiqueta desconocido: 'continuo' en Python
  2. Utilice la función LabelEncoder() de Scikit para corregir ValueError: tipo de etiqueta desconocido: 'continuo'
  3. Evalúe los datos para corregir ValueError: tipo de etiqueta desconocido: 'continuo'
Python ValueError: Desconocido Tipo de etiqueta: 'continuo'

Este artículo abordará las causas y soluciones del error ValueError: Unknown label type: 'continuous' en Python.

Causas de ValueError: Tipo de etiqueta desconocido: 'continuo' en Python

El intérprete de Python arroja este error cuando intentamos entrenar el clasificador importado de sklearn en la variable de destino continua.

Clasificadores como K Vecino más cercano, Árbol de decisión, Regresión logística, etc., predicen la clase de variables de entrada. Las variables de clase están en formas discretas o categóricas tales como “0 o 1”, “Verdadero o Falso” y “Aprobado o Reprobado”.

Si sklearn importó el algoritmo de clasificación, es decir, la regresión logística se entrena en la variable objetivo continua, arroja ValueError: Unknown label type:'continuous'.

Código:

import numpy as np
from sklearn.linear_model import LogisticRegression

input_var = np.array([[1.1, 1.2, 1.5, 1.6], [0.5, 0.9, 0.6, 0.8]])
target_var = np.array([1.4, 0.4])
classifier_logistic_regression = LogisticRegression()
classifier_logistic_regression.fit(input_var, target_var)

Producción :

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [6], in <module>
----> 1 lr.fit(x,y)

File c:\users\hp 840 g3\appdata\local\programs\python\python39\lib\site-packages\sklearn\linear_model\_logistic.py:1516, in LogisticRegression.fit(self, X, y, sample_weight)
   1506     _dtype = [np.float64, np.float32]
   1508 X, y = self._validate_data(
   1509     X,
   1510     y,
   (...)
   1514     accept_large_sparse=solver not in ["liblinear", "sag", "saga"],
   1515 )
-> 1516 check_classification_targets(y)
   1517 self.classes_ = np.unique(y)
   1519 multi_class = _check_multi_class(self.multi_class, solver, len(self.classes_))

File c:\users\hp 840 g3\appdata\local\programs\python\python39\lib\site-packages\sklearn\utils\multiclass.py:197, in check_classification_targets(y)
    189 y_type = type_of_target(y)
    190 if y_type not in [
    191     "binary",
    192     "multiclass",
   (...)
    195     "multilabel-sequences",
    196 ]:
--> 197     raise ValueError("Unknown label type: %r" % y_type)

ValueError: Unknown label type: 'continuous'

Los valores flotantes como etiqueta de destino y se pasan al clasificador de regresión logística, que acepta etiquetas de clase categóricas o discretas. Como resultado, el código arroja un error en la función lr.fit() y el modelo se niega a entrenar con los datos proporcionados.

Utilice la función LabelEncoder() de Scikit para corregir ValueError: tipo de etiqueta desconocido: 'continuo'

La función LabelEncoder() codifica las variables objetivo continuas en etiquetas discretas o categóricas.

El clasificador ahora acepta estos valores. El clasificador se entrena con los datos proporcionados y predice la clase de salida.

Código:

import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn import preprocessing
from sklearn import utils

input_var = np.array([[1.1, 1.2, 1.5, 1.6], [0.5, 0.9, 0.6, 0.8]])
target_var = np.array([1.4, 0.4])
predict_var = np.array([[1.3, 1.7, 1.8, 1.4], [0.2, 0.6, 0.3, 0.4]])
encoded = preprocessing.LabelEncoder()
encoded_target = encoded.fit_transform(target_var)
print(encoded_target)
classifier_logistic_regression = LogisticRegression()
classifier_logistic_regression.fit(input_var, encoded_target)
predict = classifier_logistic_regression.predict(predict_var)
print(predict)

Producción :

[1 0]
[1 0]

Los valores flotantes de la variable de destino target_var se codifican en valores discretos o categóricos, es decir, encoded_target mediante la función LabelEncoder().

El clasificador ahora acepta estos valores. El clasificador está entrenado para predecir la clase de nuevos datos, denotada por predict_var.

Evalúe los datos para corregir ValueError: tipo de etiqueta desconocido: 'continuo'

A veces, los datos deben examinarse cuidadosamente para determinar si el problema es de regresión o de clasificación. Algunas variables de producción, como el precio de la vivienda, no pueden clasificarse ni discretizarse.

En tales casos, el problema es uno de regresión. Dado que el modelo de regresión acepta variables objetivo continuas, no es necesario codificar la variable objetivo.

Código:

import numpy as np
from sklearn.linear_model import LinearRegression

input_var = np.array([[1.1, 1.2, 1.5, 1.6], [0.5, 0.9, 0.6, 0.8]])
target_var = np.array([1.4, 0.4])
predict_var = np.array([[1.3, 1.7, 1.8, 1.4], [0.2, 0.6, 0.3, 0.4]])
linear_Regressor_model = LinearRegression()
linear_Regressor_model.fit(input_var, target_var)
predict = linear_Regressor_model.predict(predict_var)
print(predict)

Producción :

[ 1.6        -0.05263158]

Los valores flotantes en la variable de salida target_var muestran que el problema es la regresión. El modelo debe predecir el valor de la variable de entrada en lugar de su clase.

Se entrena un modelo de regresión lineal y predice el valor de resultado de los nuevos datos.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Python Error