当前位置: 首页 > news >正文

东莞常平粤海水务seo软件下载

东莞常平粤海水务,seo软件下载,网页设计与制作总结和体会,营销类网站设计 要点计算数据集中的元素与各个簇的中心的距离&#xff0c;将它赋给最近的簇&#xff0c;然后重新计算每个簇的平均值&#xff0c;再将元素按离平均值点最近的原则重新分配直到没有出现重新分配 该算法要事先给出k的值&#xff0c;即划分为几个簇。 vector<int> datoclu(dat…

 计算数据集中的元素与各个簇的中心的距离,将它赋给最近的簇,然后重新计算每个簇的平均值,再将元素按离平均值点最近的原则重新分配直到没有出现重新分配

该算法要事先给出k的值,即划分为几个簇。

vector<int> datoclu(data.size(), -1);用这个来标记每个数据在哪个簇中。

#include <fstream>
#include <sstream>
#include <vector>
#include <iostream>using namespace std;struct Point
{double x;double y;
};double distance(const Point& a, const Point& b)
{return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}vector<int> KMeans(vector<Point>& data, int k, int maxIterations)
{vector<Point> centroids(k);for (int i = 0; i < k; i++)          {centroids[i] = data[rand() % data.size()];      //随机选择k个类聚中心。0到(data.size()-1)}vector<int> datoclu(data.size(), -1);           //每个数据属于哪个簇bool flag = 0;while (!flag && maxIterations){flag = 1;for (int i = 0; i < data.size(); i++){double minDis = numeric_limits<double>::max();int index = -1;for (int j = 0; j < centroids.size(); j++){double dis = distance(data[i], centroids[j]);if (dis < minDis){minDis = dis;index = j;}}if (datoclu[i] != index)                //记录每个数据属于的聚类中心{datoclu[i] = index;flag = 0;}}vector<Point> newClu(k);vector<int> num(k, 0);//计算每个簇平均值点for (int i = 0; i < data.size(); i++){newClu[datoclu[i]].x += data[i].x;newClu[datoclu[i]].y += data[i].y;num[datoclu[i]]++;}for (int i = 0; i < k; i++){newClu[i].x /= num[i];newClu[i].y /= num[i];}centroids = newClu;maxIterations--;}return datoclu;
}
vector<Point> ReadData(string filename)
{vector<Point> data;ifstream file(filename);if (file.is_open()){string line;while (getline(file, line)){istringstream iss(line);double x, y;string token;Point point;if (getline(iss, token, ',') && istringstream(token) >> point.x &&getline(iss, token, ',') && istringstream(token) >> point.y) {data.push_back(point);}}}else{cout << "open fail";}file.close();return data;
}int main()
{vector<Point> dataset = ReadData("data.txt");vector<int> clusters;int k, maxIterations;cout << "输入簇的个数和最大迭代次数"<<endl;cin >> k >> maxIterations;clusters= KMeans(dataset, k, maxIterations);vector <vector<int>> index(k);for (int j = 0; j < k; j++){for (int i = 0; i < clusters.size(); i++){if (clusters[i] == j){index[j].push_back(i);}}}for (int i = 0; i < index.size(); i++){cout << "{";for (int j = 0; j < index[i].size(); j++){cout << index[i][j]+1;if (j != index[i].size() - 1){cout << ",";}}cout << "}";}
}    

数据集

1.0, 1.0 
2.0, 1.0 
1.0, 2.0  
2.0, 2.0  
4.0, 3.0  
5.0, 3.0  
4.0, 4.0  
5.0,4.0

运行结果 

http://www.yayakq.cn/news/516346/

相关文章:

  • 建设制作外贸网站的公司网站建设作业
  • 陇西做网站的公司拉趣网站是谁做的
  • wordpress网站建设教程网页制作框架教程
  • 旅游网站建设资金请示深圳公司设立
  • 襄阳住房和城乡建设网站家电网站建设费用
  • 上海做征信服务的公司网站个人可以建设网站吗
  • 四川住房和城乡建设厅网站建设公司网站需要准备什么
  • 网站推广昔年下拉网站添加可信任站点怎么做
  • 潍坊软件网站开发国家精品课程建设工作网站
  • 手工做刀网站四川铁科建设监理公司网站
  • 企业网站建设需要的手续微信 购物网站开发
  • php网站开发实例教程下载代理网页游戏需要多少钱
  • 北京网站建设平台亚马逊建设网站用什么实例
  • seo案例网站房地产建筑设计公司
  • 高密专业网站建设价格青岛网站建设系统
  • 成都网站制作费用手机链接网页怎么制作
  • 网站建设职业如何做psd的模板下载网站
  • c 网站开发的优点尚品中国网站
  • 快速搭建网站wordpress合同网站开发 设计 后期维护
  • 一个网站 两个域名wordpress 文章类型
  • 安徽餐饮加盟网站建设招聘网站开发计划书
  • 自己怎么样做游戏网站工信部网站备案查询 验证码
  • 搜狐快站做的手机网站网站主要盈利模式
  • 网站备案和域名备案北京工程建设信息网站
  • 中国设计师个人网站陕西网站建设的内容
  • 公会网站建设列举五种网络营销模式
  • 搭建网站的企业长沙网站排名技巧
  • 设计师网站知乎如果让你建设网站之前你会想什么
  • 做网站软件要钱吗静态手机网站基础
  • 营销型网站建设 案例写软文能赚钱吗