聚类(k-means):给事物打标签,寻找同一组内的个体之间的一些潜在的 相似模式。力图找到数据的自然分组
聚类是一种无监督的机器学习任务它可以自动将数据划分成 类cluster。因此聚类分组不需要提前被告知所划分的组应该 是什么样的。因为我们甚至可能都不知道我们再寻找什么,所 以聚类是用于知识发现而不是预测
聚类原则是一个组内的记录彼此必须非常相似,而与该组之外 的记录截然不同。所有聚类做的就是遍历所有数据然后找到这 些相似性
聚类是无监督机器学习,最好结果还需要进行人工评估
k:中心点;means:多个类别
引申出2个问题:
1,k是随机出来的,means计算几次每次值都不会一样,怎么解决?
2,k的数值如何来确定?
error:就是每个中心点距离自己这一类每个点之间距离平方求和然后相加
当不知道要聚合多少类时,需要反复尝试K,当k增加error无明显变化,就是拐点
距离测度:
欧式距离测度:是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。 距离越近就越相似
平方欧式距离
余弦距离测度:用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似
微博广告投放数据分析,找感兴趣的人来打广告:--建立reduce任务
文本->数据清洗->分词->序列化(就是变成sequenceFile格式)->向量化(数值化,seq2spares),在数值化就需要考虑用什么样的方法把每个维度计算一个权重
java代码打成jar在mahout当在运行:
1,启动hadoop集群
2,上传jar包(KMeansCluster打成sxtkmeans.jar)和分类数据(original.txt)
3,进入apache-mahout-distribution-0.12.2目录下运行:
hadoop jar /opt/local/sxtkmeans.jar com.bjsxt.cluster.KMeansCluster -in /opt/local/original.txt -nkluster 20 -out 20170419
hadoop jar jar包路径 运行的主类路径 -in 需要分析的数据路径 -nkluster 分成几个中心点 -out hdfs存储路径
代码当中定义了运行完成之后读取存储到hdfs数据到当前路径下result.xls