Spark机器学习实例

article/2025/10/19 14:06:46

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://chatgpt.dhexx.cn/article/UqqEH34x.shtml

相关文章

spark机器学习笔记:(一)Spark Python初探

声明:版权所有,转载请联系作者并注明出处 http://blog.csdn.net/u013719780?viewmodecontents 博主简介:风雪夜归子(英文名:Allen),机器学习算法攻城狮,喜爱钻研Meachine Learnin…

Spark Machine Learning(SparkML):机器学习(部分三)

目录 8.协同过滤(Collaborative Filtering) 8.1交替最小二乘ALS 8.2显式和隐式反馈 8.3缩放正则化参数 8.4冷启动策略 8.5代码示例: 9.频繁模式挖掘(Frequent Pattern Mining) FP-Growth PrefixSpan 10.ML优化:模型选择和超参数调优 模型选择&#xff08…

spark机器学习算法研究

spark提供了一个机器学习库,spark ml包,可以在spark中直接引入使用 import org.apache.spark.ml.clustering.{KMeans,KMeansModel} import org.apache.spark.ml.linalg.Vectors1. 常用聚类算法 k-means 算法 GMM 高斯混合模型 PIC 快速迭代聚类 LDA 隐式…

手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

手把手带你玩转Spark机器学习-使用Spark构建分类模型

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

手把手带你玩转Spark机器学习-Spark的安装及使用

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

手把手带你玩转Spark机器学习-深度学习在Spark上的应用

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

Spark Machine Learning(SparkML):机器学习(部分一)

机器学习是现阶段实现人工智能应用的主要方法,它广泛应用于机器视觉、语音识别、自然语言处理、数据挖掘等领域。MLlib是Apache Spark的可伸缩机器学习库。官网地址:[http://spark.apache.org/docs/latest/ml-guide.html] Spark的机器学习(ML)库提供了许多分布式ML算法。这些算…

手把手带你玩转Spark机器学习-使用Spark构建聚类模型

系列文章目录 手把手带你玩转Spark机器学习-专栏介绍手把手带你玩转Spark机器学习-问题汇总手把手带你玩转Spark机器学习-Spark的安装及使用手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换手把手带你玩转Spark机器学习-使用Spark构建分类模型手把手带你玩转Spa…

Spark机器学习解析

源码加数据集: 文件源码 Gitee好像只收10M一下的文件类型,所以数据集就只能以链接的形式自己下了 KMeans和决策树KDD99数据集,推荐使用10%的数据集: http://kdd.ics.uci.edu/databases/kddcup99/ ALS电影推荐的Movielens数据集…

Spark大数据处理系列之Machine Learning

Spark的机器学习库(Spark MLlib),包括各种机器学习算法:协同过滤算法、聚类算法、分类算法和其他算法。在前面的《Spark大数据处理》系列文章,介绍Apache Spark框架,介绍如何使用Spark SQL库的SQL接口去访问数据,使用S…

大数据笔记--Spark机器学习(第一篇)

目录 一、数据挖掘与机器学习 1、概念 2、人工智能 3、数据挖掘体系 二、机器学习 1、什么是机器学习 2、机器学习的应用 3、实现机器学习算法的工具与技术框架 三、Spark MLlib介绍 1、简介 2、MLlib基本数据类型 Ⅰ、概述 Ⅱ、本地向量 Ⅲ、向量标签的使用 Ⅳ…

iis 重启 (三种方法)

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 1 1、界面操作 打开“控制面板”->“管…

IIS中应用程序池自动停止,重启报错

阅文时长| 0.2分钟字数统计| 329.6字符主要内容| 1、引言&背景 2、解决方案 3、声明与参考资料 『IIS中应用程序池自动停止,重启报错』编写人| SCscHero 编写时间| 2022/1/3 PM12:32文章类型| 系列完成度| 已完成座右铭每一个伟大的事业,都有一个微不…

服务器上系统怎么启动iis,IIS服务器如何重新启动

IIS的设计目的是建立一套集成的服务器服务,用以支持HTTP,FTP和SMTP,它能够提供快速且集成了现有产品,同时可扩展的Internet服务器,而最近就有很多小伙伴问小编IIS服务器如何重新启动,其实很简单&#xff0c…

解决:IIS 假死,运行一段时间服务器上所有网站打不开,必须要重启服务器才行,重启IIS都没用。怎么解决,解决方案

tip:我服务器问题是 每个5-6天后,服务器上的所有网站都不能访问,重启IIS无用,必须重启服务器! 后,请教周华伟周经理后,找到解决方案如下: 第一原因: 这是程序池造成的&#xff0c…

iis服务器 关闭自动启动,设置IIS服务器定时自动重启的方法

最近,有一朋友的IIS服务器老是出现问题,运行一段时间下来就会出现访问服务器上的网站时提示数据库连接出错,然后重启IIS后网站又能正常访问了,实在找不出是什么原因导致了这个问题。不过最终我想到了一个笨办法,就是让…

C#实现对IIS网站和应用程序池实时监测(网站停止后自动重启)

一、需求分析 在我们的日常运维中,可能会遇到业务网站在运行一段时间后由于某些不确定因素而停止运行,导致业务功能受影响,而此时只要我们重启服务又能够正常运行了,在我们还没有完全排查从根本上解决问题前,需要一个临时的方法来救场(即:当发现业务网站停止后能够自动重…

bat脚本重启IIS中的网站

bat脚本实现重启IIS中的网站 echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d C:\Windows\System32\inetsrv\ tas…

Windows服务器设置IIS定时重启的方法,带图详解

我们在使用Windows2008下IIS服务器时会经常出现资源耗尽的现象,运行一段时间下来就会出现访问服务器上的网站时提示数据库连接出错,重启IIS后网站又能正常访问了,这个问题可能困扰了很多站长朋友。 一位做网站的笔友经过不断的实践找到了一个…