Как исправить: valueerror: неизвестный тип метки: «непрерывный».
Распространенная ошибка, с которой вы можете столкнуться в Python:
ValueError : Unknown label type: 'continuous'
Эта ошибка обычно возникает, когда вы пытаетесь использовать sklearn для соответствия модели классификации , такой как логистическая регрессия , и значения, которые вы используете для переменной ответа, являются непрерывными, а не категориальными.
В следующем примере показано, как использовать этот синтаксис на практике.
Как воспроизвести ошибку
Предположим, мы пытаемся использовать следующий код для соответствия модели логистической регрессии:
import numpy as np
from sklearn. linear_model import LogisticRegression
#define values for predictor and response variables
x = np. array ([[2, 2, 3], [3, 4, 3], [5, 6, 6], [7, 5, 5]])
y = np. array ([0, 1.02, 1.02, 0])
#attempt to fit logistic regression model
classifier = LogisticRegression()
classify. fit (x,y)
ValueError : Unknown label type: 'continuous'
Мы получаем ошибку, потому что в настоящее время значения нашей переменной ответа являются непрерывными.
Напомним, что модель логистической регрессии требует, чтобы значения переменной ответа были категориальными , чтобы:
- 0 или 1
- «Да или нет»
- «Успех или провал»
В настоящее время наша переменная ответа содержит непрерывные значения, такие как 0 и 1,02 .
Как исправить ошибку
Способ устранения этой ошибки — просто преобразовать непрерывные значения переменной ответа в категориальные значения с помощью функции LabelEncoder() sklearn :
from sklearn import preprocessing
from sklearn import utils
#convert y values to categorical values
lab = preprocessing. LabelEncoder ()
y_transformed = lab. fit_transform (y)
#view values transformed
print (y_transformed)
[0 1 1 0]
Каждое из исходных значений теперь кодируется как 0 или 1 .
Теперь мы можем адаптировать модель логистической регрессии:
#fit logistic regression model
classifier = LogisticRegression()
classify. fit (x,y_transformed)
На этот раз мы не получаем никаких ошибок, поскольку значения ответа модели являются категориальными.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить: ValueError: индекс содержит повторяющиеся записи, его форму невозможно изменить.
Как исправить: Ошибка типа: ожидаемый строковый или байтовый объект
Как исправить: Ошибка типа: объект «numpy.float64» не может быть вызван