повысить ValueError («Неизвестный тип метки:% s»% repr (ys)) ValueError: Неизвестный тип метки: (массив - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь использовать подход машинного обучения, но у меня есть некоторые проблемы.Это мой код:

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 Ответ

0 голосов
/ 19 марта 2019

«ValueError: Неизвестный тип метки:« непрерывный »» означает, что ваши значения «Y» не являются типом данных класса (несколько строк имеют одно и то же целочисленное значение. Каждое целое число представляет класс).Следовательно, вы не можете использовать «DecisionTreeClassifier», «KNeighborsClassifier», «LogisticRegression» (не обманывайте себя по его имени, LogisticRegression - это метод булевой классификации) или любые другие методы машинного обучения классификации.В действительности все ваши значения «Y» разные или «непрерывные» (вероятно, числа с плавающей запятой), поэтому вы можете использовать только машинное обучение регрессии (т. Е. «RandomForestRegressor»).

Вот два решения:

a) Сгруппировать значения Y в ячейки (классы).Примените классификационное моделирование к своим данным.

b) Если вы предпочитаете, чтобы ваши прогнозы имели значения (числа с плавающей запятой), вам необходимо использовать методы регрессионного машинного обучения для прогнозирования значений Y.

ПоКстати, метод оценки «оценка =« точность »» предназначен для классификационного моделирования.

...