// k_means.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
cout << "请输入要分群的数字\n";
vector<int> ori;
string temp;
getline(cin, temp);
int m = 0;
for (int i = 0; i < temp.length(); i++) {
char t = temp[i];
if(t != ' ') {
m = m * 10 + (int)(t-48);
}
else {
ori.push_back(m);
m = 0;
}
if (i == temp.length()-1) {
ori.push_back(m);
}
}
int i1 = ori[0];
int i2 = ori[1];
//分群1,2
vector<int>g1, g2;
//c1,c2中心
int c1 = 0, c2 = 0;
while (i1!=c1||i2!=c2)
{
c1 = i1;
c2 = i2;
g1.clear();
g2.clear();
for (int i=0;i<ori.size();i++)
{
int abs1 = abs(i1 - ori[i]);
int abs2 = abs(i2 - ori[i]);
if (abs1 <=abs2 )
g1.push_back(ori[i]);
else
g2.push_back(ori[i]);
}
int sum = 0;
for (int i = 0; i < g1.size(); i++) {
sum += g1[i];
}
i1 = sum / g1.size();
sum = 0;
for (int i = 0; i < g2.size(); i++) {
sum += g2[i];
}
i2 = sum / g2.size();
}
cout << "第一群:";
for (int i = 0; i < g1.size(); i++) {
cout << g1[i] << " ";
}
cout << endl<<"第二群:";
for (int i = 0; i < g2.size(); i++) {
cout << g2[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
K-means 一维 C++
猜你喜欢
转载自blog.csdn.net/weixin_39874268/article/details/82946693
今日推荐
周排行