java实现K-means算法,k-means聚类算法原理

	/**
	 * 需要所有point 以及族中心list
	 * 
	 * @author:Yien
	 * @when:2018年5月20日下午3:14:09
	 * @Description:TODO
	 * @param:@param pointList
	 * @param:@param centerPointList
	 * @param:@return
	 * @return:Map<UserScorePoint,UserScorePoint>
	 * @throws:
	 */
	public static Map<UserScorePoint, UserScorePoint> 迭代函数(List<UserScorePoint> pointList,
			List<UserScorePoint> centerPointList) {

		/**
		 * 
		 * centerPointList可能为空;
		 */
		// System.out.println("三个新的族中心是:" + Arrays.toString(centerPointList.toArray()));

		Map<UserScorePoint, UserScorePoint> pointCenterMap = new HashMap<UserScorePoint, UserScorePoint>();
		/**
		 * 已经初始化了族心 就往Map自动添加进去
		 */
		if (!centerPointList.isEmpty()) {

			for (UserScorePoint point : centerPointList) {

				pointCenterMap.put(point, point);

			}
			/**
			 * 在列表中去掉族中心集合
			 */
			pointList.removeAll(centerPointList);
		}
		for (int i = centerPointList.size(); i < pointList.size(); ++i) {
			/**
			 * 添加族中心列表
			 */
			if (centerPointCount > i) {

				centerPointList.add(pointList.get(i));
				/**
				 * 族心自动添加到族
				 */
				pointCenterMap.put(pointList.get(i), pointList.get(i));
			}

			/**
			 * 继续遍历 找族中心;
			 */
			else {

				UserScorePoint centerPoint = findWhichPoint(pointList.get(i), centerPointList);
				// System.out.println("这里是找到的族心"+centerPoint);

				/**
				 * 向Map添加族心信息;
				 */
				pointCenterMap.put(pointList.get(i), centerPoint);
			}

		}

		return pointCenterMap;

	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值