如何使用 KNN 实现前向选择?

How to implement a Forward Selection using KNN?

我正在尝试使用 Python 中的包装器方法,使用我拥有的数据中的 KNN 实现简单的前向选择。

我的数据:

ID     S_LENGTH     S_WIDTH     P_LENGTH     P_WIDTH     SPECIES
------------------------------------------------------------------
1      3.5          2.5          5.6         1.7        VIRGINICA
2      4.5          5.6          3.4         8.7         SETOSA

这是我定义Xy的地方:

X = df[['S_LENGTH', 'S_WIDTH', 'P_LENGTH', 'P_WIDTH']].values
y = df['SPECIES'].values

这是一个简单的 KNN 模型:

clf = neighbors.KNeighborsClassifier()
clf.fit(X_fs,y)
predictions = clf.predict(X_fs)
metrics.accuracy_score(y, predictions)

因此,我将如何使用前向选择实现 KNN 模型?

谢谢!

not believe that KNN has a features importance内置了,所以你基本上有三个选择。首先,您可以使用特征重要性的模型不可知版本,例如排列重要性。

其次,您可以尝试在每个步骤中一次添加一个特征,然后选择最能提高性能的模型。

第三(与第二密切相关),尝试每一个排列!由于您只有 4 个特征,假设您没有太多数据,您可以尝试所有特征组合。有 4 个模型具有一种特征,6 个(4 选 2)个模型具有两个特征,4 个模型具有三个特征,1 个模型具有全部四个特征。这可能比上面两个想法的计算量要少。

所以像这样:

feat_lists = [
    ['S_LENGTH'], 
    ['S_WIDTH'],
    ...
    ['S_LENGTH', 'S_WIDTH', 'P_LENGTH'],
    ['S_LENGTH', 'S_WIDTH', 'P_WIDTH'],
    ...
    ['S_LENGTH', 'S_WIDTH', 'P_LENGTH', 'P_WIDTH']
]

for feats in feat_lists:
    X = df[feats].values
    y = df['SPECIES'].values

    ...all you other code...
    print(feats)
    print(metrics.accuracy_score(y, predictions))

澄清一下,我假设这实际上不是您的数据,而只是前两行,对吗?如果你只有两行,你有更大的问题:)