大数据(8x)机器学习库SparkML

大数据最新职业院校大数据技术——数据挖掘1(2),大厂架构师经验分享 import Bds.DataFrameUtils._ // 这是封装的一个获取各种数据仓库配置项的模块。// 非数值类型的数据需要先进行StringIndexer处理后再进行onehot。// 如果输入字段本身就数字类型,那么稀疏向量的个数是最大值+1,// 定义一个UDF,用于计算两个向量的余弦相似度。* @return 两个列表的杰卡德相似度。// 其实就是把类型改为从0开始的键。// 因为默认从0开始表示第一个类型。* 计算两个列表的杰卡德相似度。// 获取mysql配置项。 阅读详情

0、环境配置

  1. CentOS7安装Scala和Spark
  2. Win10安装Scala和Spark
  3. pom.xml额外配置
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-mllib -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_2.12</artifactId>
    <version>3.0.2</version>
</dependency>
  1. 创建Hello.scala并写入外壳代码(复制用)
import org.apache.spark.sql.SparkSession

object Hello {
  def main(args: Array[String]): Unit = {
    //创建SparkSession对象
    val spark: SparkSession = SparkSession.builder()
      .master("local[*]").appName("a1").getOrCreate()
    //隐式转换支持
    import spark.implicits._
  }
}

1、SparkMLlib简介

  • 全称:Spark’s machine learning library
  • 译名:Spark的机器学习库
主要功能简述详细
ML Algorithms机器学习算法分类、回归、聚类、协同过滤
Featurization特征工程特征的 抽取、转换、选择、降维
Pipelines管道tools for constructing, evaluating, and tuning ML Pipelines
Persistence持久化保存和加载模型
Utilities实用工具线性代数、统计学

补充说明
本攻略Spark版本≥3,建议使用基于DataFrame的APIspark.ml,称作Spark ML

2、内置样本(Data sources)

  1. Spark内置样本在$SPARK_HOME/data
  2. 我们去到Linux服务器,把内置样本上传到HDFS,然后可以进入spark-shell来读数据
cd $SPARK_HOME/data/mllib/
hadoop fs -put sample_linear_regression_data.txt /
spark-shell
spark.read.format("libsvm").load("/sample_linear_regression_data.txt").show(5,99)

样本长相

3、回归(Regression)

数据续2

import org.apache.spark.ml.regression.LinearRegression
// 样本加载
val xy = spark.read.format("libsvm").load("/sample_linear_regression_data.txt")
// 建模
val lr = new LinearRegression().setMaxIter(9).setRegParam(.3).setElasticNetParam(.8)
// 训练
val lrModel = lr.fit(xy)
// 打印系数和截距
print(s"Coefficients: ${lrModel.coefficients} Intercept: ${lrModel.intercept}")

4、分类(Classification)

下面以文本分类为例

// 创建数据
val label2comment = Map(0 -> "好", 1 -> "中", 2 -> "差")
val sentenceDf = Seq(
  (0, "优秀 好味 精彩 软滑 白嫩 干货 超神 醍醐灌顶 不要不要的"),
  (1, "普通 一般般 无感 中规中矩 乏味 中立 还行 可以可以"),
  (2, "难吃 金玉其外 发货慢 无语 弱鸡 呵呵 水货 渣渣 超鬼"),
).toDF("label", "sentence")
// 特征工程
import org.apache.spark.ml.feature.{HashingTF, IDF, Tokenizer}
// 分词
val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
val wordsDf = tokenizer.transform(sentenceDf)
// 编码
val hashingTF = new HashingTF()
  .setInputCol("words").setOutputCol("rawFeatures").setNumFeatures(10)
val hashingDf = hashingTF.transform(wordsDf)
// TF-IDF训练+转换
val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
val idfModel = idf.fit(hashingDf)
val tfidfDf = idfModel.transform(hashingDf)
tfidfDf.show(numRows = 9, truncate = false)
// 逻辑回归
import org.apache.spark.ml.classification.LogisticRegression
val lr = new LogisticRegression()
  .setFeaturesCol("features")
  .setLabelCol("label")
  .setPredictionCol("prediction")
  .setProbabilityCol("Probability")
