资源简介
文件中包含K-Means聚类算法C#版本,一个文件中包含7个函数,使用的时候直接将C#文件复制到项目中即可使用,调用的时候主函数会直接返回结果

代码片段和文件信息
using System;
using System.Collections;
using System.Collections.Generic;
/**
*
* @author aturbo
* 1、随机选择k个点作为中心点(centroid)
* 2、计算点到各个类中心的距离;
* 3、将点放入最近的中心点所在的类
* 4、重新计算中心点
* 5、判断目标函数是否收敛,收敛停止,否则循环2-4步
*
*/
public class MyKmeans
{
public static double[][] points = { new double[]{ 1 1 }new double[] { 2 1 }new double[] { 1 2 } new double[]{ 2 2 } new double[]{ 3 3 } new double[]{ 8 8 } new double[]{ 9 8 }
new double[]{ 8 9 } new double[]{ 9 9 } };
/**
* 随机选择k个点作为中心点
* @param k
* @return k个中心点
*/
private static double[][] chooseinitK(int k)
{
double[][] cluster = new double[k][];
List set = new List();
for (int i = 0; i < points.Length; i++)
{
set.Add(i);
}
//在set中剩下的序列点就为随机选择的
for (int i = 0; i < (points.Length - k);)
{
Random random = new Random();
int a = random.Next(points.Length);
if (!set.Contains(a))
continue;
set.Remove(a);
//System.out.println(“a“ + a);
i++;
}
//Iterator iterator = set.iterator();
int j = 0;
foreach (int iterator in set)
{
cluster[j] = points[iterator];
j++;
}
for (int i = 0; i < cluster.Length; i++)
{
//System.out.println(“随机选择的k个节点:“ + cluster[i][0] + “\t“ + cluster[i][1]);
}
return cluster;
}
/**
* 欧式距离计算公式
* @param center (中心)点
* @param otherpoint
* @return 欧式距离
*/
private static double eurDistance(double[] center double[] otherpoint)
{
double distance = 0.0;
for (int i = 0; i < center.Length; i++)
{
distance += ((center[i] - otherpoint[i]) * (center[i] - otherpoint[i]));
}
distance = Math.Sqrt(distance);
return distance;
}
/**
* 目标函数——也就是每个聚类中的点到它中心点的距离和
* @param center 中心点
* @param cluster 划分的(中间)聚类
* @return cost
*/
private static double cost(double[][] center List[] cluster)
{
double cost = 0.0;
for (int i = 0; i < cluster.Length; i++)
{
for (int j = 0; j < cluster[i].Count; j++)
{
double tempCost = 0.0;
for (int k = 0; k < center.Length; k++)
{
//System.out.println(cluster[i].get(j)[k]);
tempCost += (cluster[i][j][k] - center[i][k]) * (cluster[i][j][k] - center[i][k]);
}
cost += Math.Sqrt(tempCost);
}
}
return cost;
}
/**
* 聚类算法——将所有点和各中心点计算距离,将点放入最近距离点的类中
* @param points 所有点
* @param centers 中心点
* @param k
* @return 聚类
*/
private static List[] returnCluster(double[][] points double[][] centers int k)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5647 2019-04-25 15:50 kmeans\MyKmeans.cs
目录 0 2019-04-25 16:07 kmeans
----------- --------- ---------- ----- ----
5647 2
相关资源
- C#实现的遗传算法类库
- 组合 算法 C# 背包问题
- c#语言实现K短路算法
- C# 视觉处理代码、神经网络和遗传算
- RSA算法实现加、解密
- 四叉树算法(KrigingCal)
- delta机器人运动学算法正向逆向求解
- C#多元线性回归算法
- C#实现封装SPC过程能力工具类ProcessC
- 国密SM4算法 C#
- TIN生成算法实现.zip
- 网络安全LSB算法 采用C# 实现文字的隐
- C#数字图像处理算法典型
- C#数值计算算法编程
- 《C#数值计算算法编程》电子书+随书
- 数据结构与算法C#
- c#四叉树算法实现
- A*逆向路径搜索算法C#代码以及地图文
- 武汉大学 C#数据结构与算法
- C#+ArcEngine面周边点抽稀源码
- 操作系统课设理发师问题,时间片轮
- 图像加密算法与实践
- C#数字图像处理算法典型赵春江随书源
- 数据结构与算法:C#语言描述(中文)
- C#数据结构与算法
- 校园导游图 C# floyd算法
- 数据结构与算法:C#语言描述(中文)
- 基于离散点的构TIN算法C#
- 平面度及平整度算法
- C#面向对象基于winform的扫雷游戏和简
评论
共有 条评论