【头歌实训】Spark MLlib ( Python 版 )

文章目录

  • 第1关:基本统计
    • 编程要求
    • 测试说明
    • 答案代码
  • 第2关:回归
    • 编程要求
    • 测试说明
    • 参考资料
    • 答案代码
  • 第3关:分类
    • 编程要求
    • 测试说明
    • 参考资料
    • 答案代码
  • 第4关:协同过滤
    • 编程要求
    • 测试说明
    • 参考资料
    • 答案代码
  • 第5关:聚类
    • 编程要求
    • 测试说明
    • 参考资料
    • 答案代码
  • 第6关:降维
    • 编程要求
    • 测试说明
    • 参考资料
    • 答案代码
  • 第7关:特征提取与转化
    • 编程要求
    • 测试说明
    • 答案代码
  • 第8关:频繁模式挖掘
    • 编程要求
    • 测试说明
    • 参考资料
    • 答案代码
  • 第9关:评估指标
    • 编程要求
    • 测试说明
    • 答案代码

第1关:基本统计

编程要求

根据提示,在右侧编辑器补充代码,计算所给数据的 pearson 相关系数和 spearman 相关系数。

测试说明

平台会对你编写的代码进行测试:

预期输出:

DenseMatrix([[1.        , 0.05564149,        nan, 0.40047142],[0.05564149, 1.        ,        nan, 0.91359586],[       nan,        nan, 1.        ,        nan],[0.40047142, 0.91359586,        nan, 1.        ]])
DenseMatrix([[1.        , 0.10540926,        nan, 0.4       ],[0.10540926, 1.        ,        nan, 0.9486833 ],[       nan,        nan, 1.        ,        nan],[0.4       , 0.9486833 ,        nan, 1.        ]])

答案代码

from pyspark.ml.linalg import Vectors
from pyspark.ml.stat import Correlation
from pyspark.sql import SparkSessiondef trainingModel(spark):# 自定义数据集data = [(Vectors.sparse(4, [(0, 1.0), (3, -2.0)]),),(Vectors.dense([4.0, 5.0, 0.0, 3.0]),),(Vectors.dense([6.0, 7.0, 0.0, 8.0]),),(Vectors.sparse(4, [(0, 9.0), (3, 1.0)]),)]########## Begin ########### 将 data 转化为 DataFramedata = spark.createDataFrame(data, ['features'])# 计算 df 的 pearson 相关系数pearsonCorr = Correlation.corr(data, 'features', 'pearson').collect()[0][0]# 计算 df 的 spearman 相关系数spearmanCorr = Correlation.corr(data, 'features', 'spearman').collect()[0][0]# 返回 pearson 相关系数和 spearman 相关系数return pearsonCorr, spearmanCorr########## End ##########

第2关:回归

编程要求

根据提示,在右侧编辑器补充代码,实现线性回归的过程函数trainingModel(spark) ,函数返回训练好的模型。其中LinearRegression 只需设置以下三个参数:

maxIter=10
regParam=0.3
elasticNetParam=0.8

所需数据在 /data/workspace/myshixun/project/src/step2/linear.txt 中。

测试说明

平台会对你编写的代码进行测试,最终会输出该模型的 RMSE 指标:
R M S E = 1 m ∑ i ( f ( x i ) − y i ) 2 RMSE=\sqrt{\frac1m\sum_i(f(x_i)-y_i)^2} RMSE=m1i(f(xi)yi)2
如果该指标在规定的范围内,则通过测试,测试代码将会输出 success,如果没有通过测试,将会输出 fail。 预期输出: success

参考资料

Spark 官方文档

答案代码

from pyspark.ml.regression import LinearRegression
from pyspark.sql import SparkSessiondef trainingModel(spark):########## Begin ########### 读取数据data = spark.read.format("libsvm").load("/data/workspace/myshixun/project/src/step2/linear.txt")# 建立模型lr = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)# 训练模型model = lr.fit(data)# 返回模型return model########## end ##########

第3关:分类

编程要求

根据提示,在右侧编辑器补充代码,实现逻辑回归的过程函数trainingModel(spark) ,函数返回训练好的模型。其中LogisticRegression 只需设置以下三个参数:

maxIter=10
regParam=0.3
elasticNetParam=0.8

