#python #machine-learning #scikit-learn
Вопрос:
У меня есть образец фрейма данных, который выглядит следующим образом. Я хотел бы построить базовую модель для прогнозирования y_combined
с использованием X=df.filter(regex='x_')
:
df = pd.DataFrame({
'x_1':[0.1,0.2,0.1,0],
'x_2':[0.5,0.1,0.3,0.4],
'x_3':[0.2,0.1,0.6,0.1],
'x_4':[0,0.5,0.2,0.3],
'y_1': [0, 1, 1, 0],
'y_2': [0, 0, 1, 0],
'y_3': [0, 1, 0, 1],
'y_combined': [np.array([0, 0, 0]), np.array([1, 0, 1]),
np.array([1, 1, 0]), np.array([0, 0, 1])]
})
Я новичок в построении базовой модели. Чтобы получить y_predicted
, как я должен указать модель DummyClassifer() с strategy="constant"
помощью ? Или есть другая стратегия, которую я должен использовать?
Например, если y_predicted = [1,1,1]
, то я посмотрю, насколько хорошо работает модель прогнозирования, получив среднюю центроиду между y_combined
и y_predicted
.
Ответ №1:
Я отвечу на ваш вопрос при условии, что вы хотите DummyClassifier
использовать strategy='constant'
параметр «Использование» для построения базовой модели для задачи классификации с несколькими метками, где выходные данные равны y_combined
df
. В этом случае будет работать следующий код:
from sklearn.dummy import DummyClassifier
import numpy as np
import pandas as pd
X = pd.DataFrame({
'x_1': [0.1,0.2,0.1,0],
'x_2': [0.5,0.1,0.3,0.4],
'x_3': [0.2,0.1,0.6,0.1],
'x_4': [0,0.5,0.2,0.3]
})
y = np.array([[0, 0, 0], [1, 0, 1], [1, 1, 0], [0, 0, 1]])
clf = DummyClassifier(strategy='constant', constant=np.array([1, 1, 1]))
clf.fit(X, y)
Обратите внимание, что при использовании strategy='constant'
вы также должны указать постоянное значение, которое должно быть предсказано с помощью constant=...
параметра DummyClassifier
. Вы увидите, что базовая модель теперь всегда будет предсказывать указанное постоянное значение, независимо от входных данных:
y_pred = clf.predict(X)
print(y_pred)
# output
[[1 1 1]
[1 1 1]
[1 1 1]
[1 1 1]]
Поскольку вы также спрашивали о других стратегиях, вы можете в принципе выбрать любую из стратегий, упомянутых в документации DummyClassifier
. Все они имеют общее поведение, как указано в руководстве пользователя:
Обратите внимание, что при использовании всех этих стратегий метод прогнозирования полностью игнорирует входные данные!
Комментарии:
1. Большое спасибо! Поскольку мои фактические данные содержат 48 столбцов Y, я установил константу=np.full( форма=48, значение fill_value=1, dtype=np.int ) Однако это дало мне ошибку «Постоянное целевое значение должно иметь форму (1, 1)».»
2. Нет ничего плохого в том, как вы устанавливаете константу. Сообщение об ошибке , но указывает, что форма вашего массива с целевыми значениями (
y
в примере)(1, 1)
, в отличие от постоянного значения, которое, по-видимому, имеет(48,)
. Вы должны выровнять форму массива с целевыми значениями и формой константы. Тогда это сработает.