// 逻辑回归拟合
val fittedLr = lr.fit(tfidfDf)
// 预测
val prediction = fittedLr.transform(
  idfModel.transform(
    hashingTF.transform(
      tokenizer.transform(
        Seq("无感 还行", "呵呵 渣渣", "干货 好味").toDF("sentence")
      )
    )
  )
)
prediction.show()

打印结果

5、流水线(Pipelines)

  • pipeline译作管道,其复数形式pipelines可译为流水线
  • 个人理解:把多道工序串成一条流水线
  • 代码示例,留意Pipeline(第26行)
import org.apache.spark.ml.{Pipeline, PipelineModel}
import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.feature.{HashingTF, Tokenizer}
import org.apache.spark.ml.linalg.Vector
import org.apache.spark.sql.Row

// 训练集
val training = spark.createDataFrame(Seq(
  (0L, "a b c d e spark", 1.0),
  (1L, "b d", 0.0),
  (2L, "spark f g h", 1.0),
  (3L, "hadoop mapreduce", 0.0)
)).toDF("id", "text", "label")

// 安装一个由【tokenizer hashingTF lr】串成的流水线
val tokenizer = new Tokenizer()
  .setInputCol("text")
  .setOutputCol("words")
val hashingTF = new HashingTF()
  .setNumFeatures(1000)
  .setInputCol(tokenizer.getOutputCol)
  .setOutputCol("features")
val lr = new LogisticRegression()
  .setMaxIter(10)
  .setRegParam(0.001)
val pipeline = new Pipeline()
  .setStages(Array(tokenizer, hashingTF, lr))

// 输入训练数据来拟合pipeline
val model = pipeline.fit(training)

// 保存拟合好的pipeline到磁盘
model.write.overwrite().save("/tmp/spark-logistic-regression-model")

// 保存还没拟合的pipeline到磁盘
pipeline.write.overwrite().save("/tmp/unfit-lr-model")

// 加载拟合好的pipeline
val sameModel = PipelineModel.load("/tmp/spark-logistic-regression-model")

// 测试集
val test = spark.createDataFrame(Seq(
  (4L, "spark i j k"),
  (5L, "l m n"),
  (6L, "spark hadoop spark"),
  (7L, "apache hadoop")
)).toDF("id", "text")

// 预测
model.transform(test)
  .select("id", "text", "probability", "prediction")
  .collect()
  .foreach { case Row(id: Long, text: String, prob: Vector, prediction: Double) =>
    println(s"($id, $text) --> prob=$prob, prediction=$prediction")
  }

6、Frequent Pattern Mining

例如:
a b c
b c d
↓↓↓
ab共现1次
bc共现2次
ad共现0次

// 创建数据
val df = Seq(
"1 2 5",
"1 2 3 5",
"1 2"
).map(_.split(" ")).toDF("items")
// Frequent Pattern Growth 建模训练
import org.apache.spark.ml.fpm.FPGrowth
val fpGrowth = new FPGrowth().setItemsCol("items").setMinSupport(0.5).setMinConfidence(0.6)
val model = fpGrowth.fit(df)

// 共现频数
model.freqItemsets.show()
/*
+---------+----+
|    items|freq|
+---------+----+
|      [1]|   3|
|      [2]|   3|
|   [2, 1]|   3|
|      [5]|   2|
|   [5, 2]|   2|
|[5, 2, 1]|   2|
|   [5, 1]|   2|
+---------+----+
*/

// 关联规则
model.associationRules.show()
/*
+----------+----------+------------------+----+
|antecedent|consequent|        confidence|lift|
+----------+----------+------------------+----+
|    [2, 1]|       [5]|0.6666666666666666| 1.0|
|    [5, 1]|       [2]|               1.0| 1.0|
|       [2]|       [1]|               1.0| 1.0|
|       [2]|       [5]|0.6666666666666666| 1.0|
|       [5]|       [2]|               1.0| 1.0|
|       [5]|       [1]|               1.0| 1.0|
|       [1]|       [2]|               1.0| 1.0|
|       [1]|       [5]|0.6666666666666666| 1.0|
|    [5, 2]|       [1]|               1.0| 1.0|
+----------+----------+------------------+----+
*/


