code: def test_knn_wo_cv_with_feature_groups_string():
      iris = load_iris()
      X = iris.data
      df_X = pd.DataFrame(
          X,
          columns=[
              "sepal length",
              "sepal width",
              "petal length",
              "petal width",
          ],
      )
      y = iris.target
      knn = KNeighborsClassifier(n_neighbors=4)
      efs1 = EFS(
          knn,
          min_features=2,
          max_features=2,
          scoring="accuracy",
          cv=0,
          print_progress=False,
          feature_groups=[
              ["sepal length"],
              ["sepal width", "petal length"],
              ["petal width"],
          ],
      )
      efs1 = efs1.fit(df_X, y)
      expect = {
          0: {
              "feature_idx": (0, 1, 2),
              "feature_names": (
                  "sepal length",
                  "sepal width",
                  "petal length",
              ),
              "avg_score": 0.95999999999999996,
              "cv_scores": np.array([0.96]),
          },
          1: {
              "feature_idx": (0, 3),
              "feature_names": ("sepal length", "petal width"),
              "avg_score": 0.96666666666666667,
              "cv_scores": np.array([0.96666667]),
          },
          2: {
              "feature_idx": (1, 2, 3),
              "feature_names": (
                  "sepal width",
                  "petal length",
                  "petal width",
              ),
              "avg_score": 0.97333333333333338,
              "cv_scores": np.array([0.97333333]),
          },
      }
      dict_compare_utility(d1=expect, d2=efs1.subsets_)
  
imports: import numpy
  import pandas
  from numpy.testing import assert_almost_equal
  from packaging.version import Version
  from sklearn import __version__
  from sklearn.datasets import load_iris
  from sklearn.ensemble import RandomForestClassifier
  from sklearn.linear_model import LinearRegression
  from sklearn.model_selection import GroupKFold
  from sklearn.neighbors import KNeighborsClassifier
  from mlxtend.classifier import SoftmaxRegression
  from mlxtend.data import boston_housing_data
  from mlxtend.feature_selection import ExhaustiveFeatureSelector
  from mlxtend.utils import assert_raises
label_desc: Use image node_id 18 for calling a global function with example usage: test_knn_wo_cv_with_feature_groups_string() without return types