Spark MLlib LogisticRegressionWithLBFGSModel总是预测1

时间:2016-10-29 12:37:35

标签: python apache-spark machine-learning logistic-regression

我是ML的新手,我正在努力。所以这就是我面临的问题 -

我有一个看起来像这样的数据集 -

1,32,89
0,2,6
1,71,87
0,2,3
1,2,67
1,78,46
1,25,15
1,18,11
1,8,5
1,7,5
1,3,2
1,3,2
1,2,2
1,2,2
1,926,61
0,99,7
1,42,3
0,18,2
0,15,1
0,13,1
0,11,1
0,11,1
0,9,1
0,8,1
0,8,1
0,7,1
0,7,1
0,7,1
1,7,1
0,6,1
0,6,1
0,6,1
0,4,1
0,4,1
0,4,1
0,4,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,5,100
1,263,90
0,6,3
0,2,1
0,2,1
0,2,1
1,307,73
0,16,4
1,5,2
0,4,1
0,3,1
0,3,1
0,3,1
1,3,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
1,14,88
1,95,74
1,14,11
1,8,7
0,2,2
1,8,73
1,2,19
1,7,78
1,5,42
1,3,25
1,344,68
1,27,6
1,7,2
1,7,2
0,5,1
1,5,1
0,4,1
0,4,1
0,4,1
1,3,1
1,3,1
0,3,1
0,2,1
0,2,1
0,2,1
0,2,67
1,116,29
1,71,18
1,68,17
1,54,14
1,20,5
1,15,4
0,4,1
0,4,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
1,3,75
1,12,100
1,4,80
0,14,10
0,4,3
0,2,2
0,2,2
0,2,2
1,10,91
1,9,75
0,2,17
1,1947,88
1,23,2
0,5,1
1,5,1
1,4,1
0,3,1
1,3,1
0,3,1
1,3,1
0,2,1
1,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
0,2,1
0,2,1
1,1900,85
1,32,2
1,19,1
1,11,1
1,10,1
0,8,1
0,8,1
0,6,1
0,6,1
0,6,1
0,5,1
0,5,1
0,4,1
0,4,1
1,4,1
1,4,1
1,3,1
1,3,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,445,85
0,3,1
0,3,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2648,86
0,18,1
0,15,1
0,9,1
0,8,1
0,7,1
0,7,1
0,7,1
0,6,1
0,6,1
0,6,1
0,5,1
0,5,1
0,4,1
0,4,1
0,4,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,66,10
1,54,8
1,43,7
1,41,7
1,40,6
1,36,6
1,35,6
1,22,4
1,21,4
1,19,3
1,12,2
1,9,2
1,9,2
0,8,2
1,8,2
1,7,2
0,6,1
1,6,1
0,6,1
1,5,1
1,5,1
0,4,1
1,4,1
1,3,1
1,3,1
1,3,1
0,3,1
1,3,1
0,2,1
1,2,1
0,2,1
0,2,1
1,2,1
0,2,1
1,2,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
1,2,1
1,2,1
0,2,1
0,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,796,25
1,394,13
1,156,5
1,134,5
1,104,4
1,89,3
1,86,3
1,84,3
1,70,3
1,56,2
1,48,2
1,43,2
1,38,2
1,37,2
1,34,2
1,32,1
1,30,1
1,29,1
1,24,1
1,24,1
1,23,1
0,21,1
1,20,1
1,20,1
1,20,1
1,17,1
1,17,1
1,15,1
1,14,1
1,13,1
1,13,1
1,13,1
1,13,1
0,12,1
1,12,1
1,11,1
1,10,1
1,9,1
0,9,1
0,8,1
0,8,1
0,8,1
1,8,1
1,8,1
1,7,1
1,7,1
1,7,1
0,6,1
1,6,1
1,5,1
0,5,1
0,5,1
1,5,1
0,5,1
1,5,1
0,5,1
0,5,1
0,5,1
1,5,1
0,4,1
0,4,1
0,4,1
0,4,1
1,4,1
1,4,1
0,4,1
1,4,1
0,4,1
0,3,1
1,3,1
1,3,1
0,3,1
1,3,1
0,3,1
1,3,1
0,3,1
0,3,1
1,3,1
1,3,1
1,3,1
1,3,1
1,3,1
1,3,1
1,3,1
1,3,1
1,3,1
0,3,1
1,2,1
1,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
1,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
1,2,1
1,2,1
1,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
0,2,1
1,2,1
1,2,1
1,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
1,62,92
1,3,60
1,14,94
1,13,87
1,2,67
1,361,91
0,13,4
1,4,100
1,181,44
1,116,29
1,27,7
1,22,6
1,8,2
1,8,2
0,7,2
0,3,1
0,3,1
1,2,1
0,2,1
1,2,1
0,2,1
1,3857,64
1,976,17
1,252,5
1,122,3
1,64,2
1,61,2
1,59,1
1,31,1
1,12,1
1,10,1
1,8,1
1,8,1
0,5,1
0,5,1
0,5,1
0,5,1
0,5,1
0,5,1
0,4,1
0,4,1
0,4,1
0,4,1
0,4,1
0,3,1
1,3,1
0,3,1
1,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
1,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,3,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
1,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1
0,2,1

现在,我正在运行以下火花代码(这是一个基于RDD的代码,因为我正在使用spark-1.6)

"""
Logistic Regression With LBFGS Example.
"""
from __future__ import print_function

from pyspark import SparkContext
# $example on$
from pyspark.mllib.classification import LogisticRegressionWithLBFGS, LogisticRegressionModel
from pyspark.mllib.regression import LabeledPoint

# $example off$
import pymongo_spark


if __name__ == "__main__":

    feature_names = ["times", "percentage"]

    sc = SparkContext(appName="LBFGSLOgisticRegressionForRaphael")

    # $example on$
    # Load and parse the data
    def parsePoint(line):
        values = [float(x) for x in line.split(',')]
        return LabeledPoint(values[0], values[1:])

    def mapper(p):
        ret = (p.label, model.predict(p.features))
        print(ret)
        return ret


    data = sc.textFile("/home/ubuntu/etl-scripts/parameters.csv")
    trainingSet = data.map(parsePoint)
    # Build the model
    model = LogisticRegressionWithLBFGS.train(trainingSet)


    #Evaluating the model on training data
    labelsAndPreds = trainingSet.map(mapper)
    # trainErr = labelsAndPreds.filter(lambda (v, p): v != p).count() / float(parsedData.count())
    # print("Training Error = " + str(trainErr))

    # # Save and load model
    # model.save(sc, "target/tmp/pythonLogisticRegressionWithLBFGSModel")
    # sameModel = LogisticRegressionModel.load(sc,
    #                                          "target/tmp/pythonLogisticRegressionWithLBFGSModel")
    # $example off$

我正在加载的文件(parameters.csv)是具有我上面发布的训练数据的文件。现在,无论参数是什么,mapper函数中的print语句总是打印1。这意味着它总是预测积极的。我不知道我在这里缺少什么?是什么原因在将模型应用于训练集本身时从它学到的地方预测完全错误?

有人可以帮帮我吗?

0 个答案:

没有答案