Python 在验证集上手动调整超参数
我对是否正确使用验证数据感到困惑。正如我在谷歌上搜索到的,验证集是用于调优的,模型“看到”了数据,但没有对数据进行“训练”。 我知道Gridsearch是一个调优选项,但它的速度非常慢,我想通过手动调优来真正理解这个过程,因此我的调优如下: 原始数据:Python 在验证集上手动调整超参数,python,machine-learning,knn,Python,Machine Learning,Knn,我对是否正确使用验证数据感到困惑。正如我在谷歌上搜索到的,验证集是用于调优的,模型“看到”了数据,但没有对数据进行“训练”。 我知道Gridsearch是一个调优选项,但它的速度非常慢,我想通过手动调优来真正理解这个过程,因此我的调优如下: 原始数据:列车数据,列车标签用于培训,测试数据,测试标签用于测试未查看的数据 从sklearn.model\u选择导入列车\u测试\u拆分 首先,我进一步将原始训练数据拆分为较小的训练集(X_-train)和验证集(X_-val) #预测验证集(X_val)
列车数据
,列车标签
用于培训,测试数据
,测试标签
用于测试未查看的数据
从sklearn.model\u选择导入列车\u测试\u拆分
首先,我进一步将原始训练数据拆分为较小的训练集(X_-train
)和验证集(X_-val
)
#预测验证集(X_val)上的标签,以查看哪些超参数产生最高精度:
preds=knn.predict(X_val)
all_k+=[k]
all_dist+=[dist]
scores+=[accuracy_score(y_val,preds)]
highest_accuracy=max(scores)
idx_max=scores.index(highest_accuracy)
print("Best parameter: k: {} distance metric: {} accuracy:{}".format(all_k[idx_max], all_dist[idx_max], highest_accuracy))
=>我得到了最佳参数:k:3距离度量:2精度:0.997
因此,我在测试集(test\u data
)上获取了这些超参数(k
=3和p
=2),以查看模型的性能
knn2= KNeighborsClassifier(n_neighbors=3, p= 2)
knn2.fit(X_train, y_train)
preds2=knn2.predict(test_data)
accuracy=accuracy_score(test_label,preds2)
=>我得到了0.799的准确度
我是否以正确的方式使用了验证集?我觉得我刚刚评估了模型两次。由于我所做的与Gridsearch不同,而且我是机器学习新手,所以我有点困惑,需要根据我的代码确认我的理解。提前谢谢
knn2= KNeighborsClassifier(n_neighbors=3, p= 2)
knn2.fit(X_train, y_train)
preds2=knn2.predict(test_data)
accuracy=accuracy_score(test_label,preds2)