Однако я получаю следующую ошибку в метрике точности:< /p>
Код: Выделить всё
Precision is ill-defined and being set to 0.0 due to no predicted samples.
Use `zero_division` parameter to control this behavior
Исходный код
Код: Выделить всё
logistic_reg = GridSearchCV(estimator=LogisticRegression(penalty="l1", random_state=42, max_iter=10000), param_grid={
"C": [1e-4, 5e-4, 1e-3, 5e-3, 1e-2, 5e-2, 1e-1, 5e-1, 1, 5, 10, 20],
"solver": ["liblinear", "saga"]
}, scoring=["accuracy", "precision", "recall", "f1"], cv=StratifiedKFold(n_splits=10), refit="accuracy")
logistic_reg_X_train = self.X_train.copy()
logistic_reg_X_train.drop(self.columns_removed, axis=1, inplace=True)
logistic_reg.fit(logistic_reg_X_train, self.y_train)
logistic_reg_results = pd.DataFrame(logistic_reg.cv_results_)
Код: Выделить всё
missing 2 required positional arguments: 'y_true' and 'y_pred'). Опять же, я это понимаю, но два недостающих параметра не определены перед применением метода подгонки.
Как указать параметр 1zero_division
Изменить
Чего я не понимаю, так это того, что я расслаивал данные y в своем методе train_test_split и использовал StratifedKFold в GridSearchCV. Насколько я понимаю, данные поезда/теста будут иметь одинаковую долю разделения значений y, и то же самое должно происходить во время перекрестной проверки. Это означает, что в выборкахgridsearchcv данные должны иметь значения y как 0, так и 1, и, следовательно, точность не может равняться 0 (модель сможет рассчитать TP и FP, поскольку выборочные тестовые данные содержат выборки, где y равно 1). Я не знаю, куда идти дальше.
Подробнее здесь: https://stackoverflow.com/questions/665 ... regression