Резюме: Используйте модель логистики 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, inclf.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 » Доктор Крис Майер Отказ