将 Sci-kit Learn 的 kNN 算法应用于新鲜数据

数据挖掘 机器学习 scikit-学习 k-nn
2022-03-15 02:39:14

在研究 Scikit-learn 的 kNN 算法时,我意识到如果我使用sklearn.model_selection.train_test_split,提供的数据会根据作为参数提供的比例自动分成训练数据和测试数据集。

然后基于训练数据,该算法查看最接近测试数据点的k-最近邻点,以确定测试数据点是否属于某个标准。

我想知道是否有一种方法可以预测测试数据集的标准,这些数据集已经是提供的数据集的一部分,而是在整个过程中没有提供的全新数据。

有没有办法使用 sci-kit learn 做到这一点?

2个回答

KNN 不适合“最接近测试数据点的 k 最近邻点”。您指定 fit 选项,例如:

neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, y)

通常这将是xtrain, ytrain,当您使用“新”(看不见的)数据测试模型性能并将真实目标与预测进行比较时。

neigh.predict(xtest)

或者

neigh.predict_proba(xtest)

请参阅文档:https ://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

在使用训练-测试拆分对模型进行初始验证后,如果您对性能感到满意,您可以通过对整个数据集进行训练来创建最终模型。这样,您就可以使用所有可用的标签来对全新数据进行推理。

您只需执行以下操作:

模型 = KNeighborsClassifier()

模型.fit(X, y)

其中 X, y 代表您的整个训练数据。