所需数据在 /data/workspace/myshixun/project/src/step3/logistic.txt 中。

测试说明

平台会对你编写的代码进行测试,最终会输出该模型的 roc 指标,如果该指标在规定的范围内,则通过测试,测试代码将会输出 success,如果没有通过测试,将会输出 fail。 预期输出: success

参考资料

Spark 官方文档

答案代码

from pyspark.ml.classification import LogisticRegression
from pyspark.sql import SparkSessiondef trainingModel(spark):########## Begin ########### 读取数据data = spark.read.format("libsvm").load("/data/workspace/myshixun/project/src/step3/logistic.txt")# 建立模型lr = LogisticRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)# 训练模型model = lr.fit(data)# 返回模型,数据集return model########## End ##########

第4关:协同过滤

编程要求

根据提示,在右侧编辑器补充代码,实现协同过滤的过程函数trainingModel(spark) ,函数返回训练好的模型。 所需数据在 /data/workspace/myshixun/project/src/step4/movie.txt 中,读取数据后请按如下要求命名列:

  • 第一列:userID 数据类型:int
  • 第二列:movieID 数据类型:int
  • 第三列:rating 数据类型:float
  • 第四列:timestamp 数据类型:int

其中ALS 除了要设置 userCol , itemColrating ,还需要设置以下三个参数:

maxIter=5
regParam=0.01
coldStartStrategy="drop"

测试说明

平台会对你编写的代码进行测试,最终会输出该模型的 RMSE 指标,如果该指标在规定的范围内,则通过测试,测试代码将会输出 success,如果没有通过测试,将会输出 fail。 预期输出: success

参考资料

Spark 官方文档

答案代码

from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.sql import SparkSession,Rowdef trainingModel(spark):########## Begin ########### 读取数据data = spark.read.text("/data/workspace/myshixun/project/src/step4/movie.txt")# 数据预处理,处理分隔符,为每一列添加索引data = data.rdd.map(lambda line: line.value.split('::'))\.map(lambda p: Row(userID=int(p[0]), movieID=int(p[1]), rating=float(p[2]), timestamp=int(p[3])))# 创建数据框ratings = spark.createDataFrame(data)# 划分训练集和测试集 8:2(train, test) = ratings.randomSplit([0.8, 0.2], seed=0)# 在训练集上使用 ALS 建立推荐系统als = ALS(maxIter=5, regParam=0.01, coldStartStrategy="drop", userCol="userID", itemCol="movieID", ratingCol="rating")# 训练模型model = als.fit(train)########## End ########### 计算测试集上的 RMSE 值predictions = model.transform(test)rmse = RegressionEvaluator(metricName="rmse", labelCol="rating",predictionCol="prediction").evaluate(predictions)# 返回 rmsereturn rmse

第5关:聚类

编程要求

根据提示,在右侧编辑器补充代码,实现聚类的过程函数trainingModel(spark) ,函数返回训练好的模型,对于模型你只需要设置以下两个参数:

k = 2
seed = 1

所需数据在 /data/workspace/myshixun/project/src/step5/k-means.txt

测试说明

平台会对你编写的代码进行测试,最终会输出该模型的 Silhouette score ,如果该指标在规定的范围内,则通过测试,测试代码将会输出 success,如果没有通过测试,将会输出 fail。 预期输出: success

参考资料

Spark 官方文档

答案代码

from pyspark.ml.clustering import KMeans
from pyspark.ml.evaluation import ClusteringEvaluator
from pyspark.sql import SparkSessiondef trainingModel(spark):########## Begin ########### 读取数据data = spark.read.format("libsvm").load("/data/workspace/myshixun/project/src/step5/k-means.txt")# 建立 kmeans 模型kmeans = KMeans(k=2)kmeans.setSeed(1)# 训练模型model = kmeans.fit(data)########## End ##########predictions = model.transform(data)# 返回 模型、预测值return model, predictions

第6关:降维

编程要求

根据提示,在右侧编辑器补充代码,实现降维的过程函数trainingModel(spark) ,其中PCA 只需要设置以下三个参数:

k=3
inputCol="features", 
outputCol="pcaFeatures"

测试说明

平台会对你编写的代码进行测试,测试代码将会输训练好的矩阵。 预期输出:

