Я пытаюсь использовать HalvingGridSearch, чтобы найти лучшую модель DecisionTree. Моя модель выполняет прогнозирование по нескольким меткам на одном примере, она обучается на пакете данных размером (n_samples x n_features=9418) и имеет выходные данные размера (n_samples x n_output_features=281). Выходные метки содержат несколько классов для данного примера и используют горячее кодирование, поэтому вектор имеет следующую форму: [0,0,1,0,1,...,1].
tree_classifier = DecisionTreeClassifier(random_state=42)
train_split = int(tree_train_fraction * len(labels))
tree_inputs_train = tree_inputs[:train_split]
tree_inputs_eval = tree_inputs[train_split:]
labels_train = labels[:train_split]
labels_eval = labels[train_split:]
param_grid = {
'max_depth': [ 2, 4, 6, 8, None],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 3, 4]
}
search = HalvingGridSearchCV(
estimator = tree_classifier,
param_grid = param_grid,
factor = 2, # ogni iterazione dimezza il numero di candidati
resource = 'n_samples',
max_resources = 'auto',
scoring = 'f1_micro',
random_state = 42
)
search.fit(tree_inputs_train, labels_train)
tree_classifier = search.best_estimator_
при попытке подогнать модели возвращается следующая ошибка:
ValueError: y должен быть массивом 1d, вместо этого получен массив формы (154, 281).
Я пробовал подогнать те же модели с помощью GridSearchCV, и он не возвращает эту ошибку. Возможно ли, что в реализации HalvingGridSearchCV есть ошибка?
полная трассировка ошибок:
Traceback (most recent call last):
File "/home/gbenanti/Tesi_Benanti/tesi-magistrale-marchetti/DoctorXAI/statistics.py", line 828, in
fidelity_synth, hit_synth, fidelity_synth_variance, hit_synth_variance = main(interval, ontological_perturbation, generative_perturbation)
File "/home/gbenanti/Tesi_Benanti/tesi-magistrale-marchetti/DoctorXAI/statistics.py", line 801, in main
tree, tree_inputs_encoded, model_labels_encoded = explain_label(synt_neigh_icd, synt_neigh_counts, neigh_labels_onehot, max_icd_id, tree_train_fraction,
File "/home/gbenanti/Tesi_Benanti/tesi-magistrale-marchetti/DoctorXAI/statistics.py", line 232, in explain_label
search.fit(tree_inputs_train, labels_train)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/base.py", line 1389, in wrapper
return fit_method(estimator, *args, **kwargs)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/model_selection/_search_successive_halving.py", line 247, in fit
self._check_input_parameters(
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/model_selection/_search_successive_halving.py", line 164, in _check_input_parameters
y = validate_data(self, X="no_validation", y=y)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/utils/validation.py", line 2946, in validate_data
out = _check_y(y, **check_params)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/utils/validation.py", line 1408, in _check_y
y = column_or_1d(y, warn=True)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/utils/validation.py", line 1485, in column_or_1d
raise ValueError(
ValueError: y should be a 1d array, got an array of shape (153, 281) instead.
Подробнее здесь: https://stackoverflow.com/questions/795 ... classifier
HalvingGridSearchCV не может соответствовать нескольким меткам DecisionTreeClassifier ⇐ Python
Программы на Python
1763283867
Anonymous
Я пытаюсь использовать HalvingGridSearch, чтобы найти лучшую модель DecisionTree. Моя модель выполняет прогнозирование по нескольким меткам на одном примере, она обучается на пакете данных размером (n_samples x n_features=9418) и имеет выходные данные размера (n_samples x n_output_features=281). Выходные метки содержат несколько классов для данного примера и используют горячее кодирование, поэтому вектор имеет следующую форму: [0,0,1,0,1,...,1].
tree_classifier = DecisionTreeClassifier(random_state=42)
train_split = int(tree_train_fraction * len(labels))
tree_inputs_train = tree_inputs[:train_split]
tree_inputs_eval = tree_inputs[train_split:]
labels_train = labels[:train_split]
labels_eval = labels[train_split:]
param_grid = {
'max_depth': [ 2, 4, 6, 8, None],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 3, 4]
}
search = HalvingGridSearchCV(
estimator = tree_classifier,
param_grid = param_grid,
factor = 2, # ogni iterazione dimezza il numero di candidati
resource = 'n_samples',
max_resources = 'auto',
scoring = 'f1_micro',
random_state = 42
)
search.fit(tree_inputs_train, labels_train)
tree_classifier = search.best_estimator_
при попытке подогнать модели возвращается следующая ошибка:
ValueError: y должен быть массивом 1d, вместо этого получен массив формы (154, 281).
Я пробовал подогнать те же модели с помощью GridSearchCV, и он не возвращает эту ошибку. Возможно ли, что в реализации HalvingGridSearchCV есть ошибка?
полная трассировка ошибок:
Traceback (most recent call last):
File "/home/gbenanti/Tesi_Benanti/tesi-magistrale-marchetti/DoctorXAI/statistics.py", line 828, in
fidelity_synth, hit_synth, fidelity_synth_variance, hit_synth_variance = main(interval, ontological_perturbation, generative_perturbation)
File "/home/gbenanti/Tesi_Benanti/tesi-magistrale-marchetti/DoctorXAI/statistics.py", line 801, in main
tree, tree_inputs_encoded, model_labels_encoded = explain_label(synt_neigh_icd, synt_neigh_counts, neigh_labels_onehot, max_icd_id, tree_train_fraction,
File "/home/gbenanti/Tesi_Benanti/tesi-magistrale-marchetti/DoctorXAI/statistics.py", line 232, in explain_label
search.fit(tree_inputs_train, labels_train)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/base.py", line 1389, in wrapper
return fit_method(estimator, *args, **kwargs)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/model_selection/_search_successive_halving.py", line 247, in fit
self._check_input_parameters(
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/model_selection/_search_successive_halving.py", line 164, in _check_input_parameters
y = validate_data(self, X="no_validation", y=y)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/utils/validation.py", line 2946, in validate_data
out = _check_y(y, **check_params)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/utils/validation.py", line 1408, in _check_y
y = column_or_1d(y, warn=True)
File "/home/gbenanti/.venv/lib/python3.10/site-packages/sklearn/utils/validation.py", line 1485, in column_or_1d
raise ValueError(
ValueError: y should be a 1d array, got an array of shape (153, 281) instead.
Подробнее здесь: [url]https://stackoverflow.com/questions/79592409/halvinggridsearchcv-cannot-fit-multi-label-decisiontreeclassifier[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия