def test_selects_all():
    from sklearn.neighbors import KNeighborsClassifier
    from mlxtend.data import wine_data

    X, y = wine_data()
    knn = KNeighborsClassifier(n_neighbors=4)
    sbs = SBS(knn,
              k_features=13,
              scoring='accuracy',
              cv=3,
              print_progress=False)
    sbs.fit(X, y)
    assert (len(sbs.indices_) == 13)
def test_Iris():
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.datasets import load_iris

    iris = load_iris()
    X = iris.data
    y = iris.target

    knn = KNeighborsClassifier(n_neighbors=4)

    sbs = SBS(knn,
              k_features=2,
              scoring='accuracy',
              cv=5,
              print_progress=False)
    sbs.fit(X, y)

    assert (sbs.indices_ == (0, 3))
    assert (round(sbs.k_score_, 2) == 0.96)
    import SequentialFeatureSelector as SBS
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt

#%% load sample data
iris = load_iris()
x = pd.DataFrame(iris.data, \
    columns=iris.feature_names)

#%% create a logistic regression object
lr = LogisticRegression()

#%% create an SBS object
sbs = SBS(estimator=lr,
          k_features=(1, 3),
          forward=False,
          scoring='accuracy',
          cv=5)

#%% fit the model
sbs = sbs.fit(x, iris.target)

#%% show the selected features
sbs.k_feature_names_
# console output:
# ('sepal length (cm)', 'petal length (cm)',
# 'petal width (cm)')

#%% show a full report on the feature selection
sbs_results = pd.DataFrame(sbs.get_metric_dict()).\
    T. \