+-----------------------------------------------------------+
|pcaFeatures                                                |
+-----------------------------------------------------------+
|[1.6485728230883807,-4.013282700516296,-5.524543751369388] |
|[-4.645104331781534,-1.1167972663619026,-5.524543751369387]|
|[-6.428880535676489,-5.337951427775355,-5.524543751369389] |
+-----------------------------------------------------------+

参考资料

Spark 官方文档

答案代码

from pyspark.ml.feature import PCA
from pyspark.ml.linalg import Vectors
from pyspark.sql import SparkSessiondef trainingModel(spark):# 自定义数据集data = [(Vectors.sparse(5, [(1, 1.0), (3, 7.0)]),),(Vectors.dense([2.0, 0.0, 3.0, 4.0, 5.0]),),(Vectors.dense([4.0, 0.0, 0.0, 6.0, 7.0]),)]########## Begin ########### 创建数据框df = spark.createDataFrame(data, ["features"])# 建立模型pca = PCA(k=3, inputCol="features", outputCol="pcaFeatures")# 训练模型model = pca.fit(df)########## End ########### 返回计算结果result = model.transform(df).select('pcaFeatures')return result

第7关:特征提取与转化

编程要求

根据提示,在右侧编辑器补充代码,输出经过ml.feature.FeatureHasher 的特征,输出的特征命名为 features。注意,只需输出 feature 特征列。

测试说明

平台会对你编写的代码进行测试,测试代码将会输训练好的特征矩阵。 预期输出:

+--------------------------------------------------------+
|features                                                |
+--------------------------------------------------------+
|(262144,[174475,247670,257907,262126],[2.2,1.0,1.0,1.0])|
|(262144,[70644,89673,173866,174475],[1.0,1.0,1.0,3.3])  |
|(262144,[22406,70644,174475,187923],[1.0,1.0,4.4,1.0])  |
|(262144,[70644,101499,174475,257907],[1.0,1.0,5.5,1.0]) |
+--------------------------------------------------------+

答案代码

from pyspark.ml.feature import FeatureHasher
from pyspark.sql import SparkSessiondef trainingModel(spark):# 自定义数据集data = spark.createDataFrame([(2.2, True, "1", "foo"),(3.3, False, "2", "bar"),(4.4, False, "3", "baz"),(5.5, False, "4", "foo")], ["real", "bool", "stringNum", "string"])########## Begin ########### 特征提取,使用 FeatureHasherhasher = FeatureHasher()hasher.setInputCols(["real", "bool", "stringNum", "string"])hasher.setOutputCol("features")hashed_df = hasher.transform(data)# 返回特征return hashed_df.select("features")########## End ##########

第8关:频繁模式挖掘

编程要求

根据提示,在右侧编辑器补充代码,实现频繁模式挖掘的过程函数trainingModel(spark) ,在设置 FPGrowth 只需要设置以下三个参数:

itemsCol="items", 
minSupport=0.5, 
minConfidence=0.6

测试说明

平台会对你编写的代码进行测试,最终会输出训练后的结果 预期输出:

+---+------------+----------+
| id|       items|prediction|
+---+------------+----------+
|  0|   [1, 2, 5]|        []|
|  1|[1, 2, 3, 5]|        []|
|  2|      [1, 2]|       [5]|
+---+------------+----------+

参考资料

Spark 官方文档

答案代码

from pyspark.ml.fpm import FPGrowth
from pyspark.sql import SparkSessiondef trainingModel(spark):# 自定义数据集df = spark.createDataFrame([(0, [1, 2, 5]),(1, [1, 2, 3, 5]),(2, [1, 2])], ["id", "items"])########## Begin ########### 建立模型fp = FPGrowth(minSupport=0.5, minConfidence=0.6, itemsCol="items")# 训练模型fpm = fp.fit(df)# 返回模型,数据集return fpm, df########## End ##########

第9关:评估指标

编程要求

根据提示,在右侧编辑器补充代码,在逻辑回归实例中返回 areaUnderROC 指标和 acc 指标。

测试说明

平台会对你编写的代码进行测试,最终会返回逻辑回归实例中的 areaUnderROC 指标和 acc 指标,如果这两个值在设定范围内,将输出 success,否则输出 fail 。 预期输出: success

