RMSE(均方根误差) | MSE(均方误差) | R2(拟合优度检验) | MAE(平均绝对误差) | |
MLLIB库 | √ | √ | √ | √ |
ML库 | √ | √ | √ | √ |
这个类位于org.apache.spark.mllib.evaluation包下
class RegressionMetrics @Since("1.2.0") (
predictionAndObservations: RDD[(Double, Double)])
参数说明:
参数是一个RDD类型的参数,第一列为预测列 第二列为原始标签列
这个类位于org.apache.spark.ml.evaluation包下面,通过设置下面的metricName包含以上四种指标的评估:
val metricName: Param[String] = {
val allowedParams = ParamValidators.inArray(Array("mse", "rmse", "r2", "mae"))
new Param(this, "metricName", "metric name in evaluation (mse|rmse|r2|mae)", allowedParams)
}
def evaluate(dataset: Dataset[_]): Double
通过这个方法可以获取评估结果,其中参数是包含两列:一列是预测列,一列是原始标签列。
AreaUnderROC | ROC | (precision, recall) curve | areaUnderPR | (threshold, recall) curve | (threshold, F-Measure) curve | |
MLLIB库 | √ | √ | √ | √ | √ | √ |
ML库 | √ | √ |
class BinaryClassificationMetrics @Since("1.3.0") (
@Since("1.3.0") val scoreAndLabels: RDD[(Double, Double)],
@Since("1.3.0") val numBins: Int)
参数介绍:
第一个参数类型是RDD第一列为预测列 第二列为原始标签列;
第二个参数是大于0,那么在求roc curve 和pr curve时使用降采样方法到这么多个numBins中去。
org.apache.spark.ml.evaluation. BinaryClassificationEvaluator类:
val metricName: Param[String] = {
val allowedParams = ParamValidators.inArray(Array("areaUnderROC", "areaUnderPR"))
new Param(
this, "metricName", "metric name in evaluation (areaUnderROC|areaUnderPR)", allowedParams)
}
通过下面的方法可以设置评估指标的类型:
def setMetricName(value: String): this.type
通过这个方法override def evaluate(dataset: Dataset[_]): Double
参数为两列: 第一列是预测列 第二列是原始标签列
weightedFMeasure加权后的F值 | weightedPrecision加权后的准确率,对于每一个标签的准确率加权 | weightedRecall加权后的召回 | Accuracy正确分类的样本/总样本 | |
MLLIB库 | √ | √ | √ | √ |
ML库 | √ | √ | √ | √ |
下面的几个评估指标主要是针对每一个标签来说的,MLLIB库中含有的:
confusionMatrix返回一个混淆矩阵 | PositiveRate(label: Double) | precision(label: Double) | Recall(label: Double) | fMeasure(label: Double, beta: Double) | falsePositiveRate(label: Double) | |
MLLIB库 | √ | √ | √ | √ | √ | √ |
这个类位于org.apache.spark.mllib.evaluation包下面
@Since("1.1.0")
class MulticlassMetrics @Since("1.1.0") (predictionAndLabels: RDD[(Double, Double)])
参数是一个RDD类型,分为两列 第一列是预测列 第二列是原始标签列
这个类位于org.apache.spark.ml.evaluation包下面,包含以下四种评估指标:
* f1
* weightedPrecision
* weightedRecall
* accuracy
val metricName: Param[String] = {
val allowedParams = ParamValidators.inArray(Array("f1", "weightedPrecision",
"weightedRecall", "accuracy"))
new Param(this, "metricName", "metric name in evaluation " +
"(f1|weightedPrecision|weightedRecall|accuracy)", allowedParams)
}
可以通过下面的函数去设置评估方法:
def setMetricName(value: String): this.type \
override def evaluate(dataset: Dataset[_]): Double
通过调用evaluate方法传入dataset 包含两列一列是预测列 一列是原始标签列
函数内会根据metricName去匹配调用相应的方法得到结果
the sum of squared distances | |
MLLIB库 | √ |
ML库 | √ |
org.apache.spark.ml.clustering包下面:
每个聚类方法的评估指标在该类对应的model里面,例如 Kmeans方法的评估指标是通过其model类KmeansModel调用def computeCost(data: RDD[Vector]): Double这个函数得到。
针对聚类ML库同MLLIB库,还没有一个聚类的评估类,只能在自己的model类了吗调用相关方法计算。
根据每个点到其最近聚类中心的距离可以作图如下:
横坐标是点到最近聚类中心距离的范围,纵坐标是某个范围内对应的样本个数