学习Clojure中,拿来练手的一个K-Means数据聚类算法
仅仅是一个拿来练手的Clojure空间K-Means算法实现

源码地址在这里这里

K-Means算法是一种简单但并不精确的数据分类、聚集算法

空间K-Means是对任意维度的空间点数据进行聚类的方法,大致用途就像这样:

K-Means.gif

对算法的详细介绍在这里
写的很渣,在处理1到15000内所有整数任意组合形成的7500个点的二维点阵的时候溢出了。


(defn rand-sub [coll n] (take n (shuffle coll)))

(defn distance [coll-1 coll-2]
  (apply + (map (fn [x] (#(* % %) (apply - x))) (partition 2 (interleave coll-1 coll-2)))))

(defn get-center [coll]
  (map #(/ % (count coll)) (let [+seq (fn [x y] (map #(apply + %) (partition 2 (interleave x y))))]
                             (reduce +seq coll))))

(defn find-nearest-seed [point seeds]
  (->> (map #(vec [(distance % point) %]) seeds) (apply concat) (apply sorted-map) (first) (last)))

(defn seed-means [seeds coll]
  (->> (group-by last (map #(vec [% (find-nearest-seed % seeds)]) coll))
    (vals)
    (map (partial map first))))

(defn k-means [k coll]
  (loop [seed (rand-sub coll k) old-seed []]
    (let [it-res (seed-means seed coll)]
      (if (= seed old-seed) it-res
        (recur (map get-center it-res) seed)))))


嗯,就这些
来自:计算机科学 / 软件综合

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
epi.clyce
学者 机友 笔友
文章
345
回复
2147
学术分
21
2007/07/10注册,2 个月前活动
暂无简介
%7B%22isDisplay%22%3Atrue%7D

仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传
空空如也~
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
{{forum.displayName}}
{{forum.countThreads}}
篇文章,
{{forum.countPosts}}
条回复
{{forum.description || "暂无简介"}}
ID: {{user.uid}}
学术分隐藏
{{submitted?"":"投诉或举报"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png
插入公式
分享回复:{{shareId}}
加载中...
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
加入关注取消关注
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
建议修改
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
下载资料
{{fileName}}
大小:{{size}}
下载当前附件将花费 {{costMessage}}
{{description}}
你当前剩余 {{holdMessage}}
{{fileName}}
大小:{{size}}
当前附件免费。
你已购买过此附件,下载当前附件不需要花费积分。
加载中...
{{errorInfo}}
附件已丢失
当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}