spark算法

来源:互联网 发布:百度关键词排名软件 编辑:程序博客网 时间:2024/06/14 00:42

Spark中常用的算法:



3.2.1 分类算法

分类算法属于监督式学习,使用类标签已知的样本建立一个分类函数或分类模型,应用分类模型,能把数据库中的类标签未知的数据进行归类。分类在数据挖掘中是一项重要的任务,目前在商业上应用最多,常见的典型应用场景有流失预测、精确营销、客户获取、个性偏好等。MLlib 目前支持分类算法有:逻辑回归、支持向量机、朴素贝叶斯和决策树。

案例:导入训练数据集,然后在训练集上执行训练算法,最后在所得模型上进行预测并计算训练误差。

import org.apache.spark.SparkContext

import org.apache.spark.mllib.classification.SVMWithSGD

import org.apache.spark.mllib.regression.LabeledPoint

 

// 加载和解析数据文件

val data = sc.textFile("mllib/data/sample_svm_data.txt")

val parsedData = data.map { line =>

  val parts = line.split(' ')

  LabeledPoint(parts(0).toDouble, parts.tail.map(x => x.toDouble).toArray)

}

 

// 设置迭代次数并进行进行训练

val numIterations = 20

val model = SVMWithSGD.train(parsedData, numIterations)

 

// 统计分类错误的样本比例

val labelAndPreds = parsedData.map { point =>

val prediction = model.predict(point.features)

(point.label, prediction)

}

val trainErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble / parsedData.count

println("Training Error = " + trainErr)

3.2.2 回归算法

回归算法属于监督式学习,每个个体都有一个与之相关联的实数标签,并且我们希望在给出用于表示这些实体的数值特征后,所预测出的标签值可以尽可能接近实际值。MLlib 目前支持回归算法有:线性回归、岭回归、Lasso和决策树。

案例:导入训练数据集,将其解析为带标签点的RDD,使用 LinearRegressionWithSGD 算法建立一个简单的线性模型来预测标签的值,最后计算均方差来评估预测值与实际值的吻合度。

import org.apache.spark.mllib.regression.LinearRegressionWithSGD

import org.apache.spark.mllib.regression.LabeledPoint

 

// 加载和解析数据文件

val data = sc.textFile("mllib/data/ridge-data/lpsa.data")

val parsedData = data.map { line =>

  val parts = line.split(',')

  LabeledPoint(parts(0).toDouble, parts(1).split(' ').map(x => x.toDouble).toArray)

}

 

//设置迭代次数并进行训练

val numIterations = 20

val model = LinearRegressionWithSGD.train(parsedData, numIterations)

 

// 统计回归错误的样本比例

val valuesAndPreds = parsedData.map { point =>

val prediction = model.predict(point.features)

(point.label, prediction)

}

val MSE = valuesAndPreds.map{ case(v, p) => math.pow((v - p), 2)}.reduce(_ + _)/valuesAndPreds.count

println("training Mean Squared Error = " + MSE)

3.2.3 聚类算法

聚 类算法属于非监督式学习,通常被用于探索性的分析,是根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并 且对每一个这样的簇进行描述的过程。它的目的是使得属于同一簇的样本之间应该彼此相似,而不同簇的样本应该足够不相似,常见的典型应用场景有客户细分、客 户研究、市场细分、价值评估。MLlib 目前支持广泛使用的KMmeans聚类算法。

案例:导入训练数据集,使用 KMeans 对象来将数据聚类到两个类簇当中,所需的类簇个数会被传递到算法中,然后计算集内均方差总和 (WSSSE),可以通过增加类簇的个数 k 来减小误差。 实际上,最优的类簇数通常是 1,因为这一点通常是WSSSE图中的 “低谷点”。

import org.apache.spark.mllib.clustering.KMeans

 

// 加载和解析数据文件

val data = sc.textFile("kmeans_data.txt")

val parsedData = data.map( _.split(' ').map(_.toDouble))

// 设置迭代次数、类簇的个数

val numIterations = 20

val numClusters = 2

 

// 进行训练

val clusters = KMeans.train(parsedData, numClusters, numIterations)

 

// 统计聚类错误的样本比例

val WSSSE = clusters.computeCost(parsedData)

println("Within Set Sum of Squared Errors = " + WSSSE)

3.2.4 协同过滤

协同过滤常被应用于推荐系统,这些技术旨在补充用户-商品关联矩阵中所缺失的部分。MLlib当前支持基于模型的协同过滤,其中用户和商品通过一小组隐语义因子进行表达,并且这些因子也用于预测缺失的元素。

案例:导入训练数据集,数据每一行由一个用户、一个商品和相应的评分组成。假设评分是显性的,使用默认的ALS.train()方法,通过计算预测出的评分的均方差来评估这个推荐模型。

import org.apache.spark.mllib.recommendation.ALS

import org.apache.spark.mllib.recommendation.Rating

 

// 加载和解析数据文件

val data = sc.textFile("mllib/data/als/test.data")

val ratings = data.map(_.split(',') match {

case Array(user, item, rate) => Rating(user.toInt, item.toInt, rate.toDouble)

})

 

// 设置迭代次数

val numIterations = 20

val model = ALS.train(ratings, 1, 20, 0.01)

 

// 对推荐模型进行评分

val usersProducts = ratings.map{ case Rating(user, product, rate) => (user, product)}

val predictions = model.predict(usersProducts).map{

case Rating(user, product, rate) => ((user, product), rate)

}

val ratesAndPreds = ratings.map{

case Rating(user, product, rate) => ((user, product), rate)

}.join(predictions)

val MSE = ratesAndPreds.map{

case ((user, product), (r1, r2)) => math.pow((r1- r2), 2)

}.reduce(_ + _)/ratesAndPreds.count

println("Mean Squared Error = " + MSE)

摘自:http://www.cnblogs.com/shishanyuan/p/4747761.html


欢迎大家批评指教!!!

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网易邮箱号忘了怎么办 忘记支付宝账号和密码怎么办 支付宝账号密码忘了怎么办 发邮箱文件超2g怎么办 报考计算机二级邮箱不存在怎么办 苹果邮箱登录要imap密码怎么办 注销微信支付后怎么办 手机卡注销后支付宝怎么办 12306手机邮箱都换了怎么办 网易手机邮箱手机换了怎么办 崩坏3号被盗了怎么办 qq账号被永久冻结了怎么办 淘宝账号被永久冻结了怎么办 qq账号被永久冻结怎么办 多多理财账号冻结了怎么办 苹果id安全问题忘记了怎么办 网易邮箱帐号忘了怎么办 网易邮箱密码忘记了怎么办 网易邮箱密码忘了怎么办 网易邮箱忘记邮箱账号怎么办 崩坏3三无号被盗怎么办 qq邮箱给58占用怎么办 支付宝邮箱被占用怎么办 苹果手机下载不了qq怎么办 附件预览时发生错误怎么办 手机下载的压缩包打不开怎么办 邮箱提示中转站剩余容量不足怎么办 手机邮箱密码忘记了怎么办 垃圾邮件被系统删除了怎么办 邮箱里的邮件下载不了怎么办 qq邮箱下载不了文件怎么办 苹果手机忘记邮箱密码怎么办 oppo手机安装包损坏怎么办 手机安装包损坏无法安装怎么办 手机qq安装包损坏了怎么办 安装包损坏无法安装怎么办 方舟生存进化安装包损坏怎么办 如果安装包坏了怎么办 酷狗下载音乐收费怎么办 酷狗下载歌曲收费怎么办 酷狗音乐下载歌曲要钱怎么办