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

2024-03-28 12:00:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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模型

谢谢


Tags: 数据方法模型iddfwidthfslength
1条回答
网友
1楼 · 发布于 2024-03-28 12:00:35

我有内置的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))

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

相关问题 更多 >