第三章 spark2.3 mllib机器学习-mllib矩阵向量

本系列”spark mllib机器学习”,均以最新spark2.3.0版本为蓝本进行编写,参考书籍<< spark mllib机器学习 >>黄美灵版,转载请注明出处
GitHub地址:https://github.com/future-fu/learnsparkmllib

目录

  1. Breeze介绍
  2. BLAS介绍
  3. Mllib向量
  4. Mllib矩阵
  5. MLlib分布式矩阵

明细

1.Breeze介绍

Breeze包括线性代数,数值计算及优化;在Spark Mllib 机器学习的底层采用Breeze库.
举几个Breeze的实例如下,更多细节可以参考书籍

package ai.lifecode.breeze


import breeze.linalg.{DenseMatrix, DenseVector, diag}
import org.apache.spark.sql.SparkSession

/**
  * Created by future_fu on 2018/9/4 14:18.
  */
object BreezeDemo {
  def main(args: Array[String]): Unit = {
    val spark=SparkSession.builder()
      .master("local[3]")
      .appName("rdd handle")
      .getOrCreate()
    val sc=spark.sparkContext

    //1.创建Breeze
    val m1: DenseMatrix[Double] =DenseMatrix.zeros[Double](2,3)
    val m2=DenseMatrix.eye[Double](3)

    val v1: DenseVector[Double] =DenseVector.zeros[Double](3)
    val v2: DenseVector[Double] =DenseVector.ones[Double](4)
    val v3: DenseVector[Int] =DenseVector.fill(3){5}
    val v4=DenseVector.range(1,10,2)
    val v5=diag(DenseVector(1.0,2.0,3.0))
    println("---m1---")
    println(m1)
    println("---m2---")
    println(m2)
    println("---v1---")
    println(v1)
    println("---v2---")
    println(v2)
    println("---v3---")
    println(v3)
    println("---v4---")
    println(v4)
    println("---v5---")
    println(v5)

  }
}

打印结果如下:

---m1---
0.0  0.0  0.0  
0.0  0.0  0.0  
---m2---
1.0  0.0  0.0  
0.0  1.0  0.0  
0.0  0.0  1.0  
---v1---
DenseVector(0.0, 0.0, 0.0)
---v2---
DenseVector(1.0, 1.0, 1.0, 1.0)
---v3---
DenseVector(5, 5, 5)
---v4---
DenseVector(1, 3, 5, 7, 9)
---v5---
1.0  0.0  0.0  
0.0  2.0  0.0  
0.0  0.0  3.0  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K-means 算法是一种无监督学习算法,用于将数据集分成 K 个簇。Spark MLlib实现了 K-means 算法,可以用于大规模数据的聚类。 以下是 Spark MLlib 实现 K-means 算法的基本步骤: 1. 加载数据集,将数据集转换为特征向量 2. 初始化 K 个簇的质心 3. 对每个样本,将其分配到距离最近的簇 4. 根据分配结果,重新计算每个簇的质心 5. 重复步骤 3 和 4,直到达到最大迭代次数或收敛 以下是一个简单的代码示例: ```python from pyspark.ml.clustering import KMeans from pyspark.ml.evaluation import ClusteringEvaluator from pyspark.ml.feature import VectorAssembler # 加载数据集 data = spark.read.format("csv").load("path/to/data.csv", header=True, inferSchema=True) # 转换数据集为特征向量 assembler = VectorAssembler(inputCols=data.columns, outputCol="features") dataset = assembler.transform(data) # 初始化 KMeans 模型 kmeans = KMeans().setK(2).setSeed(1) # 训练模型 model = kmeans.fit(dataset) # 输出簇中心点 centers = model.clusterCenters() for center in centers: print(center) # 预测数据集中每个样本所属的簇 predictions = model.transform(dataset) # 评估模型 evaluator = ClusteringEvaluator() silhouette = evaluator.evaluate(predictions) print("Silhouette with squared euclidean distance = " + str(silhouette)) ``` 这里假设数据集已经被加载并且包含两个特征。首先,使用 VectorAssembler 将数据集转换为特征向量。然后,初始化 KMeans 模型并训练它。最后,输出每个簇的中心点和模型评估结果。需要注意的是,这里使用了默认的欧几里得距离作为距离度量。如果需要使用其他距离度量,可以通过设置 distanceMeasure 参数来实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值