def use_sbs_with_knn(columns, X_train, X_test, y_train, y_test):
knn = KNeighborsClassifier(n_neighbors=2)
sbs = SBS(knn, k_features=1)
sbs.fit(X_train, y_train)
k_feat = [len(k) for k in sbs.subsets_]
plt.plot(k_feat, sbs.scores_, marker='o')
plt.ylim([0.7, 1.1])
plt.ylabel('Accuracy')
plt.xlabel('Number of features')
plt.grid()
plt.show()
k5 = list(sbs.subsets_[8])
print(columns[1:][k5])
knn.fit(X_train, y_train)
print("Training accuracy: %s" % knn.score(X_train, y_train))
print("Test accuracy: %s" % knn.score(X_test, y_test))
knn.fit(X_train[:, k5], y_train)
print("Training accuracy: %s" % knn.score(X_train[:, k5], y_train))
print("Test accuracy: %s" % knn.score(X_test[:, k5], y_test))
评论列表
文章目录