我正在尝试使用OpenCV中的k均值函数将36000幅样本图像预分类为100+类(以减少我为监督学习准备训练数据的工作量)。在这个函数中,有两个我并不真正理解的参数:cv::TermCriteria::EPS和cv::TermCriteria::COUNT.
cv::kmeans(dataset.t(), K, kmean_labels, cv::TermCriteria( cv::TermCriteria::EPS + cv::TermCriteria::COUNT, 10, 1.0),
3, cv::KMEANS_PP_CENTERS, kmean_centers);在cv::TermCriteria::EPS:文档中,它解释了:迭代算法停止时所需的精度或参数的更改。
cv::TermCriteria::COUNT:要计算的最大迭代数或元素数。
对我来说,上面的解释不太清楚。谁能帮助解释更多,并说明如何找到好的价值计数和每股收益?非常感谢。
发布于 2016-01-07 08:18:29
没有适用于所有应用程序的神奇数字(否则它们不会是参数)。
Kmeans是一种迭代算法,它将朝着最优方向移动,每次迭代都会变得更好,但是您需要告诉算法何时停止。
使用cv::TermCriteria::COUNT,,您告诉算法:您可以执行x迭代,然后停止。但这不能保证你的精确性。
使用cv::TermCriteria::EPS,,您告诉算法继续其迭代,直到两个连续迭代之间的差异变得足够小为止。参数EPS告诉算法这种差异应该变得多小。这当然取决于要输入算法的数据集。假设您将所有数据点乘以10,那么EPS应该相应地变化(我认为是二次变化,但不确定)。
当您使用和两个参数时,您告诉算法在两个条件之一都已满时停止迭代;例如:当连续两次运行之间的差值小于0.1时停止迭代,在完成10次迭代时停止迭代或。
在结论:只有分析您的数据集,和试验和错误,可以给您体面的价值.
https://stackoverflow.com/questions/34649824
复制相似问题