我正在使用 Apache Spark 执行情感分析。我正在使用朴素贝叶斯算法对文本进行分类。我不知道如何找出标签的概率。如果我知道在 python 中获取一些片段来查找标签的概率,我将不胜感激。
Spark 中的机器学习
数据挖掘
大数据
阿帕奇火花
pyspark
2021-10-08 02:00:37
1个回答
一旦您训练了模型并转换为测试数据集,就可以找到测试数据集的概率,例如:如果您训练的朴素贝叶斯模型是模型 ,则 model.transform(test)包含概率节点,有关更多详细信息,请查看以下代码,将向您展示概率节点和其他有用的节点也适用于iris数据集。
将数据集随机划分为训练集和测试集。为可重复性设置种子
(trainingData, testData) = irisdf.randomSplit([0.7, 0.3], seed = 100)
trainingData.cache()
testData.cache()
print trainingData.count()
print testData.count()
输出:
103
47
接下来,我们将使用 VectorAssembler() 将我们的特征列合并为一个向量列,我们将把它传递给我们的朴素贝叶斯模型。同样,我们暂时不会转换数据集,因为我们会将 VectorAssembler 传递到我们的 ML 管道中。
from pyspark.ml.feature import VectorAssembler
vecAssembler = VectorAssembler(inputCols=["SepalLength", "SepalWidth", "PetalLength", "PetalWidth"], outputCol="features")
对于iris 数据集,它有setosa、versicolor和virginica三个类。因此,让我们使用 pysaprk 库创建一个多类朴素贝叶斯分类ml器。
from pyspark.ml.classification import NaiveBayes
from pyspark.ml import Pipeline
# Train a NaiveBayes model
nb = NaiveBayes(smoothing=1.0, modelType="multinomial")
# Chain labelIndexer, vecAssembler and NBmodel in a pipeline
pipeline = Pipeline(stages=[labelIndexer, vecAssembler, nb])
# Run stages in pipeline and train model
model = pipeline.fit(trainingData)
分析创建的模式模型,我们可以从中进行预测。
predictions = model.transform(testData)
# Display what results we can view
predictions.printSchema()
输出
root
|-- SepalLength: double (nullable = true)
|-- SepalWidth: double (nullable = true)
|-- PetalLength: double (nullable = true)
|-- PetalWidth: double (nullable = true)
|-- Species: string (nullable = true)
|-- label: double (nullable = true)
|-- features: vector (nullable = true)
|-- rawPrediction: vector (nullable = true)
|-- probability: vector (nullable = true)
|-- prediction: double (nullable = true)
您还可以选择特定节点以查看某些数据集,如下所示:
# DISPLAY Selected nodes only
display(predictions.select("label", "prediction", "probability"))
以上将以表格形式显示。
参考:
其它你可能感兴趣的问题