答案代码

from pyspark.ml.classification import LogisticRegression
from pyspark.ml.evaluation import BinaryClassificationEvaluator, MulticlassClassificationEvaluator
from pyspark.sql import SparkSessiondef trainingModel(spark):# 读取数据集data = spark.read.format("libsvm").load("/data/workspace/myshixun/project/src/step9/data.txt")# 建立模型lr = LogisticRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)# 训练模型model = lr.fit(data)########## Begin ########### 使用模型进行预测predictions = model.transform(data)# 创建 BinaryClassificationEvaluator 来计算 areaUnderROCevaluator_roc = BinaryClassificationEvaluator(rawPredictionCol="rawPrediction", labelCol="label", metricName="areaUnderROC")areaUnderROC = evaluator_roc.evaluate(predictions)# 创建 MulticlassClassificationEvaluator 来计算 accuracyevaluator_acc = MulticlassClassificationEvaluator(predictionCol="prediction", labelCol="label", metricName="accuracy")accuracy = evaluator_acc.evaluate(predictions)# 返回 areaUnderROC 指标和 acc 指标return areaUnderROC, accuracy########## End ##########

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优秀数据库开发工具Navicat Premium 16 Mac/win中文版

Navicat Premium 16作为一款综合性的数据库开发工具,可以支持主流的数据库管理系统,如MySQL、MariaDB、Oracle、SQL Server等。无论是进行数据库建模、数据导入导出、SQL脚本编辑,还是数据同步、备份恢复等操作,Navicat Premium 1…

反射型xss的常用语法

Xss反射型常用语法&#xff1a; 普通语法: <script>alert(1)</script>构造闭合语法&#xff1a; "><script>alert(1)</script>当引号被转义时的语法: 1 οnclickalert(2) 再次点击输入框时就会出现弹窗当3.的双引号不行时则考虑使用双引号…

【Vulnhub 靶场】【Hms?: 1】【简单】【20210728】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/hms-1,728/ 靶场下载&#xff1a;https://download.vulnhub.com/hms/niveK.ova 靶场难度&#xff1a;简单 发布日期&#xff1a;2021年07月28日 文件大小&#xff1a;2.9 GB 靶场作者&#xff1a;niveK 靶场系…

【产品经理】axure中继器的使用——表格增删改查分页实现

笔记为个人总结笔记&#xff0c;若有错误欢迎指出哟~ axure中继器的使用——表格增删改查分页实现 中继器介绍总体视图视频预览功能1.表头设计2.中继器3.添加功能实现4.删除功能实现5.修改功能实现6.查询功能实现7.批量删除 中继器介绍 在 Axure RP9 中&#xff0c;中继器&…

Visual Studio 2013 中创建一个基于 Qt 的动态链接库:并在MFC DLL程序中使用

在本地已经安装好 Qt 的情况下&#xff0c;按照以下步骤在 Visual Studio 2013 中创建一个基于 Qt 的动态链接库&#xff1a; 一、新建 Qt 项目&#xff1a; 在 Visual Studio 中&#xff0c;选择 “文件” -> “新建” -> “项目…”。在 “新建项目” 对话框中&#…

【轻松入门】OpenCV4.8 + QT5.x开发环境搭建

引言 大家好&#xff0c;今天给大家分享一下最新版本OpenCV4.8 QT5 如何一起配置&#xff0c;完成环境搭建的。 下载OpenCV4.8并解压缩 软件版本支持 CMake3.13 或者以上版本 https://cmake.org/ VS2017专业版或者以上版本 QT5.15.2 OpenCV4.8源码包 https://github.com/op…

C# 学习网站

C# 文档 - 入门、教程、参考。 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/csharp/ Browse code samples | Microsoft LearnGet started with Microsoft developer tools and technologies. Explore our samples and discover the things you can build.http…

SpingBoot的项目实战--模拟电商【1.首页搭建】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringBoot电商项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.项目背景及技术点运用 …

TikTok真题第6天 | 146.LRU缓存、333.最大的二分搜索树、621.任务调度器

