PySpark - Как получить точность / отзыв / ROC от TrainValidationSplit? - PullRequest
0 голосов
/ 19 сентября 2018

Мой текущий подход для оценки различных параметров для LinearSVC и получения наилучшего:

tokenizer = Tokenizer(inputCol="Text", outputCol="words")
wordsData = tokenizer.transform(df)

hashingTF = HashingTF(inputCol="words", outputCol="rawFeatures")
featurizedData = hashingTF.transform(wordsData)

idf = IDF(inputCol="rawFeatures", outputCol="features")
idfModel = idf.fit(featurizedData)

LSVC = LinearSVC()

rescaledData = idfModel.transform(featurizedData)

paramGrid = ParamGridBuilder()\
                            .addGrid(LSVC.maxIter, [1])\
                            .addGrid(LSVC.regParam, [0.001, 10.0])\
                            .build()

crossval = TrainValidationSplit(estimator=LSVC,
                                estimatorParamMaps=paramGrid,
                                evaluator=MulticlassClassificationEvaluator(metricName="weightedPrecision"),
                                testRatio=0.01)

cvModel = crossval.fit(rescaledData.select("KA", "features").selectExpr("KA as label", "features as features"))

bestModel = cvModel.bestModel

Теперь я хотел бы получить основные параметры ML (например, precision, recall и т. Д.)как мне их получить?

1 Ответ

0 голосов
/ 19 сентября 2018
You can try this

from pyspark.mllib.evaluation import MulticlassMetrics


# Instantiate metrics object
metrics = MulticlassMetrics(predictionAndLabels)

# Overall statistics
precision = metrics.precision()
recall = metrics.recall()
f1Score = metrics.fMeasure()
print("Summary Stats")
print("Precision = %s" % precision)
print("Recall = %s" % recall)
print("F1 Score = %s" % f1Score)

Вы можете проверить эту ссылку для получения дополнительной информации

https://spark.apache.org/docs/2.1.0/mllib-evaluation-metrics.html

...