Как обучить модель ML для получения более одного возможного вывода?

#python #machine-learning #jupyter-notebook #classification

#python #машинное обучение #jupyter-ноутбук #классификация

Вопрос:

Я пытался найти ответ на этот вопрос, но не могу получить ответ. Возможно ли иметь несколько возможных выходных данных с использованием алгоритма классификации в python?

Я работал над базой данных сельскохозяйственных культур, где модель будет предсказывать, какая культура будет подходящей для земли, используя такие входные данные, как pH, тип почвы, температура и влажность. в этом случае несколько культур могут иметь одинаковый pH и тип почвы. итак, я хочу, чтобы моя модель возвращала все возможные результаты.

Итак, не могли бы вы сказать мне, возможно ли это? И если да, то как мне получить результат?

   Temp Humidity Moisture    Stype   suitable-crop      Ph
0   26    52        38     Sandy      Maize         Slightly acidic
1   32    62        34      Red     Ground Nuts     Neutral
2   29    52        45     Loamy     Sugarcane      Slightly alkaline
3   34    65        62     Black      Cotton        Moderately acidic
4   26    50        35     Sandy      Barley        slightly acidic
  

Приведенные выше примеры данных. Целью здесь является «подходящая обрезка». Как вы можете видеть, и кукуруза, и ячмень имеют почти одинаковые требования к температуре, влажности, типу почвы (Stype) и ph. Я использовал алгоритм случайного леса для прогнозирования результата.

 Enter the soil type:sandy
Enter the pH type:slightly acidic
Enter temperature:27
Eneter Humidity:50
Enter moisture:37
  
 result = model.predict([[Stype1, pH1, Temperature, Humidity, Moisture]])
print(result)

['Sugarcane'] 
  

Это был результат. Я хочу, чтобы моя модель возвращала все возможные подходящие выходные данные, такие как ячмень и кукуруза.

Комментарии:

1. Можете ли вы поделиться некоторыми примерами данных? Как выглядят ваши целевые данные? Урожайность различных растений, выращенных в заданных условиях? Похоже, вас интересует классификация с несколькими метками, но более подробная информация может помочь найти лучшее решение

Ответ №1:

Да, это возможно. В руководстве пользователя scikit-learn есть хорошее обсуждение (в контексте деревьев решений, но следующая цитата применима в более общем плане):

Проблема с несколькими выходами — это проблема контролируемого обучения с несколькими выходами для прогнозирования, то есть когда Y представляет собой массив 2d размера [n_samples, n_outputs] .

Когда между выводами нет корреляции, очень простой способ решить проблему такого рода — построить n независимых моделей, то есть по одной для каждого вывода, а затем использовать эти модели для независимого прогнозирования каждого из n выходов. Однако, поскольку вполне вероятно, что выходные значения, относящиеся к одному и тому же входу, сами коррелируют, часто лучшим способом является создание единой модели, способной предсказывать одновременно все n выходных данных. Во-первых, это требует меньшего времени обучения, поскольку создается только один оценщик. Во-вторых, точность обобщения результирующей оценки часто может быть увеличена.

Выполним ли второй подход, может зависеть от используемого вами алгоритма классификации. Те алгоритмы, которые изначально поддерживают классификацию с несколькими выходами, обычно реализуют ее в scikit-learn. Опять же, руководство пользователя — хорошее место для начала.