raise ValueError("Unknown label type: %s" % repr(ys)) ValueError: Unknown label type: (arr

Posted

技术标签:

【中文标题】raise ValueError("Unknown label type: %s" % repr(ys)) ValueError: Unknown label type: (array【英文标题】: 【发布时间】:2019-03-21 18:23:45 【问题描述】:

我正在尝试使用机器学习方法,但遇到了一些问题。这是我的代码:

import sys
import scipy
import numpy
import matplotlib
import pandas
import sklearn

from pandas.plotting import scatter_matrix
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

dataset = pandas.read_csv('Libro111.csv')
array = numpy.asarray(dataset,dtype=numpy.float64) #all values are float64

X = array[:,1:49]
Y = array[:,0]
validation_size = 0.2
seed = 7.0
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)

scoring = 'accuracy'
models = []
models.append(('LR', LogisticRegression()))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC()))
results = []
names = []
for name, model in models:
    kfold = model_selection.KFold(n_splits=10, random_state=seed)
    cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)

然后我得到两个不同的错误。

对于逻辑回归:

File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\multiclass.py", line 172, in check_classification_targets
    raise ValueError("Unknown label type: %r" % y_type)

ValueError: Unknown label type: 'continuous'

我找到了一个有同样问题的人,但我还无法解决..

并且(最重要的):

File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\multiclass.py", line 97, in unique_labels
    raise ValueError("Unknown label type: %s" % repr(ys))

ValueError: Unknown label type: (array([ 0.5,  0. ,  1. ,  1. ,  0.5,  0.5,  1. ,  0.5,  0. ,  0.5,  1. ,
        0. ,  0. ,  0. ,  1. ,  1......

在这两种情况下,当我执行“cv_result”行时都会出现错误......所以,我希望你能帮助我......

【问题讨论】:

【参考方案1】:

“ValueError: Unknown label type: 'continuous'”表示您的“Y”值不是数据的类类型(多行共享相同的整数值。每个整数代表一个类)。因此,您不能使用“DecisionTreeClassifier”、“KNeighborsClassifier”、“LogisticRegression”(不要被它的名字所迷惑,LogisticRegression 是一种布尔分类方法)或任何其他分类机器学习方法。实际上,您的“Y”值都是不同的或“连续的”(可能是浮点数),因此您只能使用回归机器学习(即“RandomForestRegressor”)。

这里有两种解决方案:

a) 将 Y 值分组到 bin(类)中。将分类建模应用于您的数据。

b) 如果您希望您的预测有值(浮点数),您需要使用回归机器学习方法来预测 Y 值。

顺便说一下,“scoring = 'accuracy'”评估方法是用于分类建模的。

【讨论】:

以上是关于raise ValueError("Unknown label type: %s" % repr(ys)) ValueError: Unknown label type: (arr的主要内容,如果未能解决你的问题,请参考以下文章

LSTM调用tensorflow提示 raise ValueError("Ambiguous dimension: %s" % value),怎么解决?

python Python:Exception,Raise,ZeroDivisionError,TypeError,ValueError

raise ValueError(“{0} format is not supported“.format(y_type))ValueError: continuous format

raise ValueError(“{0} format is not supported“.format(y_type))ValueError: continuous format

raise ValueError(err) - 在 Python 中使用 concurrent.future 实现多线程

oracle中raise_application_error自定义错误。