如何使用 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
这是我定义X
和y
的地方:
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))
澄清一下,我假设这实际上不是您的数据,而只是前两行,对吗?如果你只有两行,你有更大的问题:)
我正在尝试使用 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
这是我定义X
和y
的地方:
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))
澄清一下,我假设这实际上不是您的数据,而只是前两行,对吗?如果你只有两行,你有更大的问题:)