Frage

Ich verwende Apache Spark, um die Stimmungsanalyse durchzuführen. Ich verwende den naiven Bayes -Algorithmus, um den Text zu klassifizieren. Ich weiß nicht, wie ich die Wahrscheinlichkeit von Etiketten herausfindet. Ich wäre dankbar, wenn ich weiß, dass ich in Python etwas Snippet bekomme, um die Wahrscheinlichkeit von Etiketten zu finden.

War es hilfreich?

Lösung

Die Wahrscheinlichkeit kann für den Testdatensatz gefunden werden, sobald Sie das Modell trainiert und für den Testdatensatz transformiert wurden, z. Modell dann model.transform(test) enthält einen Knoten von Wahrscheinlichkeit, Weitere Informationen finden Sie im folgenden Code und zeigen Sie Ihnen den Wahrscheinlichkeitsknoten und andere nützliche Knoten auch für an Iris Datensatz.

Partitionsdatensatz zufällig in Trainings- und Testsätze. Saatgut für die Reproduzierbarkeit setzen

(trainingData, testData) = irisdf.randomSplit([0.7, 0.3], seed = 100)

trainingData.cache()
testData.cache()

print trainingData.count()
print testData.count()

Ausgabe:

103
47

Als nächstes werden wir den VectorAssembler () verwenden, um unsere Feature -Spalten in eine einzelne Vektorsäule zusammenzuführen, die wir in unser naives Bayes -Modell übergeben werden. Auch hier werden wir den Datensatz noch nicht verwandeln, da wir den VectorAssembler in unsere ML -Pipeline weitergeben werden.

from pyspark.ml.feature import VectorAssembler
vecAssembler = VectorAssembler(inputCols=["SepalLength", "SepalWidth", "PetalLength", "PetalWidth"], outputCol="features")

Zum Iris -Datensatz, Es hat drei Klassen nämlich setosa, Versicolor und Virginica. Also lasst uns eine erstellen Multiclas Naive Bayes -Klassifizierer Verwenden der PysAPRK -Bibliothek 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)

Analysieren Sie den erstellten Modus Modell, von denen wir Vorhersagen machen können.

predictions = model.transform(testData)
# Display what results we can view
predictions.printSchema()

Ausgabe

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)

Sie können auch einen bestimmten Knoten auswählen, der für einen Datensatz angezeigt wird wie:

# DISPLAY Selected nodes only
display(predictions.select("label", "prediction", "probability"))

Oben werden Sie im tabellarischen Format angezeigt.

Bezug:

  1. Funke
  2. Modelle mit Pipeline
  3. https://mike.seddon.ca/natural-language-processing-with-apache-spark-ml-and-amazon-reviews-part-part-1/
  4. https://stackoverflow.com/questions/31028806/how-to-create-correct-data-frame-for-classification-in-spark-ml
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top