如何修复: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 。
如何修复错误
解决此错误的方法是简单地使用sklearn的LabelEncoder()函数将响应变量的连续值转换为分类值:
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”不可调用