将模型预测保存为csv文件

时间:2015-06-09 22:34:12

标签: python csv apache-spark

我用apache spark尝试了朴素贝叶斯算法

def parseLine(line):
    parts = line.split(',')
    label = float(parts[0])
    features = Vectors.dense([float(x) for x in parts[1].split(' ')])
    return LabeledPoint(label, features)

data = sc.textFile('data/mllib/sample_naive_bayes_data.txt').map(parseLine)

# Split data aproximately into training (60%) and test (40%)
training, test = data.randomSplit([0.6, 0.4], seed = 0)

# Train a naive Bayes model.
model = NaiveBayes.train(training, 1.0)

有没有办法保存预测为csv文件的模型?

2 个答案:

答案 0 :(得分:1)

你的问题不清楚。如果你asc如何保存模型

看起来没有用于保存和加载mllib模型的通用解决方案(版本1.2.x)。开发人员致力于pmml支持,但还没有准备好。

因此,如果您的模型看起来像多项式函数(例如,线性回归),则可以使用getWeights函数,然后从weigts恢复模型。

如果没有,你可以使用普通的java序列化(或者为java尝试一些其他的序列化库)。

如果您想保存预测值

model.predict(test)将生成具有预测值的RDD(没有实际值和特征)。您可以使用 zip 方法将它们关联起来,然后转换为地图功能中的制表符分隔字符串。然后将该字符串保存到文本文件。完成

答案 1 :(得分:0)

如果您想保存模型以便以后重用 - 在Python中不支持保存NaiveBayes模型(与Spark 1.3.1一样)。 如果您想立即保存并加载以后的NaiveBayes模型 - 您可以尝试使用Scala - 它有support for model save/load in 1.3.1

<强>更新 您可以使用master分支中的最新Spark版本 - 它已经在2015年3月对已合并的Python进行了NaiveBayes模型保存/加载支持。所以我很快就会意识到Spark 1.4。

您可能需要从源代码构建Spark - 但它是可行的 - 它附带了所有必需的脚本和如何构建它的说明。