#python #machine-learning #scikit-learn #regression #decision-tree
#python #машинное обучение #scikit-learn #регрессия #дерево решений
Вопрос:
Я пытаюсь использовать sci-kit learn для разработки программы машинного обучения, которая предсказывает 9 выходов из 5 входов, но у меня возникают проблемы.
Я приобрел 20 000 экземпляров 5 входных данных с соответствующими 9 выходами для целей обучения. Входные данные представляют измерения производительности усилителя. Выходные данные представляют размеры компонентов, которые дают эти измерения производительности.
Таким образом, одна строка входных переменных X может быть: [ 8430, 6895, 12735, 208929613, 249]
С соответствующими выходными переменными y: [1000, 400, 1000, 2000, 2500, 1000, 80, 1000, 2000]
После импорта всех соответствующих библиотек и присвоения входных данных X и выходных данных y я пытаюсь создать модель следующим образом:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
X_train = X_train.values
X_test = X_test.values
y_train = y_train.values
y_test= y_test.values
model = DecisionTreeRegressor()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
Однако после запуска этого кода я получаю следующую ошибку:
ValueError: multiclass-multioutput is not supported
Но при чтении веб-сайта SKlearn говорится, что деревья решений по своей сути являются многоклассовыми? Как мне поступить, чтобы исправить эту ошибку? Или SKlearn не подходит для такого рода проблем? Должен ли я исследовать, используя вместо этого нейронную сеть?
Комментарии:
1. Где именно? Пожалуйста, обновите свой вопрос с полной трассировкой ошибок. Кроме того, пожалуйста, опубликуйте образец вашего
y
программного обеспечения; регрессия с несколькими выходами действительно поддерживается, см. Регрессию дерева решений с несколькими выходами .
Ответ №1:
Деревья принятия решений являются многоклассовыми, что означает, что они могут иметь дело с данными, в которых разные выборки принадлежат нескольким классам, а не с тем, что каждая выборка принадлежит к разным классам. вы все еще можете реализовать свое собственное дерево решений и адаптировать его к вашей проблеме, выбирая функции при построении вашего дерева относительно среднего прироста информации по различным классам, и это решило бы проблему. Вы также могли бы проще использовать базовое, но разное дерево решений для каждой из разных меток, передавая каждому дереву только 1 метку на образец. Вы также можете адаптировать деревья решений многими другими способами к вашей проблеме или использовать NN, что было бы более естественным, но, вероятно, менее эффективным, если данные хорошо структурированы.