Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在验证集上手动调整超参数_Python_Machine Learning_Knn - Fatal编程技术网

Python 在验证集上手动调整超参数

Python 在验证集上手动调整超参数,python,machine-learning,knn,Python,Machine Learning,Knn,我对是否正确使用验证数据感到困惑。正如我在谷歌上搜索到的,验证集是用于调优的,模型“看到”了数据,但没有对数据进行“训练”。 我知道Gridsearch是一个调优选项,但它的速度非常慢,我想通过手动调优来真正理解这个过程,因此我的调优如下: 原始数据:列车数据,列车标签用于培训,测试数据,测试标签用于测试未查看的数据 从sklearn.model\u选择导入列车\u测试\u拆分 首先,我进一步将原始训练数据拆分为较小的训练集(X_-train)和验证集(X_-val) #预测验证集(X_val)

我对是否正确使用验证数据感到困惑。正如我在谷歌上搜索到的,验证集是用于调优的,模型“看到”了数据,但没有对数据进行“训练”。 我知道Gridsearch是一个调优选项,但它的速度非常慢,我想通过手动调优来真正理解这个过程,因此我的调优如下:

原始数据:
列车数据
列车标签
用于培训,
测试数据
测试标签
用于测试未查看的数据

从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)