- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对机器学习算法和 Spark 非常陌生。我遵循Twitter 流语言分类器在这里找到:
具体是这段代码:
除了我试图在它提取的一些推文上以批处理模式运行它Cassandra 的推文,在本例中总共 200 条推文。
如示例所示,我使用此对象“矢量化”一组推文:
object Utils{
val numFeatures = 1000
val tf = new HashingTF(numFeatures)
/**
* Create feature vectors by turning each tweet into bigrams of
* characters (an n-gram model) and then hashing those to a
* length-1000 feature vector that we can pass to MLlib.
* This is a common way to decrease the number of features in a
* model while still getting excellent accuracy (otherwise every
* pair of Unicode characters would potentially be a feature).
*/
def featurize(s: String): Vector = {
tf.transform(s.sliding(2).toSeq)
}
}
这是我从 ExaminAndTrain.scala 修改而来的代码:
val noSets = rawTweets.map(set => set.mkString("\n"))
val vectors = noSets.map(Utils.featurize).cache()
vectors.count()
val numClusters = 5
val numIterations = 30
val model = KMeans.train(vectors, numClusters, numIterations)
for (i <- 0 until numClusters) {
println(s"\nCLUSTER $i")
noSets.foreach {
t => if (model.predict(Utils.featurize(t)) == 1) {
println(t)
}
}
}
此代码运行,每个集群打印“Cluster 0”“Cluster 1”等下面没有任何打印。如果我翻转
models.predict(Utils.featurize(t)) == 1
至
models.predict(Utils.featurize(t)) == 0
同样的事情发生,除了每条推文都打印在每个簇下面。
这是我直觉认为正在发生的事情(请纠正我的思考是否错误):这段代码将每条推文转换为一个向量,随机选择一些集群,然后运行 kmeans 对推文进行分组(位于在一个非常高的水平上,我认为这些集群会很常见“主题”)。因此,当它检查每条推文以查看 models.predict 是否== 1,不同的推文集应该出现在每个簇下(并且因为它会根据自身检查训练集,每条推文应该在一个簇中)。为什么它不这样做呢?要么是我的对 kmeans 作用的理解是错误的,我的训练集也是小或者我错过了一步。
非常感谢任何帮助
最佳答案
首先,KMeans 是一种聚类算法,因此是无监督的。因此,不存在“对照训练集本身进行检查”(好吧,您可以手动执行此操作;)。
实际上,您的理解非常好,只是您错过了 model.predict(Utils.featurize(t)) 为您提供 KMeans 分配的 t 所属集群的这一点。我想你想检查一下
models.predict(Utils.featurize(t)) == i
在您的代码中,因为我迭代了所有集群标签。
还有一个小注释:特征向量是在推文字符的 2-gram 模型上创建的。这个中间步骤很重要;)
2-gram(单词)的意思是:“一只熊对着一只熊喊叫”=> {(A, bear), (bear, hides), (shouts, at), (at, a), (a bear )} 即“一只熊”被计算了两次。字符将是 (A,[space])、([space], b)、(b, e) 等等。
关于scala - Spark MLlib/K-Means 直觉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929704/
发自 csexchange : 我见过的大多数模拟退火版本的实现类似于下面维基百科伪代码中概述的内容: Let s = s0 For k = 0 through kmax (exclusive):
我得到了这段代码用于分析: private String type[] = {"Hearts","Spades","Clubs","Diamonds"}; private String rank[]
我对机器学习算法和 Spark 非常陌生。我遵循Twitter 流语言分类器在这里找到: http://databricks.gitbooks.io/databricks-spark-referenc
直观的逻辑,具有 build 性,是函数式编程中类型系统的基础。经典逻辑不是 build 性的,尤其是排中律 A ∨ ¬A(或其等价物,例如 double negation elimination 或
我是一名优秀的程序员,十分优秀!