Рубрики
Без рубрики

[Исправлено] Неизвестный тип метки: «непрерывный» в Sklearn LogisticRession

Резюме: Используйте модель логистики Sklearn только для задач классификации. Переменная Y представляет собой категорию (например, двоичный [0,1]), не непрерывный (например, плавательные числа 3.4, 7,9). Если переменная Y не категорически (то есть непрерывная), потенциальные исправления следующие. Пересматривать данные. Попробуйте кодировать переменную переменную y на категории (например, используйте препроцессор Labelencoder Sklearn) .re-Изучение … [Исправлено] Неизвестный Тип метки: «Непрерывный» в Sklearn LogisticRession Подробнее »

Автор оригинала: Girish Rao.

Резюме: Используйте модель логистики Sklearn для задач классификации Только Отказ Переменная Y представляет собой категорию (например, двоичный [0,1]), не непрерывный (например, плавательные числа 3.4, 7,9). Если переменная Y не категорически (то есть непрерывная), потенциальные исправления следующие.

  • Пересматривать данные. Попробуйте кодировать переменную непрерывную y на категории (например, используйте препроцессор летакодер Sklearn).
  • Пересматривать модель. Попробуйте использовать другую модель, такую как регресс имеет смысл (например, линейная регрессия).

Примечание : Все приведенные ниже решения были проверены с использованием Python 3.9.0b5.

Постановка проблемы

При использовании Logisticregress на логистике Scikit-Learn Как можно исправить следующую ошибку?

$ python lr1.py
Traceback (most recent call last):
  File ".../SKLearnLogicReg/lr1.py", line 14, in 
    clf.fit(trainingData, trainingScores)
  File ".../lib/python3.9/site-packages/sklearn/linear_model/_logistic.py", line 1347, in fit
    check_classification_targets(y)
  File ".../lib/python3.9/site-packages/sklearn/utils/multiclass.py", line 183, in check_classification_targets
    raise ValueError("Unknown label type: %r" % y_type)
ValueError: Unknown label type: 'continuous'

Задний план

Машинное обучение является одним из самых горячих тем нашего возраста. Различные объекты используют модели обучения машин для выполнения сложных операций на данных. Комплексные операции, такие как …

  • Анализ данных
  • Классификация данных
  • Прогноз данных
  • Экстраполяция данных.

Python’s Scikit – Учите Библиотека – это библиотека обучения машины с открытым исходным кодом. Он поддерживает контролируемое и безоговорочное обучение. Библиотека Scikit-Learn предоставляет отличные инструменты для модели установки, выбора и оценки модели. Он также предоставляет множество полезных утилит для предварительной обработки данных и анализа данных.

Нужно быть осторожен по выбору модели обучения машины. Один также должен быть осторожен, когда кто-то проверяет данные; спросить, что кто-то пытается учиться у него. Этот блог обсуждает логистическую регрессию, но характер ошибки более общего. Это призывает читателя вернуться к основам и ответить на следующие …

  • Что мы хотим учиться на данных? Что мы ищем в этом?
  • Это правильная машина обучения машины, которую мы должны использовать?
  • Являемся ли мы правильно кормить данные модели?
  • Является ли данные в правильном формате для использования с моделью?
  • Вы принимаете достаточно умственных перерывов?
  • Вы накачаете кровь в своем теле? Что растягивается, прогулка, беги, упражнения?
  • Вы питаете свое тело? Еда овощи, фрукты, хорошего качества кофе?

Вот это да!! Ты слишком много болтаешь!! Можете ли вы просто сказать мне ярлык?

Простой способ исправить ошибку – взять перерыв и прогуляться и съесть фрукт.

Хотя эта ошибка расстраивается, она также распространена среди новых учебников машины. Это связано с одним фактом, что Sklearn’s Логистикарессия Класс – «классификатор». То есть используйте Scikit-Learn’s Логистикарессия для Только проблемы классификации Отказ Это означает, что в то время как X переменные могут быть плавать и т. Д., Переменная Y должна быть «категория» Отказ Категория, значение [0,1] или [Да, нет] , [ИСТИНА, ЛОЖЬ] , [Яблоки, апельсины, груши] , и так далее. Переменная Y не может быть непрерывным значением Такие как поплавок (3,5, 7,9, 89,6 и т. Д.).

Давайте посмотрим, как это работает с некоторыми простыми наивными данными. Данные, используемые в примере ниже, не имеют значения, кроме, чтобы проиллюстрировать проблему.