// 预测
model.transform(Seq(
  "1 2",
  "1 5",
  "1 2 3 5",
  "1 2 3",
  "5 2"
).map(_.split(" ")).toDF("items")).show()
/*
+------------+----------+
|       items|prediction|
+------------+----------+
|      [1, 2]|       [5]|
|      [1, 5]|       [2]|
|[1, 2, 3, 5]|        []|
|   [1, 2, 3]|       [5]|
|      [5, 2]|       [1]|
+------------+----------+
*/
方法说明默认值
setItemsCol设置 输入列的名称items
setMinSupport过滤低频;最低门槛=minSupport × \times ×size-of-the-dataset0.3
setMinConfidence设定置信度门槛,低于该值将被过滤;定义域[0,1]0.8

7、协同过滤(Collaborative Filtering)

  • 思想:想看电影,但不造看啥,此时可以问兴趣相近的朋友,有什么好电影推荐。

以 Alternating Least Squares 交替最小二乘 矩阵分解 为例

一个稀疏矩阵,可以使用Alternating Least Squares分解成两个小矩阵相乘
然后两个小矩阵相乘,就可以估算出稀疏矩阵缺失的值
所谓交替,就是交替训练两个矩阵(固定I训练U,固定U训练I)

// 创建SparkSession对象
import org.apache.spark.sql.SparkSession
val spark: SparkSession = SparkSession.builder()
  .master("local[*]").appName("a0").getOrCreate()
// 隐式转换支持
import spark.implicits._
// 创建数据
val df = Seq(
  (1, 1, 5), (1, 2, 3), (1, 3, 1), (1, 4, 5), (1, 6, 2),
  (2, 1, 5), (2, 2, 3), (2, 5, 4), (2, 6, 2), (2, 7, 1),
  (3, 2, 3), (3, 3, 1), (3, 4, 4), (3, 5, 5), (3, 7, 1),
  (4, 2, 3), (4, 4, 5), (4, 7, 1),
  (5, 1, 5), (5, 4, 4), (5, 5, 4), (5, 6, 2),
  (6, 1, 5), (6, 3, 1), (6, 6, 4), (6, 7, 4),
  (7, 1, 5), (7, 4, 1), (7, 5, 1), (7, 7, 5),
  (8, 1, 5), (8, 2, 3), (8, 5, 2), (8, 6, 5),
).toDF("user", "item", "rating")
// Alternating Least Squares (ALS) matrix factorization
import org.apache.spark.ml.recommendation.ALS
val als = new ALS().setRank(5) //rank:矩阵分解的秩
val model = als.fit(df)
// 物品特征
model.itemFactors.sort("id").show(false)
// 用户特征
model.userFactors.sort("id").show(false)
// 为每个用户推荐物品
model.recommendForAllUsers(7).sort("user").show(false)
// 为每个物品推荐用户
model.recommendForAllItems(8).sort("item").show(false)
常用参数原文译文默认值
rankParam for rank of the matrix factorization (positive)矩阵分解的秩,该参数是正数10
implicitPrefsParam to decide whether to use implicit preference是否使用隐含偏好false
ratingColParam for the column name for ratings评价列名称rating
userColParam for the column name for user ids用户列名称,该输入列的数据要求数字类型user
itemColParam for the column name for item ids.物品列名称,该输入列的数据要求数字类型item
regParamParam for regularization parameter正则化参数,要求≥00.1
maxIterParam for maximum number of iterations训练的最大迭代次数,要求≥010

8、聚类(Clustering)

// 创建SparkSession对象
import org.apache.spark.sql.SparkSession
val spark: SparkSession = SparkSession.builder()
  .master("local[*]").appName("a0").getOrCreate()
// 创建数据
val dataset = spark.read.format("libsvm").load(
  "D:\\coding\\scala\\lib\\spark-3.0.2\\data\\mllib\\sample_kmeans_data.txt")
