2020/07/09 -

引言

《Learning Spark》过程中只是简单介绍了mllib中的东西,没有一个完整的实践过程,暂时还没有去找有没有专门做这种的书,好像我看《spark in action》是有这部分内容,后续在看。本篇文章就利用这个鸢尾花的数据集来简单说明一下spark机器学习的过程,只是简单打下一个轮廓,然后记录使用过程中遇到的问题以及解决方案。
在本文中,主要使用新版面向DataFrame的机器学习接口ml,有时候也会涉及老版借口mllib。

简单总结

这部分代码不算麻烦,但是主要存在一下几个问题。

  1. 没有看到交叉验证的东西,数据集的划分也是自己来划分的(是不是有接口?)
  2. 中间提到了LabeledPoint在ml中没有找到,是不是说有更好的处理办法,就是面向df的方式
  3. spark的算法没有办法处理字符串性质的东西?如果是某个特征是字符串,那我转换成向量,里面是数值的,这样不就他会使用回归的方式来使用数据吗?
  4. 注意,这里的整个流程都是我自己来弄的, 最开始是参考文章[1],然后适配了自己的场景;但是可以看出,他最后使用的评估方式是spark自带的,我当时使用了一下,感觉有点费劲,就采用了sklearn的方式。

主要流程

列举一下机器学习的主要流程,这个算是老生长谈了,对于无需解释的部分,直接就在这里插入代码了。

  1. 加载数据,使用DataFrame的方式
    这里数据已经被加载到了hdfs的相应路径
iris_data = spark.read.options(inferschema='true').csv("/VChao/mllib_test/iris.data")
iris_data.printSchema()
数据类型

  1. 预处理
    这里的预处理不是针对数据内容的预处理,将数据格式转化为spark能够处理的。
  2. 选择算法
    这里算法选择随机森林。
  3. 学习过程,性能评估
    这部分的接口跟sklearn这种还不太一样,需要稍微调整。

预处理部分

(这里按照书《Learning Spark》上的说法,输入的变量应该是LabeledPoint形式,但是我看ml中没有这个东西,我才是不是他改变了一些处理方式,这里先不管,还是使用之前的方式)
预处理部分需要将DataFrame格式的数据转化为vector形式,首先要处理的就是,数据的类别是字符串,但LabeledPoint的label必须是浮点型,所以只能进行转换,其实,我感觉是不是这里不太对啊,按说机器学习的算法应该支持这种形式,还是说,sklearn只是帮我把这个工作给做了。

from pyspark.ml.feature import StringIndexerclass_label = StringIndexer(inputCol="_c4", outputCol="class")
index_model = class_label.fit(iris_data)
iris_data = index_model.transform(iris_data)
iris_data = iris_data.drop("_c4").cache()

此时的iris_data其中的类别已经是浮点类型的数据了,可以后续转化为LabelPointed形式。

转化为LabeledPoint

from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.linalg import Vectorsdata = iris_data.rdd.map(lambda row: LabeledPoint(row[-1], Vectors.dense(row[:-1])))

切分数据

train_ratio = 0.8
splits =[train_ratio, 1 - train_ratio]
train_data,test_data = data.randomSplit(splits)

选择算法并训练

from pyspark.mllib.tree import RandomForest
rf_model =RandomForest.trainClassifier(train_data,numClasses=3,numTrees=10, \categoricalFeaturesInfo={},featureSubsetStrategy='auto',impurity="gini")

从这里可以看出,直接就是一个训练过程,是不是我没有选对?

测试数据

predictions = rf_model.predict(test_data.map(lambda x:x.features))import numpy as np
pre = predictions.collect()
np_pre = np.array(pre)
labels = test_data.map(lambda x:x.label).collect()
np_labels = np.array(labels)

利用sklearn来显示性能

from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_reportprint confusion_matrix(np_labels, np_pre)
print classification_report(np_labels, np_pre,target_names=index_model.labels)
性能结果

整体代码已经上传至githubspark-machine-learning

参考文章

Spark实战:基于Spark的随机森林分类算法分析


http://www.taodudu.cc/news/show-2185523.html

相关文章:

  • 图解大数据 | Spark机器学习(上)-工作流与特征工程
  • 大数据学习笔记60:构建Spark机器学习系统
  • 手把手带你玩转Spark机器学习-专栏介绍
  • 大数据笔记--Spark机器学习(第二篇)
  • 手把手带你玩转Spark机器学习-使用Spark构建分类模型
  • 手把手带你玩转Spark机器学习-Spark的安装及使用
  • Spark机器学习解析
  • Spark机器学习
  • 大数据笔记--Spark机器学习(第一篇)
  • 图解机器学习笔记-1
  • 送书 | 图解机器学习—算法原理与Python语言实现
  • 图解机器学习—算法原理与Python语言实现(文末留言送书)
  • 图解机器学习:分类模型性能评估指标
  • 图解机器学习算法(2) | 模型评估方法与准则(机器学习通关指南·完结)
  • 还记得爆火的图解算法吗?现在图解机器学习算法书来了!送书10本!
  • 图解机器学习基本概念及分类
  • 图解机器学习算法(14) | PCA降维算法详解(机器学习通关指南·完结)
  • 白话图解机器学习里的Regularization正则化
  • 通俗易懂的图解机器学习之机器学习概论
  • 图解十大经典机器学习算法
  • 图解机器学习算法(9) | GBDT模型详解(机器学习通关指南·完结)
  • 图解机器学习算法 | 从入门到精通系列教程(机器学习通关指南·完结)
  • 图解机器学习算法(3) | KNN算法及其应用(机器学习通关指南·完结)
  • 图解机器学习chapter01
  • 图解机器学习算法(10) | XGBoost模型最全解析(机器学习通关指南·完结)
  • 图解机器学习算法书来了!
  • 图解机器学习算法(5) | 朴素贝叶斯算法详解(机器学习通关指南·完结)
  • 图解机器学习算法(11) | LightGBM模型详解(机器学习通关指南·完结)
  • 图解机器学习算法(8) | 回归树模型详解(机器学习通关指南·完结)
  • 图解机器学习算法(1) | 机器学习基础知识(机器学习通关指南·完结)

