聚类算法评价指标:Purity、NMI、MI、entropy、precision、recall、F值、RI值

本文探讨了Scala编程语言的强大之处,强调其能够编写出优雅的代码,并对比了Java的编程体验。同时,文章提及了聚类算法评估中的关键指标,如Purity、NMI、MI、entropy、precision、recall、F值和RI值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不得不吐槽一下,Scala真的是一门奇葩的语言,太强大了,只要你好好思考,写出来的代码绝对很漂亮,瞬间感觉java太low了。

package Utils

import com.google.common.math.{DoubleMath, IntMath}

/**
  * Created by fhqplzj on 16-8-24 at 下午2:12.
  */
object Evaluation {
  /**
    * 检查标签
    *
    * @param labelsTrue
    * @param labelsPred
    */
  private def labelChecker(labelsTrue: Array[Int], labelsPred: Array[Int]): Unit = {
    require(labelsTrue.length == labelsPred.length && labelsTrue.length >= 2, "The length must be equal!" +
      "The size of labels must be greater than 1!")
  }

  /**
    * 纯度:Purity
    *
    * @param labelsTrue
    * @param labelsPred
    * @return
    */
  def purity(labelsTrue: Array[Int], labelsPred: Array[Int]) = {
    labelChecker(labelsTrue, labelsPred)
    val eachCount: Map[(Int, Int), Int] = labelsTrue.zip(labelsPred).groupBy(x => x).mapValues(_.length)
    eachCount.groupBy(_._1._1).mapValues(_.values.max).values.sum.toDouble / labelsTrue.length
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值