Python操作Spark Mllib函数

文章是对函数的简单理解和应用,需要理解更深层次的可能要失望了。

如对代码有什么疑问,下载有决策树示例代码。

推荐算法(矩阵因式分解)和决策树多元分类没有很好的测试数据,暂告段落。

不说废话,直接正题

相关函数包名:

import pyspark
from time import time
import numpy as np
from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.evaluation import BinaryClassificationMetrics

数据准备

              features准备:通过Spark RDD 加载处理内容,使每个元素为一个只含数字的list(这个数字最好为float,不然有可能会报错),文字也转化为数字,如:一个性别字段有男/女两种,可以男为[0,1],女为[1,0]。将字符串转化为list后和其它features连接起来。

              label准备:这个是需要预测的数据。如果想要预测是否会下雨,可以下雨为1,不下雨为0。

二元分类:

       决策树二元分类

              将数据通过LabeledPoint(label,features)转化为可以进行数据训练的类。

              然后就可以训练出模型:

from pyspark.mllib.tree import DecisionTree
#决策树多元分类,label有几种numClasses就设置为几
model=DecisionTree.trainClassifier(trainData,numClasses=2,
categoricalFeaturesInfo{},impurity=["gini","entropy"],maxDepth=[3,5,10,15,20,21,22,23,24,25],maxBins=[1,2,3,4,5,10,50,100,200])
#[]list为给出的可选选项,训练只需一个参数,也不需要[],可使用其它参数。
        接下来可以通过测试数据来验证模型预测的准确性:
from pyspark.mllib.evaluation import BinaryClassificationMetrics
score=model.predict(testdatafeatures)
scoreAndLabels=score.zip(testdatalabel)
#from pyspark.mllib.evaluation import MulticlassMetrics
#决策树多元分类,使用MulticlassMetrics(scoreAndLabels)
metrics=BinaryClassificationMetrics(scoreAndLabels)
#多元分类,metrics.accuracy
AUC=metrics.areaUnderROC

               这个AUC是判断模型是否准确的参考,>0.5有正向预测价值,=0.5没有参考价值,<0.5有反向参考价值。

       逻辑回归:是分类算法,要是对分类和回归有疑问可以参考其它文献。

               将数据转化为LabeledPoint前需要将features数据标准化:

from pyspark.mllib.feature import StandardScaler
stdScaler=StandardScaler(withMean=True,withStd=True).fit(featureRDD)
ScalerFeatureRDD=stdScaler.transform(featureRDD)

                然后训练产生模型:

from pyspark.mllib.classification import LogisticRegressionWithSGD
metrics=LogisticRegressionWithSGD.train(trainData,[5.0,15.0,20.0,60.0,100.0],
[10.0,50.0,100.0,200.0],[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0])
#[]中同样为可选参数,只需要一个。具体参数名可以测试查看

                通过测试数据验证和决策树差不多,但有可能会报label为int的错误,可以在score和scoreAndLabels之间加一句:

score=score.map(float)。测试数据features同样需要标准化。

        支持向量机(SVM):具体介绍可以去看其它博客,很有意思,如果你对多维空间感兴趣的话。

                 features也需要标准化,和逻辑回归参数没有改变。

                 训练产生模型:

from pyspark.mllib.classification import SVMWithSGD
model=SVMWithSGD.train(trainData,[1,3,5,15,25],[10.0,50.0,100.0,200.0],[0.01,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1])
#只需一个

                 测试验证产生AUC和逻辑回归差不多。

         朴素贝叶斯

                 features也需标准化,但参数withMean改为False。

                 训练产生模型:

from pyspark.mllib.classification import NaiveBayes
model=NaiveBayes.train(trainData,[1.0,3.0,5.0,15.0,25.0,30.0,35.0,40.0,45.0,50.0,60.0])
#只需一个

                  测试和逻辑回归差不多。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值