【发布时间】:2019-02-12 03:03:55
【问题描述】:
我正在使用 KNN 处理 UCI 眼动脑电图数据,并且我将 weights 参数设置为等于 distance。以下是我的代码:
test_scores = []
train_scores = []
for i in range(1,7):
knn = KNeighborsClassifier(i,weights="distance")
knn.fit(X_train,y_train)
test_scores.append(knn.score(X_test,y_test))
train_scores.append(knn.score(X_train,y_train))
现在对于 train 精度,它为所有 k 值提供 1.0 的输出,如下所示:
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
更新 #1 与此示例相同
from sklearn.datasets import load_boston
from sklearn.neighbors import KNeighborsRegressor
from sklearn.preprocessing import scale
boston = load_boston()
y = boston.target
X = scale(boston.data)
print(X.shape)
knn = KNeighborsRegressor(n_neighbors=5, weights='distance')
knn.fit(X[:-100,:], y[:-100])
knn.score(X[:-100,:], y[:-100])
当权重设置为距离时,模型的行为是否直观?任何人都可以演示如何分配此权重并帮助更好地理解工作原理吗?
【问题讨论】:
-
你尝试过其他类型的重量吗?那么准确度有区别吗?考试成绩呢?
-
@VivekKumar 还没有。我试过这个,我的问题是让 1 具有这个权重的训练准确性是否直观?
标签: python machine-learning scikit-learn knn