机器学习其实比你想的更简单
?
为了实现这个想法,我们有一个简单的解决方案:
- 1.获得当前文章的标题并将其分割成独立的单词(译者注:原文是英文,只需要依据空格分割即可,中文分词需要用到分词器)
- 2.获取除当前文章以外的所有文章
- 3.将这些文章依据其内容与当前文章标题的重合程度进行排序
如上图所示,将每篇文章映射成坐标系上的一个坐标点并不难,可以通过如下两步实现:
- 找出每篇文章中的所有单词;
- 为每篇文章建立一个数组,数组中的元素为0或者1,用于表示某单词在该文章中是否出现了,每篇文章数组元素的顺序都是一样的,只是其值有差异。
Ruby代码如下:
我们将每篇文章指派到离它最近的群簇中:
我们计算各个群簇中所有对象的坐标均值,作为该群簇新的中心。
这样我们就完成了第一次的数据迭代,现在我们将文章根据新的群簇中心重新指派到对应的群簇中去。
至此,我们找到了每篇文章对应的群簇!很明显,即使继续进行迭代群簇中心不会改变,每篇文章对应的群簇也不会改变了。
上述过程的Ruby代码如下:
如果你喜欢以数学符号去表达思想,毫无疑问学术论文是很有用处的。然而,其实有更多优质的资源可以替换掉这些繁杂数学公式,它们更实际、更平易近人。
- Wiki百科(例如:潜在语义索引,聚类分析)
- 开源机器学习库的源代码(例如:?Scipy’s K-Means,Scikit’s DBSCAN)
- 以程序员的角度编写的书籍(例如:集体智慧编程,黑客机器学习)
- 可汗学院
试一试
如何为你的项目管理应用推荐标签?如何设计你的客户支持工具?或者是社交网络中用户如何分组?这些都可以通过简答的代码、简单的算法来实现,是练习的好机会!所以,如果你认为项目中面临的问题可以通过机器学习来解决,那为什么还要犹豫呢?
机器学习其实比你想象得更简单!