146.LRU缓存 题目链接&#xff1a;146.lru-cache 解法&#xff1a; 这个题代码量大&#xff0c;光看题解就1个小时多了&#xff0c;看完写下来花了两小时多... 使用哈希表双向链表来实现LRU缓存的特性&#xff0c;即哈希表可以实现get为O(1)复杂度&#xff0c;双向链表可以…

Mybatis Mapper XML文件-缓存(cache)

MyBatis包含一个强大的事务查询缓存特性&#xff0c;可以进行灵活的配置和自定义。在MyBatis 3的缓存实现中进行了许多改进&#xff0c;使其更加强大且更易于配置。 默认情况下&#xff0c;仅启用了本地会话缓存&#xff0c;该缓存仅用于缓存会话期间的数据。要启用全局的第二…

C++ 一个有bug的贪吃蛇。。。。。。。。

C 一个有bug的贪吃蛇。。。。。。。。 #include <graphics.h> #include<Windows.h> #include<Mmsystem.h> #include<conio.h> #include<time.h> #include<stdio.h> #include<easyx.h> using namespace std; #pragma warning(di…

Qt之自定义分页(翻页)控件

当数据量较大时,分页显示是个不错的选择。这里用百家姓来演示分页效果,包括首页、上一页、下一页、尾页和跳转。 一.效果 每页15个姓氏。 二.实现 QHPageWidget.h #ifndef QHPAGEWIDGET_H #define QHPAGEWIDGET_H#include <QWidget> #include <QStandardItemMod…

DBeaver连接hive

1.新建hive连接 其中主机填写hive所在节点地址&#xff0c;端口10000为默认&#xff0c;数据库名不填则是默认default数据库&#xff0c;用户名密码填写hadoop集群中能操作hdfs的用户和密码。 2.编辑驱动&#xff0c;驱动的jar包从安装的hive下的jdbc路径下获取&#xff0c;例…

第8章 社会工程学攻击

社会工程学是利用人性弱点体察、获取有价值信息的实践方法&#xff0c;它是一种欺骗的艺术。在缺少目标系统的必要信息时&#xff0c;社会工程学技术是渗透测试人员获取信息的至关重要的手段。对所有类型的组织&#xff08;单位&#xff09;而言&#xff0c;人都是安全防范措施…

【flink番外篇】9、Flink Table API 支持的操作示例(3)- 通过API查询表和使用窗口函数的查询

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

软件开发者必读!2024年30大趋势提前曝光!

软件是科技行业的基础。从智能手机到复杂的企业系统&#xff0c;软件是推动这些技术的核心。在探索数字时代的过程中&#xff0c;了解软件开发的趋势非常重要。人工智能、机器学习、物联网等技术的快速发展对软件开发行业产生了巨大影响。本文旨在通过30个数据汇总&#xff0c;…

STM32 基础知识(探索者开发板)--93讲 PWM

预分频器相当于一个计数器&#xff0c;2分频就是接收2个脉冲传递一个脉冲&#xff0c;3分频就是接收3个脉冲传递一个脉冲&#xff0c;最高65535分频&#xff0c;那么总计时间能达到65535*65535*1/72MHZ 约59秒&#xff0c;没有分频器只能计数最高0.09秒 PWM配置步骤 1.配置定时…

《长江丛刊》期刊投稿发表

《长江丛刊》杂志是由国家新闻出版总署批准的正规期刊&#xff0c;是一本文学类综合性刊物&#xff0c;包括文学评论以及文学作品的发表。是广大专家、学者、教师、学子发表论文、交流信息的重要平台&#xff0c;符合评职称要求&#xff08;单位有特殊要求除外&#xff09;。 …

docker小白第八天

docker小白第八天 redis常规安装 前期已经配好了阿里云容器镜像加速库 docker search redis docker pull redis:6.0.8 docker images redis:6.0.8启动容器,并进入容器的命令行界面 docker run -d -p 6379:6379 redis:6.0.8 docker ps docker exec -it 容器id /bin/bash验证…

可替代 Spring,国产 Solon v2.6.3 发布

Solon 是什么框架&#xff1f; Java 新的"生态级"应用开发框架。从零开始构建&#xff0c;有自己的标准规范与开放生态&#xff08;历时六年&#xff0c;具备全球第二级别的生态规模&#xff09;。 相对于 Spring&#xff0c;有什么特点&#xff1f; 国产&#xf…