dataset.show(false)
/*
+-----+-------------------------+
|label|features                 |
+-----+-------------------------+
|0.0  |(3,[],[])                |
|1.0  |(3,[0,1,2],[0.1,0.1,0.1])|
|2.0  |(3,[0,1,2],[0.2,0.2,0.2])|
|3.0  |(3,[0,1,2],[9.0,9.0,9.0])|
|4.0  |(3,[0,1,2],[9.1,9.1,9.1])|
|5.0  |(3,[0,1,2],[9.2,9.2,9.2])|
+-----+-------------------------+
*/
// 建模、训练
import org.apache.spark.ml.clustering.KMeans
val kmeans = new KMeans().setK(2)
val model = kmeans.fit(dataset)
// 预测
val predictions = model.transform(dataset)
predictions.show(false)
/*
+-----+-------------------------+----------+
|label|features                 |prediction|
+-----+-------------------------+----------+
|0.0  |(3,[],[])                |0         |
|1.0  |(3,[0,1,2],[0.1,0.1,0.1])|0         |
|2.0  |(3,[0,1,2],[0.2,0.2,0.2])|0         |
|3.0  |(3,[0,1,2],[9.0,9.0,9.0])|1         |
|4.0  |(3,[0,1,2],[9.1,9.1,9.1])|1         |
|5.0  |(3,[0,1,2],[9.2,9.2,9.2])|1         |
+-----+-------------------------+----------+
*/
// 聚类中心
println("Cluster Centers: ")
model.clusterCenters.foreach(println)
/*
[0.1,0.1,0.1]
[9.1,9.1,9.1]
*/
// 聚类评价:轮廓系数
import org.apache.spark.ml.evaluation.ClusteringEvaluator
val evaluator = new ClusteringEvaluator()
val silhouette = evaluator.evaluate(predictions)
println(s"Silhouette with squared euclidean distance = $silhouette")
/* Silhouette with squared euclidean distance = 0.9997530305375207 */

Appendix

en🔉cn
antecedentˌæntɪˈsiːdntn. 前情;祖先;(语法)先行词;adj. 先前的;(语法)先行的
consequentˈkɑːnsɪkwentadj. 随之发生的,作为结果的;合乎逻辑的;n. (逻辑)后件,推断;分母
confidenceˈkɑːnfɪdənsn. 信心;置信度
liftlɪft(价格)上涨;(音量)提高
collaborativekəˈlæbəreɪtɪvadj. 合作的,协作的
ALSAlternating Least Squares交替最小二乘法
通过最小化误差的平方和寻找数据的最佳函数匹配
alternateˈɔːltərnətv. (使)交替,(使)轮流
factorizationˌfæktərəˈzeɪʃənn. [数] 因子分解;[数] 因式分解
preferenceˈprefrənsn. 偏爱;优先权
2024年大数据最全【Spark MLlib】(五)随机森林(Random Forest(1),作为大数据开发程序员应该怎样去规划自己的学习路线 单机版本的决策数生成过程是通过递归调用(本质上是深度优先)的方式构造树,在构造树的同时,需要移动数据,将同一个子节点的数据移动到一起分布式环境下采用的策略是逐层构建树节点(本质上是广度优先),这样遍历所有数据的次数 等于所有树中的最大层数。每次遍历时,只需要计算每个节点所有切分点统计参数,遍历完后,根据节点的特征划分,决定是否切分,以及如何切分。 阅读详情

相关推荐

基于Spark与MLLib的房价预测实战:线性回归模型详解

Apache Spark MLlib 是 Spark 提供的机器学习库,专为大规模数据处理而设计。其核心目标是简化机器学习在分布式环境下的实现过程。MLlib 提供了丰富的算法实现,包括分类、回归、聚类、协同过滤、降维等,适用于各种常见的机器学习任务。MLlib 的基本组成包括以下几个模块:模块功能提供向量、矩阵等线性代数数据结构线性回归、逻辑回归等回归模型支持向量机、朴素贝叶斯、决策树等分类模型K-Means、高斯混合模型等聚类算法协同过滤(ALS)

weixin_42513870的博客 933

Spark学习之路——9.Spark ML

一、简介 基于RDD的API spark.mllib已进入维护模式。 Spark ML是Spark MLlib的一种新的API,它有下面的优点: 1.面向DataFrame,基于RDD进一步封装,拥有功能更多的API 2.具有Pipeline功能,可以实现复杂的机器学习模型 3.性能得到提升 二、ML Pipeline 一个pipeline 在结构上会包含一个或多个Stage,每一个...

Nelson_hehe的博客 8242

PHP 对接建行生活订单推送接口

php对接建行订单推送

qq_43647026的博客 562

Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

- “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 - “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。” 一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and perform

yirenboy的专栏 8911

告别概念晕眩:用TC3xx SMU和TLF35584的配置实例,搞懂ASIL D功能安全落地

本文通过英飞凌TC3xx系列MCU的SMU模块与TLF35584电源管理芯片的协同配置实例,详细解析了如何实现符合ASIL D功能安全标准的刹车辅助ECU。文章涵盖SMU报警源配置、响应动作类型、TLF35584的安全状态管理,以及构建完整安全闭环的实践方法,帮助工程师将抽象的安全概念落地为具体设计方案。

weixin_30647065的博客 439

app逆向分析案例-95分

先把justtrusmeplus打开设置好95分,开始抓包,得到结果为: https://www.95fenapp.com/api_goods/list/v3.0?is_all=1&keywords=%E7%A7%91%E6%AF%94& page=1&page_size=20 &publish_timestamp=0 &scene=2&scene_type=95fen_android_search_personal&sn=SearchList

weixin_41763171的博客 2747

SparkML(一)

什么是机器学习 百度: 机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。 在我看来机器学习就是给你的计算机一套逻辑(建模训练),让他根据这套逻辑去对数据进行处理(测试)。 Spark ML Spark MLlib是Spark的机器学习(ML)库。它的目标是使实用的机器学习可扩展且容易 数据处理 spark ML有2种类型局部向量:dense和sparse。 稠

nntcdhl的博客 2272

人工智能训练师三级·模型生命周期真题40题|训练→评估→调优全链路通关

本文为人工智能训练师三级考试真题解析系列第2篇,聚焦模型生命周期全链路(训练→评估→调优)。内容包含40道精选真题,覆盖数据划分、模型训练、评估指标、超参数调优4个核心阶段。重点考察:1)数据集的合理划分方法(留出法、交叉验证);2)模型训练的基本原理;3)关键评估指标(准确率、召回率、F1等)的应用场景;4)超参数调优技术(网格搜索、随机搜索等)。通过真题解析帮助考生系统掌握模型生命周期的闭环迭代方法论,提升从数据准备到模型优化的全流程实践能力。适合备考人工智能训练师三级认证的考生学习参考。