Для этого первого примера мы используем поплавки в качестве целевых векторов (I.E., Y_Variables ). Это вызвало ошибку в Fit () Метод логистической регрессии.

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> ## Import the needed libraries and Modules.
>>> import numpy as np
>>> from sklearn.linear_model import LogisticRegression
>>> 
>>> ## Define some training data. We will call this the X-Variable.
>>> x_variables = np.array([[5.7, 2.5, 7.7],
...                         [8.4, 0.6, 3.6],
...                         [5.3, 4.5, 2.7],
...                         [5.1, 2.4, 6.3]])
>>> 
>>> ## Define the target vector. We will call this the Y-Variable.
>>> ## Note that the values are floats. This will cause the error!!
>>> y_variables = np.array([4.2, 6.8, 3.4, 1.9])
>>> 
>>> ## Define another set of target vectors. Note how these are ints.
>>> ## They are simply rounded versions of the above float numbers.
>>> ## y_variables = np.array([4, 7, 3, 2])
>>> 
>>> ## Define some new, yet unknown data. We will call this the U-Variable.
>>> u_variables  = np.array([[4.8, 6.4, 3.2],
...                          [5.3, 2.3, 7.4]])
>>> 
>>> ## Instantiate the Logistic Regression Machine Learning Model.
>>> lr = LogisticRegression()
>>> 
>>> ## Fit the Model to the Data.  i.e. Make the Model Learn.
>>> lr.fit(x_variables, y_variables)
Traceback (most recent call last):
  File "", line 1, in 
  File "/Users/gsrao/.virtualenvs/Upwork25383745/lib/python3.9/site-packages/sklearn/linear_model/_logistic.py", line 1347, in fit
    check_classification_targets(y)
  File "/Users/gsrao/.virtualenvs/Upwork25383745/lib/python3.9/site-packages/sklearn/utils/multiclass.py", line 183, in check_classification_targets
    raise ValueError("Unknown label type: %r" % y_type)
ValueError: Unknown label type: 'continuous'

Для этого следующего примера мы используем целые числа в качестве целевых векторов (I.e., Y_Variables ). Просто простое изменение !! Все остальное одинаково. Код идет до завершения !!

>>> ## Import the needed libraries and Modules.
>>> import numpy as np
>>> from sklearn.linear_model import LogisticRegression
>>> 
>>> ## Define some training data. We will call this the X-Variable.
>>> x_variables = np.array([[5.7, 2.5, 7.7],
...                         [8.4, 0.6, 3.6],
...                         [5.3, 4.5, 2.7],
...                         [5.1, 2.4, 6.3]])
>>> 
>>> ## Define the target vector. We will call this the Y-Variable.
>>> ## Note that the values are floats. This will cause the error!!
>>> y_variables = np.array([4.2, 6.8, 3.4, 1.9])
>>> 
>>> ## Define another set of target vectors. Note how these are ints.
>>> ## They are simply rounded versions of the above float numbers.
>>> y_variables = np.array([4, 7, 3, 2])
>>> 
>>> ## Define some new, yet unknown data. We will call this the U-Variable.
>>> u_variables  = np.array([[4.8, 6.4, 3.2],
...                          [5.3, 2.3, 7.4]])
>>> 
>>> ## Instantiate the Logistic Regression Machine Learning Model.
>>> lr = LogisticRegression()
>>> 
>>> ## Fit the Model to the Data.  i.e. Make the Model Learn.
>>> lr.fit(x_variables, y_variables)
LogisticRegression()
>>> 
>>> ## Finally Predict the outcome for the Unknown Data!!
>>> print("This is the Prediction for the Unknown Data in u_variables!!")
This is the Prediction for the Unknown Data in u_variables!!
>>> print(lr.predict(u_variables))
[3 4]
>>> 

Это иллюстрирует точку, которая была сделана ранее, « Использовать логистику для задач классификации * Только * » !! Целевой вектор должен быть категоричным, * не * непрерывно !!

Ах !! Я получаю это сейчас!! Что-нибудь еще?

Читатель должен повторно изучить данные, чтобы увидеть, имеет ли смысл использовать модели классификации. Возможно, что данные лучше подаются с регрессиями или моделями кластеризации. Нужно всегда спрашивать …

  • Какой вопрос мы спрашиваем о данных?
  • Что мы ищем в данных?
  • Что мы пытаемся учиться на данных?

