Pyspark 简明教程

PySpark - MLlib

Apache Spark 提供了一个称为 MLlib 的机器学习 API。PySpark 在 Python 中也具有该机器学习 API。它支持不同种类的算法,如下所述 −

  1. mllib.classificationspark.mllib 包支持二元分类、多类分类和回归分析的各种方法。分类中一些最流行的算法包括 Random Forest, Naive Bayes, Decision Tree 等。

  2. mllib.clustering − 聚类是一个无监督的学习问题,你旨在根据相似性概念将实体子集彼此分组。

  3. mllib.fpm − 频繁模式匹配是挖掘频繁项、项集、子序列或其他子结构,它们通常是大规模数据集分析的第一步。多年来,这一直是数据挖掘中的一个活跃的研究课题。

  4. mllib.linalg − MLlib 线性代数实用程序。

  5. mllib.recommendation − 协同过滤通常用于推荐系统。这些技术旨在填补用户项关联矩阵的缺失项。

  6. spark.mllib − 它目前支持基于模型的协同过滤,其中用户和产品由一小组潜在因子描述,这些因子可用于预测缺失项。spark.mllib 使用交替最小二乘 (ALS) 算法来学习这些潜在因子。

  7. mllib.regression − 线性回归属于回归算法家族。回归的目标是找出变量之间的关系和依赖性。用于处理线性回归模型和模型摘要的接口类似于逻辑回归案例。

mllib 包中还有一些其他算法、类和函数。目前,让我们了解一下 pyspark.mllib 的演示。

以下示例使用 ALS 算法进行协同过滤,以构建推荐模型并根据训练数据对其进行评估。

Dataset used − test.data

1,1,5.0
1,2,1.0
1,3,5.0
1,4,1.0
2,1,5.0
2,2,1.0
2,3,5.0
2,4,1.0
3,1,1.0
3,2,5.0
3,3,1.0
3,4,5.0
4,1,1.0
4,2,5.0
4,3,1.0
4,4,5.0
--------------------------------------recommend.py----------------------------------------
from __future__ import print_function
from pyspark import SparkContext
from pyspark.mllib.recommendation import ALS, MatrixFactorizationModel, Rating
if __name__ == "__main__":
   sc = SparkContext(appName="Pspark mllib Example")
   data = sc.textFile("test.data")
   ratings = data.map(lambda l: l.split(','))\
      .map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2])))

   # Build the recommendation model using Alternating Least Squares
   rank = 10
   numIterations = 10
   model = ALS.train(ratings, rank, numIterations)

   # Evaluate the model on training data
   testdata = ratings.map(lambda p: (p[0], p[1]))
   predictions = model.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2]))
   ratesAndPreds = ratings.map(lambda r: ((r[0], r[1]), r[2])).join(predictions)
   MSE = ratesAndPreds.map(lambda r: (r[1][0] - r[1][1])**2).mean()
   print("Mean Squared Error = " + str(MSE))

   # Save and load model
   model.save(sc, "target/tmp/myCollaborativeFilter")
   sameModel = MatrixFactorizationModel.load(sc, "target/tmp/myCollaborativeFilter")
--------------------------------------recommend.py----------------------------------------

Command − 命令如下 −

$SPARK_HOME/bin/spark-submit recommend.py

Output − 以上命令的输出为 −

Mean Squared Error = 1.20536041839e-05