大数据机器学习之KNN(k近邻)算法Spark mllib实现案例

本文介绍了如何在大数据背景下,利用Spark的mllib模块实现KNN(k近邻)算法。虽然Spark官方未直接支持KNN,但通过自定义实现,可以有效地进行分类计算。在案例中,探讨了数据准备、KNN算法的本质以及其在大数据场景下,借助分布式计算的优势,解决了计算量大的问题,使得KNN在实际应用中更具可行性。
摘要由CSDN通过智能技术生成

大数据机器学习之KNN(k近邻)算法Spark mllib实现案例

背景

  1. 在大数据场景下,spark框架提供了支持分类,聚合,协同过滤,回归四大类场景的mllib模块
  2. 本文讲述的knn刚好是spark mllib不支持,但可以自行实现的算法。

案例

  1. 数据
  • 标注的训练数据
label,f1,f2,f3,f4,f5
0,10,20,30,40,30
0,12,22,29,42,35
0,11,21,31,40,34
0,13,22,30,42,32
0,12,22,32,41,33
0,10,21,33,45,35
1,30,11,21,40,34
1,33,10,20,43,30
1,30,12,23,40,33
1,32,10,20,42,33
1,30,13,20,42,30
1,30,09,22,41,32
  • 测试数据
id,f1,f2,f3,f4,f5
1,11,21,31,44,32
2,14,26,32,39,30
3,32,14,21,42,32
4,34,12,22,42,34
5,34,12,22,42,34
  1. 代码实现
import cn.doitedu.commons.util.SparkUtil
import org.apache.log4j.{
   Level, Logger}
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.sql.expressions.{
   UserDefinedFunction, Window}
import org.apache.spark.sql.types.{
   DataTypes, StructType}

import scala.collection.mutable

/**
  * KNN 人群分类计算
  */
object KNNClassify {
   

  def main(args: Array[String]): Unit = {
   

    // cn.doitedu.ml.demo.KNNClassify
    val logger = Logger.getLogger(this.getClass.getName)
    logger.setLevel(Level.DEBUG)

    // 屏蔽掉spark中自己的日志  spark的日志logger对象的名字都是 org.apache.spark.*
    Logger.getLogger(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值