第16课 spark 逻辑斯蒂回归分类器_第1页
第16课 spark 逻辑斯蒂回归分类器_第2页
第16课 spark 逻辑斯蒂回归分类器_第3页
第16课 spark 逻辑斯蒂回归分类器_第4页
第16课 spark 逻辑斯蒂回归分类器_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Spark 逻辑斯蒂回归分类器 【实验名称】 Spark 逻辑斯蒂回归分类器 【实验目的】 (1) 了解 Spark 逻辑斯蒂回归分类器。 (2) 掌握构建一个机器学习工作流。 【实验要求】 实验结束后,学生能够自行构建一个逻辑斯蒂回归分类器,并最终通过训练模型来评估最后的准确性。 【实验环境】 1、1 台 Centos6.8 虚拟机 2、虚拟机上安装伪分布式或者分布式 hadoop3.0 3、集群下所有虚拟机上安装 spark 2.3.1 4、一台虚拟机上安装 scala 2.12.4 【实验步骤】 1. 方法简介 逻辑斯蒂回归(logistic regression)是统计学习中的经典分类

2、方法,属于对数线性模型。logistic 回归的因变量可以是二分类的,也可以是多分类的。 2. 实验原理 logistic 分布: 设 X 是连续随数: 量,X 服从 logistic 分布是指 X 具有下列分布函数和密度函其中,为位置参数,为形状参数,和图像如下,其中分布函数是以为中心对阵,越小曲线变化越快。 二项 logistic 回归模型: 二项 logistic 回归模型如下: 是输出,w 称为权值向量,b 称为偏置,其中,是输入,为 w 和 x 的内积。参数估计: 则采用“极大似然法”假设:来估计 w 和 b。似然函数为: 为方便求解,对其“对数似然”进行估计: 从而对求极大值,得到

3、的估计值。求极值的方法可以是梯度下降法,梯度上升法等 3. 实验过程 我们以 iris 数据集(/ml/machine-learning-databases/iris/iris.data)为例进行分析。iris 以鸢尾花的特征作为数据来源,数据集包含 150 个数据集,分为 3 类,每类 50 个数据,每个数据包含 4 个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。 3.1 进入Spark-shell 环境 rootmaster # /opt/spark-2.3.1-bin-hadoop2.7/bin/spark-shell 3.

4、2 导入所需要的包 import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS, LogisticRegressionModel import org.apache.spark.mllib.evaluation.MulticlassMetrics import org.apache.spark.mllib.regression.LabeledPoint import o

5、rg.apache.spark.mllib.linalg.Vectors,Vector 3.3 读取数据首先,读取文本文件;然后,通过 map 将每行的数据用“,”隔开,在我们的数据集中,每行被分成了 5 部分,前 4 部分是鸢尾花的 4 个特征,最后一部分是鸢尾花的分类。把这里我们用 LabeledPoint 来存储标签列和特征列。LabeledPoint 在监督学习中常用来存储标签和特征,其中要求标签的类型是 double,特征的类型是 Vector。这里,先把莺尾花的分类进行变换,”Iris-setosa”对应分类0,”Iris-versicolor”对应分类 1,其余对应分类 2;然后

6、获取莺尾花的 4 个特征,存储在 Vector 中。 将 iris.data 下载到/root 目录下。 scala val data = sc.textFile(file:/root/iris.data) scala val parsedData = data.map line = | val parts = line.split(,) | LabeledPoint(if(parts(4)=Iris-setosa) 0.toDouble else if (parts(4) | =Iris-versicolor) 1.toDouble else | (2).toDouble,parts(3).

7、toDouble) 3.4 数据打印scala parsedData.foreach x = println(x) 3.5 构建模型接下来,首先进行数据集的划分,这里划分 60%的训练集和 40%的测试集: scala val splits = parsedData.randomSplit(Array(0.6, 0.4), seed = 11L) scala val training = splits(0).cache() scala val test = splits(1) 然后,构建逻辑斯蒂模型,用 set 的方法设置参数,比如说分类的数目,这里可以实现多分类逻辑斯蒂模型: scala v

8、al model = new LogisticRegressionWithLBFGS(). | setNumClasses(3). | run(training) 接下来,调用多分类逻辑斯蒂模型用的 predict 方法对测试数据进行预测,并把结果保存在 MulticlassMetrics 中。这里的模型全名为LogisticRegressionWithLBFGS,加上了 LBFGS,表示 Limited-memory BFGS。其中,BFGS 是求解非线性优化问题(L(w)求极大值)的方法,是一种秩-2 更新, 以其发明者 Broyden, Fletcher, Goldfarb 和 Shanno 的姓氏首字母命名。scala val predictionAndLabels = test.map case LabeledPoint(label, features) = | val prediction = model.predict(features) | (prediction, label) | 3.6 模型评估最后,我们把模型预测的准确性打印出来: scala

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论