资源简介
多维k-means聚类算法java简单实现,导入运行KmeansTest.java可看到结果

代码片段和文件信息
package com.kmeans;
import java.util.Arrays;
import java.util.Collections;
import java.util.linkedList;
import java.util.List;
import java.util.Random;
/**
*
* @author Yuanbo She
*
*/
public class Kmeans {
/**
* double[][] 元素全置0
*
* @param matrix
* double[][]
* @param highDim
* int
* @param lowDim
* int
* double[highDim][lowDim]
*/
private static void setDouble2Zero(double[][] matrix int highDim int lowDim) {
for (int i = 0; i < highDim; i++) {
for (int j = 0; j < lowDim; j++) {
matrix[i][j] = 0;
}
}
}
/**
* 拷贝源二维矩阵元素到目标二维矩阵。 foreach (dests[highDim][lowDim] = sources[highDim][lowDim]);
*
* @param dests
* double[][]
* @param sources
* double[][]
* @param highDim
* int
* @param lowDim
* int
*/
private static void copyCenters(double[][] dests double[][] sources int highDim int lowDim) {
for (int i = 0; i < highDim; i++) {
for (int j = 0; j < lowDim; j++) {
dests[i][j] = sources[i][j];
}
}
}
/**
* 更新聚类中心坐标
*
* @param k
* int 分类个数
* @param data
* kmeans_data
*/
private static void updateCenters(int k Kmeans_data data) {
double[][] centers = data.centers;
setDouble2Zero(centers k data.dim);
int[] labels = data.labels;
int[] centerCounts = data.centerCounts;
for (int i = 0; i < data.dim; i++) {
for (int j = 0; j < data.length; j++) {
centers[labels[j]][i] += data.data[j][i];
}
}
for (int i = 0; i < k; i++) {
for (int j = 0; j < data.dim; j++) {
centers[i][j] = centers[i][j] / centerCounts[i];
}
}
}
/**
* 计算两点欧氏距离
*
* @param pa
* double[]
* @param pb
* double[]
* @param dim
* int 维数
* @return double 距离
*/
public static double dist(double[] pa double[] pb int dim) {
double rv = 0;
for (int i = 0; i < dim; i++) {
double temp = pa[i] - pb[i];
temp = temp * temp;
rv += temp;
}
return Math.sqrt(rv);
}
/**
* 做Kmeans运算
*
* @param k
* int 聚类个数
* @param data
* kmeans_data kmeans数据类
* @param param
* kmeans_param kmeans参数类
* @return kmeans_result kmeans运行信息类
*/
public static Kmeans_result doKmeans(int k Kmeans_data data Kmeans_param param) {
// 预处理
double[][] centers = new double[k][data.dim]; // 聚类中心点集
data.cente
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2014-05-06 16:56 kmeans\.classpath
文件 382 2014-05-06 16:56 kmeans\.project
文件 78 2014-05-06 16:56 kmeans\.settings\org.eclipse.core.resources.prefs
文件 598 2014-05-06 16:56 kmeans\.settings\org.eclipse.jdt.core.prefs
文件 5167 2014-05-06 17:01 kmeans\bin\com\kmeans\Kmeans.class
文件 1483 2014-05-06 17:01 kmeans\bin\com\kmeans\KmeansTest.class
文件 501 2014-05-06 17:01 kmeans\bin\com\kmeans\Kmeans_data.class
文件 627 2014-05-06 17:01 kmeans\bin\com\kmeans\Kmeans_param.class
文件 358 2014-05-06 17:01 kmeans\bin\com\kmeans\Kmeans_result.class
文件 24 2014-05-06 16:44 kmeans\bin\com\kmeans\readme.txt
文件 8176 2014-05-06 16:56 kmeans\src\com\kmeans\Kmeans.java
文件 709 2014-05-06 16:56 kmeans\src\com\kmeans\KmeansTest.java
文件 879 2014-05-06 16:56 kmeans\src\com\kmeans\Kmeans_data.java
文件 529 2014-05-06 17:01 kmeans\src\com\kmeans\Kmeans_param.java
文件 286 2014-05-06 16:56 kmeans\src\com\kmeans\Kmeans_result.java
文件 24 2014-05-06 16:44 kmeans\src\com\kmeans\readme.txt
相关资源
- Java编写的k-means文本聚类算法
- Clique聚类算法Java版
- 信息检索中文本聚类的实现
- Java中通过HanLP实现文本分词、提取关
- nlpir汉语分词系统
- Java实现k_means算法进行聚类分析
- K-means聚类算法java实现有界面
- 基于kmeans聚类的协同过滤推荐算法包
- 模糊C均值聚类weka
- hadoop k-means实现
- hadoop k-means算法实现可直接命令行运行
- java 利用Kmeans的jar包进行聚类---代码
- JAVA编写的基于文本相似度匹配的文本
- CluStream流数据聚类 java 代码和jar包
- k-means聚类使用数据集:iris
- 遗传算法解决多维背包问题java代码
- java实现k-means算法137342
- 完整都的java聚类算法包括界面
- Java实现的K-Means算法的动态演示
- K-means聚类算法JAVA程序实现
- DBSCAN聚类算法java实现
- 用java实现的基于网格的聚类算法
- kmeans中文文本聚类java源码包括对文本
- kmeans聚类java实现附测试数据及结果
- Java实现的KMeans均值聚类算法
- kmeans算法文本聚类java源码分词,TF/
- 聚类Kmeans和Kmedoids算法
- 层次聚类算法的java实现
- JAVA实现层次聚类算法
- 一种聚类算法的改进算法Canopy算法
评论
共有 条评论