目录
考虑距离作为投票权重的KNN---超参数weights=[uniform, distance]
曼哈顿距离和欧氏距离---超参数p,定义了计算距离的公式; 其中, p=1是曼哈顿,p=2是欧式
超参数和模型参数
超参数: 在算法运行前需要决定的参数
模型参数: 算法过程中学习的参数
KNN没有模型参数
k是KNN的超参数
寻找好的超参数: 领域知识, 经验数值, 实验搜索(选实验效果最好的)
寻找最好的k
设置一个超参数的范围
注意如果超参数取在了范围的边界,应该再扩大边界进行搜索
from sklearn.neighbors import KNeighborsClassifier
from sklearn import datasets
digits = datasets.load_digits()
X = digits.data
y = digits.target
print(X.shape)
print(y.shape)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)
from sklearn.neighbors import KNeighborsClassifier
best_score = 0.0
best_k = -1
for k in range(1, 11):
KNN_classifier = KNeighborsClassifier(n_neighbors=k)
KNN_classifier.fit(X_train, y_train)
score = KNN_classifier.score(X_test, y_test)
if score > best_score:
best_score = score
best_k = k
print(best_k)
print(best_score)
考虑距离作为投票权重的KNN
也可以解决平票的问题