def test_estimator_does_not_support_feature_names(): """SelectFromModel works with estimators that do not support feature_names_in_. Non-regression test for #21949. """ pytest.importorskip("pandas") X, y = datasets.load_iris(as_frame=True, return_X_y=True) all_feature_names = set(X.columns) def importance_getter(estimator): return np.arange(X.shape[1]) selector = SelectFromModel( MinimalClassifier(), importance_getter=importance_getter ).fit(X, y) # selector learns the feature names itself assert_array_equal(selector.feature_names_in_, X.columns) feature_names_out = set(selector.get_feature_names_out()) assert feature_names_out < all_feature_names with pytest.warns(None) as records: selector.transform(X.iloc[1:3]) assert not [w.message for w in records]
def test_minimal_class_implementation_checks(): # Check that third-party library can run tests without inheriting from # BaseEstimator. # FIXME raise SkipTest minimal_estimators = [MinimalTransformer(), MinimalRegressor(), MinimalClassifier()] for estimator in minimal_estimators: check_estimator(estimator)