我试图调优kNN模型的“kNN”,andI有以下问题:
基于平均交叉验证得分,最优的kNN模型应该是有10个邻域的模型。
另一方面,当我绘制“分数与邻居”图时,我发现有些模型的训练和测试数据之间的分数距离要小得多(例如,有20个邻居的模型)。
我对ML还不熟悉,这对我来说还是很混乱的。但是我应该坚持10个邻居的模式,还是20个邻居的模式更好?我该怎么决定?任何帮助都是非常感谢的。
这是我的代码和图表:
best_score = 0
neighbors = np.arange(1,31)
all_train_scores = []
all_test_scores = []
for n_neighbors in neighbors :
reg = KNeighborsRegressor(n_neighbors = n_neighbors, metric = 'manhattan')
score = cross_val_score(reg, X_train, y_train, cv = 5)
score = np.mean(score)
if score > best_score :
best_score = score
optimal_choice = {'n_neighbors' : n_neighbors}
reg.fit(X_train, y_train)
train_score = reg.score(X_train, y_train)
test_score = reg.score(X_test, y_test)
all_train_scores = np.append(all_train_scores, train_score)
all_test_scores = np.append(all_test_scores, test_score)
发布于 2019-12-17 23:09:54
这取决于几件事,但其中一个重要的是,有多大是你的背景。
请注意,R平方的差别是0.01,所以如果数据集很小--抽取20个样本--确定类的成本可能会很高,另一方面,如果您能够负担得起,那么10个样本可能很少能确保类的成员资格。
根据您的下一个用法,我将在数据大小中进行权衡。
https://datascience.stackexchange.com/questions/65029
复制相似问题