Вот простой пример, взятый из « Python One-Liners » книги Доктор Крис Майер Отказ Пример коррелирует расход сигареты с вероятностью рака легких. Это иллюстрирует, как Логистика Регрессия Хорошо работает с категорическими данными.

>>> ## Import the needed libraries and Modules.
>>> import numpy as np
>>> from sklearn.linear_model import LogisticRegression
>>> 
>>> ## Define some training data. We will call this the X-Variable.
>>> ## This array contains the number of cigarettes smoked in a day.
>>> x_variables = np.array([[0], [10], [15], [60], [90]])
>>> 
>>> ## Define the target vector. We will call this the Y-Variable.
>>> ## This array contains the outcome i.e. if patient has lung-Cancer.
>>> y_variables = np.array(["No", "No", "Yes", "Yes", "Yes"])
>>> 
>>> ## Define some new, yet unknown data. We will call this the U-Variable.
>>> ## This correlates to the number of cigarettes smoked in a day. Given
>>> ## this new data, the model will try to predict the outcome.
>>> u_variables  = np.array([[2], [12], [13], [40], [90]])
>>> 
>>> ## Instantiate the Logistic Regression Machine Learning Model.
>>> lr = LogisticRegression()
>>> ## Fit the Model to the Data.  i.e. Make the Model Learn.
>>> lr.fit(x_variables, y_variables)
LogisticRegression()
>>> 
>>> ## Finally Predict the outcome for the Unknown Data!!
>>> print("This is the Prediction for the Unknown Data in u_variables!!")
This is the Prediction for the Unknown Data in u_variables!!
>>> print(lr.predict(u_variables))
['No' 'No' 'Yes' 'Yes' 'Yes']
>>> 
>>> ## Based on the Training Data (i.e. x_variables and y_variables),
>>> ## SKLearn decided the change-over from "No" lung-cancer to "Yes"
>>> ## lung-cancer is somewhere around 12 to 13 cigarettes smoked per
>>> ## day. The predict_proba() method shows the probability values 
>>> ## for "No" v/s "Yes" (i.e. target vector Y) for various values of
>>> ## X (i.e. Number of Cigarettes smoked per day).
>>> for i in range(20):
...   print("x=" + str(i) + " --> " + str(lr.predict_proba([[i]])))
... 
x=0 --> [[9.99870972e-01 1.29027714e-04]]
x=1 --> [[9.99735913e-01 2.64086966e-04]]
x=2 --> [[9.99459557e-01 5.40442542e-04]]
x=3 --> [[0.99889433 0.00110567]]
x=4 --> [[0.99773928 0.00226072]]
x=5 --> [[0.99538318 0.00461682]]
x=6 --> [[0.99059474 0.00940526]]
x=7 --> [[0.98093496 0.01906504]]
x=8 --> [[0.96173722 0.03826278]]
x=9 --> [[0.92469221 0.07530779]]
x=10 --> [[0.85710998 0.14289002]]
x=11 --> [[0.74556647 0.25443353]]
x=12 --> [[0.58873015 0.41126985]]
x=13 --> [[0.4115242 0.5884758]]
x=14 --> [[0.25463283 0.74536717]]
x=15 --> [[0.14301871 0.85698129]]
x=16 --> [[0.07538097 0.92461903]]
x=17 --> [[0.03830145 0.96169855]]
x=18 --> [[0.01908469 0.98091531]]
x=19 --> [[0.00941505 0.99058495]]

Вывод

Так есть, у вас есть !! Чтобы повторить …

Использовать Логистика Sklearn Модель для Классификация Проблемы * Только * y., переменная Y – это категория (например, двоичный [0,1]), * не непрерывный * (например, плавательные числа 3.4, 7,9).

Если переменная Y не категорична (то есть непрерывная), потенциальные исправления являются следующими.

  • Пересматривать данные. Может быть, кодируют переменную непрерывную переменную на категории (например, использование kklearn’s Labelencoder Preprocessor).
  • Пересматривать модель. Может быть, другая модель, такая как регресс, имеет смысл (например, линейная регрессия).

Финктерская академия

Этот блог был доставлен вам Гириша Рао , студент Финктерская академия Отказ Вы можете найти его Профиль намного здесь Отказ

Справка

Все исследования для этой статьи в блоге было сделано с использованием Python Documents , Поисковая система Google и общая база знаний Финктерская академия , Scikit – Учите и Переполнение стека Общины.

Пример лункового рака был адаптирован от « Python One-listers » Доктор Крис Майер Отказ