白话机器学习 90

【Spark】分类和回归算法-分类

同步于Buracag的博客 本节主要讲Spark ML中关于分类算法的实现。示例的算法Demo包含:LR、DT、RF、GBTs、多层感知器、线性支持向量机、One-vs-Rest分类器以及NB等。 文章目录1. Logistic regression1.1 二分类LR1.2 多分类LR2. 决策树分类器3. 随机森林分类器4. 梯度提升树分类器5. 多层感知器分类器6. 线性支持向量机7. One...

buracag_mc的博客 1442

SAP CPI 和 PO 的区别

SAP CPI适合云集成轻量级的集成需求,并且由于其云架构,具有快速部署低维护高度可扩展的特点。SAP PO更适合本地系统集成复杂的集成场景和高度定制化的需求,并且对于已经有 SAP 基础设施的企业来说,PO 提供了更多的控制和灵活性。选择使用哪个平台通常取决于企业的技术架构、集成需求、预算以及对灵活性和控制的需求。如果企业主要使用 SAP 的本地系统,并且有复杂的集成需求,那么 SAP PO 是一个理想的选择。如果企业更多地依赖云应用,并希望简化集成操作,那么 SAP CPI 更加适合。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1875

链接文件及功能安全:基于Tasking的LSL链接文件知识点梳理及实际应用分析

本文旨在记录研究链接文件时所遇到的问题及个人理解,以便日后查阅。在探索过程中,我遇到了诸多问题,同时对链接文件有了初步的认识。通过记录这些问题与理解,我希望能够为后续的研究提供清晰的思路和有价值的参考。这不仅是对研究过程的总结,更是对未来学习和实践的有力支持。

梦想技术家 1106

Spark - ML:开启大数据机器学习的神奇之门