Spark机器学习实例相关推荐

  1. Spark机器学习库(MLlib)指南

    spark-1.6.1 机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib由一些通用的学习算法和工具组成,包括分 ...

  2. Spark机器学习之垃圾邮件分类

    Spark机器学习之垃圾邮件分类 步骤概述 通过HashingTF构建文本的特征向量,然后使用随机梯度下降算法实现逻辑回归,进而对邮件进行分类 垃圾邮件分类代码 导入相关的包 import org.a ...

  3. Spark机器学习管道 - Estimator

    Spark机器学习管道 - Estimator 一.实验目的 二.实验内容 三.实验原理 四.实验环境 五.实验步骤 5.1 启动Spark集群和Zeppelin服务器. 5.2 使用IDF esti ...

  4. 基于大数据的Uber数据实时监控(Part 1:Spark机器学习)

    导言 据Gartner称:到2020年,25亿辆联网汽车将成为物联网的主要对象.联网车辆预计每小时可以生成25GB的数据,对这些数据进行分析实现实时监控.大数据目前是10个主要领域之一,利用它可以使城 ...

  5. 用Spark机器学习数据流水线进行广告检测

    在这篇文章中,我们Spark的其它机器学习API,名为Spark ML,如果要用数据流水线来开发大数据应用程序的话,这个是推荐的解决方案.关键点: 了解机器学习数据流水线有关内容. 怎么用Apache ...

  6. Spark机器学习9· 实时机器学习(scala with sbt)

    Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors. ...

  7. Apache Spark机器学习.1.7 机器学习工作流示例

    1.7 机器学习工作流示例 为了进一步了解学习机器学习的工作流,在这里让我们学习一些例子. 本书后续章节会研究风险建模.欺诈检测.客户视图.流失预测和产品推荐.对于诸如此类的项目,目标往往是确定某些问 ...

  8. Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API

    Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API 关键词:Local vector,Labeled point,Local matrix,Distrib ...

  9. 【原创 HadoopSpark 动手实践 6】Spark 编程实例与案例演示

     [原创 Hadoop&Spark 动手实践 6]Spark 编程实例与案例演示 Spark 编程实例和简易电影分析系统的编写 目标: 1. 掌握理论:了解Spark编程的理论基础 2. 搭建 ...

  10. Spark机器学习实战 (十二) - 推荐系统实战

    0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 ...

最新文章

  1. 3w字带你揭开WebSocket的神秘面纱~
  2. ACM图灵奖获得者:想从大数据中获益,先解决集成问题!
  3. 程序升级触发阿里云自身安全机制导致的莫名问题
  4. 高级打字机【主席树】【滚动数组】【块状链表】
  5. Linux-find命令
  6. 直播预告丨加速消费金融行业运营体系新升级,驱动经营提质增效!
  7. go context之WithDeadline的使用
  8. Mybatis源码分析--Mapper接口的代理生成原理
  9. Mongodb定时备份脚本和清除脚本
  10. iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐
  11. 使用Zabbix监控memcached
  12. 在php中默认访问权限修饰符是,php中访问修饰符的知识点总结
  13. php数据保存txt文件怎么打开方式_php - 利用保存在TXT文件(PHP)中的数组数据 - SO中文参考 - www.soinside.com...
  14. 移动端APP测试概要
  15. c标准语言库里的i o函数,C语言文件I/O和标准I/O函数
  16. 计算机基础教程有access2010,Access2010数据库案例教程
  17. [设计模式]解释器模式
  18. arduino蓝牙主从机通讯
  19. Django站点通过系统部署到线上
  20. 小程序身份证号码保留前后4位其他用“*”代替

热门文章

  1. Point to Raster 工作原理
  2. 同人游戏开发工具巡礼——AVG(ADV)引擎篇
  3. Flash相关知识总结
  4. 时空平稳性,空间自相关、异质性与非平稳性
  5. SourceOffSite Server和Visual SourceSafe 6.0d锁死问题的解决
  6. 漂白android软件,原本图片漂白软件
  7. spring5教程(一)——Overview
  8. 用计算机从85加到98的和是,2018年职称计算机考试题库及答案
  9. 基于multisim14的函数信号发生器仿真
  10. 不知名程序员金山云大米云主机体验日志