#include #include

// 计算两个点之间的欧氏距离 double euclideanDistance(const std::vector& point1, const std::vector& point2) { double sum = 0.0; for (int i = 0; i < point1.size(); ++i) { double diff = point1[i] - point2[i]; sum += diff * diff; } return std::sqrt(sum); }

// 手动设置 k-means 聚类的起始点 std::vector<std::vector> setInitialCentroids(const std::vector<std::vector>& data, int k) { std::vector<std::vector> centroids; // 在数据集中选择前 k 个点作为初始聚类中心 for (int i = 0; i < k; ++i) { centroids.push_back(data[i]); } return centroids; }

int main() { // 数据集 std::vector<std::vector> data = { {1.0, 2.0}, {2.0, 1.0}, {3.0, 2.0}, {8.0, 9.0}, {9.0, 10.0}, {10.0, 8.0} };

// 设置聚类数和初始聚类中心
int k = 2;
std::vector<std::vector<double>> centroids = setInitialCentroids(data, k);

// 打印初始聚类中心
std::cout << 'Initial centroids:' << std::endl;
for (const auto& centroid : centroids) {
    for (const auto& coordinate : centroid) {
        std::cout << coordinate << ' ';
    }
    std::cout << std::endl;
}

return 0;

}

这个示例代码演示了如何手动设置 k-means 聚类的起始点。在setInitialCentroids函数中,我们选择了数据集中的前 k 个点作为初始聚类中心。然后,在main函数中,我们设置了聚类数 k 为 2,并调用setInitialCentroids函数来获取初始聚类中心。最后,我们打印出初始聚类中心的坐标。

请注意,这只是一个示例代码,实际应用中还需要添加 k-means 聚类算法的其他部分,例如计算每个点与聚类中心的距离、更新聚类中心等。

C++ 手动设置 K-Means 聚类初始点示例代码

原文地址: http://www.cveoy.top/t/topic/fCBp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录