Spark - ML 凭借其强大的分布式计算能力、丰富的算法库、灵活的特征工程工具和高效的模型评估机制,在大数据与机器学习领域展现出了巨大的优势。它已经在电商、金融、医疗等众多行业得到了广泛的应用,为企业和机构解决了实际业务中的关键问题,带来了显著的经济效益和社会效益。随着大数据和人工智能技术的不断发展,Spark - ML 也将迎来更广阔的发展前景。在未来,随着数据量的持续爆炸式增长,Spark - ML 将不断优化其性能,进一步提升在海量数据处理上的效率,以满足企业对实时性和准确性的更高要求。

大雨淅淅的博客 1489

优化相机姿态和三维点云的Bundle Adjustment算法及其编程实现

重投影误差是指将优化后的相机姿态和三维点云投影到图像平面上,与对应的图像特征点之间的距离。Bundle Adjustment(捆绑调整)是一种用于同时优化相机姿态和三维点云的算法,它可以提高三维重建和相机定位的精度。下面是一个简单的Python示例代码,演示了如何使用Bundle Adjustment算法优化相机姿态和三维点云的参数。通过以上步骤,Bundle Adjustment算法可以不断地优化相机姿态和三维点云的参数,从而提高重建和定位的精度。Bundle Adjustment算法的编程实现。

CyberXZ的博客 741

SparkML Pipeline在大数据机器学习中的工程实践与避坑指南

机器学习流水线(Pipeline)是保障模型训练与推理一致性的核心机制,其本质是将数据预处理、特征工程和模型训练封装为可序列化、可复用的有向无环图(DAG)。通过强制固化数据血缘与变换逻辑,Pipeline解决了特征偏移、词典不一致、归一化遗漏等典型工程问题。在HMP等真实传感器数据场景中,StringIndexer构建全局词典、OneHotEncoder生成稀疏向量、VectorAssembler定义特征空间坐标系、Normalizer实施L2范数归一化等关键步骤,共同构成端到端的可靠数据通道。该模式不仅

aikb6223的博客 432

电子科技大学计算机预推免(最终去向)

电子科技大学,预推免报名时必须要有一封本校老师写的推荐信,推荐信基本上就是复试的入场券,所以一定要提前联系老师,拿到推荐信。只要有机会进了面试,我觉得老师对于双非并不歧视,面试的个人表现才是关键性决定因素,技巧性也是很强的,如果有需要帮助的,欢迎私信~~

D1379951481的博客 3368

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

2024年最新【Spark ML】(二)Spark ML 分类算法_spark分类算法(1),View的这些基础知识你必须要知道

主要讲Spark ML中关于分类算法的实现。示例的算法Demo包含:LR、DT、RF、GBTs、多层感知器、线性支持向量机、One-vs-Rest分类器以及NB等。

2401_84182906的博客 1160

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SparkML Pipeline工程实践:构建生产级特征处理流水线

SparkML Pipeline 是 Apache Spark 中实现机器学习工作流标准化与可复现性的核心机制,其本质是将特征工程、数据转换与模型训练封装为强约束的原子化流程。它通过 Estimator/Transformer 范式确保训练与推理逻辑严格一致,从根本上解决数据漂移、状态不一致和人工预处理不可复现等典型工程痛点。在物联网、传感器分析等大数据场景中,Pipeline 对 StringIndexer 映射一致性、OneHotEncoder 稀疏表示、VectorAssembler 向量整合及 No

Coding 378

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Apache Spark 2.x Machine Learning Cookbook(1)

第1章:使用Scala使用Spark进行实用的机器学习 第2章:足够的线性代数用于Spark机器学习 第3章:Spark的三个机器学习数据火枪手-一起完美 第4章:实施强大的机器学习系统的常用食谱 第5章:Spark 2.0中具有回归和分类功能的实用机器学习-第一部分 第6章:Spark 2.0中具有回归和分类功能的实用机器学习-第二部分 第7章:可随Spark扩展的推荐引擎 第8章...

wangjunji34478的专栏 535

职业院校大数据技术——数据挖掘1,灵魂拷问

