Python ValueError: Unbekannt Labeltyp: 'continuous'

Salman Mehmood 21 Juni 2023
  1. Ursachen für ValueError: Unknown label type: 'continuous' in Python
  2. Verwenden Sie die Funktion LabelEncoder() von Scikit, um ValueError: Unknown label type: 'continuous' zu beheben
  3. Werten Sie die zu behebenden Daten aus ValueError: Unknown label type: 'continuous'
Python ValueError: Unbekannt Labeltyp: 'continuous'

Dieser Artikel befasst sich mit den Ursachen und Lösungen für den Fehler ValueError: Unknown label type: 'continuous' in Python.

Ursachen für ValueError: Unknown label type: 'continuous' in Python

Der Python-Interpreter gibt diesen Fehler aus, wenn wir versuchen, den importierten sklearn-Klassifikator für die kontinuierliche Zielvariable zu trainieren.

Klassifikatoren wie K Nearest Neighbor, Entscheidungsbaum, logistische Regression usw. sagen die Klasse der Eingabevariablen voraus. Klassenvariablen haben diskrete oder kategoriale Formen wie 0 oder 1, Wahr oder Falsch und Bestanden oder Nicht bestanden.

Wenn der von sklearn importierte Klassifizierungsalgorithmus, d. h. die logistische Regression, auf der kontinuierlichen Zielvariablen trainiert wird, wird ValueError: Unknown label type:'continuous' ausgegeben.

Code:

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)

Ausgang:

---------------------------------------------------------------------------
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'

Float-Werte als Ziellabel y werden an den Klassifikator der logistischen Regression übergeben, der kategoriale oder diskrete Klassenlabels akzeptiert. Infolgedessen wirft der Code einen Fehler bei der Funktion lr.fit() und das Modell weigert sich, mit den angegebenen Daten zu trainieren.

Verwenden Sie die Funktion LabelEncoder() von Scikit, um ValueError: Unknown label type: 'continuous' zu beheben

Die Funktion LabelEncoder() kodiert die kontinuierlichen Zielvariablen in diskrete oder kategoriale Labels.

Der Klassifikator übernimmt nun diese Werte. Der Klassifikator trainiert mit den gegebenen Daten und sagt die Ausgabeklasse voraus.

Code:

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)

Ausgang:

[1 0]
[1 0]

Float-Werte der Zielvariable target_var werden mit der Funktion LabelEncoder() in diskrete oder kategoriale Werte codiert, d. h. encoded_target-Wert.

Der Klassifikator übernimmt nun diese Werte. Der Klassifikator ist darauf trainiert, die Klasse neuer Daten vorherzusagen, bezeichnet mit predict_var.

Werten Sie die zu behebenden Daten aus ValueError: Unknown label type: 'continuous'

Manchmal müssen die Daten sorgfältig untersucht werden, um festzustellen, ob es sich um eine Regression oder eine Klassifizierung handelt. Einige Ausgabevariablen, wie z. B. der Hauspreis, können nicht klassifiziert oder diskretisiert werden.

In solchen Fällen geht es um Regression. Da das Regressionsmodell kontinuierliche Zielvariablen akzeptiert, muss die Zielvariable nicht codiert werden.

Code:

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)

Ausgang:

[ 1.6        -0.05263158]

Float-Werte in der Ausgangsvariable target_var zeigen, dass das Problem die Regression ist. Das Modell muss eher den Wert der Eingabevariablen als ihre Klasse vorhersagen.

Ein lineares Regressionsmodell wird trainiert und sagt den Ergebniswert neuer Daten voraus.

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

Verwandter Artikel - Python Error