资源简介
文件中包含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# 最短路径 Dijkstra算法实现
- C#最短路径算法源码
- c# 视频播放的分屏算法分享给大家
- C#标准正态分布类库
- C#简单实现凯撒密码算法
- 云图等高线图绘制算法源码
- C# 生等值线 等值面 算法
- ArcGis Engine + C# + 最短路径算法
- Unity不用Dll直接读取BMP图片并转为Te
- A*寻路算法实现C#源码——A Star find
- floyd算法 C#实现
- 国家商用密码算法开放动态库及演示
- TINdelaunay三角网生成算法
- C#完成DDA算法的实现
- 最短路径算法c# 最短路径算法
- C#编写的道格拉斯算法演示
- 多元函数遗传算法
- 国密算法SM2、SM3、SM4的C#源码
- 道格拉斯压缩算法 AE
- C#实现BP神经网络算法
- 神经网络算法C#实现
- C#国密加密算法SM2SM3SM4
- 基于A*算法的单AGV路径规划
- C#中的FFT算法
- DSA签名算法的C#实现
- C#实现最短路径Dijkstra算法
- SM4算法C#实现
- C#数值计算算法编程 代码
- 遗传算法求解车辆路径问题程序源码
- 遗传算法求解TSP问题C#界面版
评论
共有 条评论