Spark机器学习实例
2020/07/09 -
引言
《Learning Spark》过程中只是简单介绍了mllib中的东西,没有一个完整的实践过程,暂时还没有去找有没有专门做这种的书,好像我看《spark in action》是有这部分内容,后续在看。本篇文章就利用这个鸢尾花的数据集来简单说明一下spark机器学习的过程,只是简单打下一个轮廓,然后记录使用过程中遇到的问题以及解决方案。
在本文中,主要使用新版面向DataFrame的机器学习接口ml,有时候也会涉及老版借口mllib。
简单总结
这部分代码不算麻烦,但是主要存在一下几个问题。
- 没有看到交叉验证的东西,数据集的划分也是自己来划分的(是不是有接口?)
- 中间提到了LabeledPoint在ml中没有找到,是不是说有更好的处理办法,就是面向df的方式
- spark的算法没有办法处理字符串性质的东西?如果是某个特征是字符串,那我转换成向量,里面是数值的,这样不就他会使用回归的方式来使用数据吗?
- 注意,这里的整个流程都是我自己来弄的, 最开始是参考文章[1],然后适配了自己的场景;但是可以看出,他最后使用的评估方式是spark自带的,我当时使用了一下,感觉有点费劲,就采用了sklearn的方式。
主要流程
列举一下机器学习的主要流程,这个算是老生长谈了,对于无需解释的部分,直接就在这里插入代码了。
- 加载数据,使用DataFrame的方式
这里数据已经被加载到了hdfs的相应路径
iris_data = spark.read.options(inferschema='true').csv("/VChao/mllib_test/iris.data")
iris_data.printSchema()
- 预处理
这里的预处理不是针对数据内容的预处理,将数据格式转化为spark能够处理的。 - 选择算法
这里算法选择随机森林。 - 学习过程,性能评估
这部分的接口跟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机器学习实例相关推荐
- Spark机器学习库(MLlib)指南
spark-1.6.1 机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib由一些通用的学习算法和工具组成,包括分 ...
- Spark机器学习之垃圾邮件分类
Spark机器学习之垃圾邮件分类 步骤概述 通过HashingTF构建文本的特征向量,然后使用随机梯度下降算法实现逻辑回归,进而对邮件进行分类 垃圾邮件分类代码 导入相关的包 import org.a ...
- Spark机器学习管道 - Estimator
Spark机器学习管道 - Estimator 一.实验目的 二.实验内容 三.实验原理 四.实验环境 五.实验步骤 5.1 启动Spark集群和Zeppelin服务器. 5.2 使用IDF esti ...
- 基于大数据的Uber数据实时监控(Part 1:Spark机器学习)
导言 据Gartner称:到2020年,25亿辆联网汽车将成为物联网的主要对象.联网车辆预计每小时可以生成25GB的数据,对这些数据进行分析实现实时监控.大数据目前是10个主要领域之一,利用它可以使城 ...
- 用Spark机器学习数据流水线进行广告检测
在这篇文章中,我们Spark的其它机器学习API,名为Spark ML,如果要用数据流水线来开发大数据应用程序的话,这个是推荐的解决方案.关键点: 了解机器学习数据流水线有关内容. 怎么用Apache ...
- Spark机器学习9· 实时机器学习(scala with sbt)
Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors. ...
- Apache Spark机器学习.1.7 机器学习工作流示例
1.7 机器学习工作流示例 为了进一步了解学习机器学习的工作流,在这里让我们学习一些例子. 本书后续章节会研究风险建模.欺诈检测.客户视图.流失预测和产品推荐.对于诸如此类的项目,目标往往是确定某些问 ...
- Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API
Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API 关键词:Local vector,Labeled point,Local matrix,Distrib ...
- 【原创 HadoopSpark 动手实践 6】Spark 编程实例与案例演示
[原创 Hadoop&Spark 动手实践 6]Spark 编程实例与案例演示 Spark 编程实例和简易电影分析系统的编写 目标: 1. 掌握理论:了解Spark编程的理论基础 2. 搭建 ...
- Spark机器学习实战 (十二) - 推荐系统实战
0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 ...
最新文章
- 3w字带你揭开WebSocket的神秘面纱~
- ACM图灵奖获得者:想从大数据中获益,先解决集成问题!
- 程序升级触发阿里云自身安全机制导致的莫名问题
- 高级打字机【主席树】【滚动数组】【块状链表】
- Linux-find命令
- 直播预告丨加速消费金融行业运营体系新升级,驱动经营提质增效!
- go context之WithDeadline的使用
- Mybatis源码分析--Mapper接口的代理生成原理
- Mongodb定时备份脚本和清除脚本
- iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐
- 使用Zabbix监控memcached
- 在php中默认访问权限修饰符是,php中访问修饰符的知识点总结
- php数据保存txt文件怎么打开方式_php - 利用保存在TXT文件(PHP)中的数组数据 - SO中文参考 - www.soinside.com...
- 移动端APP测试概要
- c标准语言库里的i o函数,C语言文件I/O和标准I/O函数
- 计算机基础教程有access2010,Access2010数据库案例教程
- [设计模式]解释器模式
- arduino蓝牙主从机通讯
- Django站点通过系统部署到线上
- 小程序身份证号码保留前后4位其他用“*”代替