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