import Bds.DataFrameUtils._ // 这是封装的一个获取各种数据仓库配置项的模块。// 非数值类型的数据需要先进行StringIndexer处理后再进行onehot。(img-MrZDOlN3-1713205281500)]// 如果输入字段本身就数字类型,那么稀疏向量的个数是最大值+1,// 定义一个UDF,用于计算两个向量的余弦相似度。// 其实就是把类型改为从0开始的键。// 因为默认从0开始表示第一个类型。* 计算两个列表的杰卡德相似度。// 获取mysql配置项。

2401_84159966的博客 1062

最全【Spark ML】(二)Spark ML 分类算法_spark分类算法,2024年最新从入门到精通的大数据开发进阶学习笔记整理

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! Coefficients: 3 X 4 CSRMatrix (0,3) 0.3176 (1,2) -0.7804 (1,3) -0.377 Intercept:

2401_84166376的博客 700

大数据最新职业院校大数据技术——数据挖掘1,程序员怎样优雅度过35岁中年危机

/ assembled对feature字段里面的每个值做.setWithStd(true).setWithMean(true)处理。import Bds.DataFrameUtils._ // 这是封装的一个获取各种数据仓库配置项的模块。// 非数值类型的数据需要先进行StringIndexer处理后再进行onehot。// 如果输入字段本身就数字类型,那么稀疏向量的个数是最大值+1,// 定义一个UDF,用于计算两个向量的余弦相似度。// 其实就是把类型改为从0开始的键。// 获取mysql配置项。

2401_84572976的博客 671

2024年大数据最全【Spark MLlib】(五)随机森林,大数据开发面试你必须要知道的那些知识

作为特征列(除去No,year,pm),levelNum作为label列,使用训练集、随机森林算法进行分类建模。使用分类模型对测试集进行预测对预测结果df进行处理,基于prediction列生成predictionStr(0-5转换优-严重污染),对结果进行评估。作为特征列(除去No,year,pm),pm作为label列,使用训练集、随机森林算法进行回归建模,使用回归模型对测试集进行预测,并评估。3、按照下面标准处理pm列,数字结果放进(levelNum)列,字符串结果放进(levelStr)列。

2401_84166965的博客 515

SparkML实战之二:Kmeans

package class8import org.apache.log4j.{Level, Logger} import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.mllib.clustering.KMeans import org.apache.spark.mllib.linalg.Vectors/**

岸芷汀兰 1731

SparkMl,随机森林预测模型demo

// 获取到hive中的数据 train_data= spark.sql("select * from events.train_data").withColumnRenamed("user_interested", "label") // 将字段全部双精度 df = train_data.select([col(c).cast(DoubleType()) for c in train_dat...

qq_41733481的博客 718

大数据学习整理篇(六)CentOS 7.8搭建Zeppelin 0.9.0-preview2最新版,并使用phoenix访问hbase

基于项目中要使用Spark的原因,所以使用Zeppelin使用Spark ML,并进行数据展示是比较好的选择,在搭建0.9.0的时候也解决了几个入坑问题,现在把具体情况说明下: 1.首先下载最新的0.9.0-preview2版本 下载1.5G的zeppelin-0.9.0-preview2-bin-all.tgz 2.下载完后,使用tar -xzvf解压文件 3.修改/etc/profile文件,最下面添加如下一句: export JAVA_TOOL_OPTIONS="-Dzep...

astra_zhao的专栏 622

2024年最全【Spark ML】(二)Spark ML 分类算法_spark分类算法,2024年最新写给正在求职的大数据开发开发

以LibSVM格式加载数据集,将其拆分为训练集和测试集,在第一个数据集上训练,然后在保留的测试集上进行评估。这些帮助标记和分类特征的索引类别,向决策树算法可识别的DataFrame添加元数据。在spark.ml中,逻辑回归可以用于通过二项逻辑回归来预测二元结果,或者它可以用于通过使用多项逻辑回归来预测多类结果。使用family参数在这两个算法之间进行选择,或者保持不设置,Spark将推断出正确的变量。通过将’family’参数设置为“multinomial”,可以将多项逻辑回归用于二元分类。

2401_84591827的博客 585
上一篇: 大数据(8q)流计算updateStateByKey
下一篇: 大数据(5a)HBase入门:安装、读写、架构、数据视图、数据模型
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值