我想知道使用 Apache Spark 2.4.5 和 PySpark (Python) 评估拟合二进制分类模型的最佳方法是什么。我想考虑不同的指标,例如准确率、准确率、召回率、auc 和 f1 分数。
让我们假设给出以下内容:
# pyspark.sql.dataframe.DataFrame in VectorAssembler format containing two columns: target and features
# DataFrame we want to evaluate
df
# Fitted pyspark.ml.tuning.TrainValidationSplitModel (any arbitrary ml algorithm)
model
Run Code Online (Sandbox Code Playgroud)
1. 选项
无论BinaryClassificationEvaluator也不MulticlassClassificationEvaluator可以计算出自己的上述所有指标。因此,我们使用两个评估器。
from pyspark.ml.evaluation import BinaryClassificationEvaluator, MulticlassClassificationEvaluator
# Create both evaluators
evaluatorMulti = MulticlassClassificationEvaluator(labelCol="target", predictionCol="prediction")
evaluator = BinaryClassificationEvaluator(labelCol="target", rawPredictionCol="prediction", metricName='areaUnderROC')
# Make predicitons
predictionAndTarget = model.transform(df).select("target", "prediction")
# Get metrics
acc = evaluatorMulti.evaluate(predictionAndTarget, {evaluatorMulti.metricName: "accuracy"})
f1 = …
Run Code Online (Sandbox Code Playgroud) 我的 csv 文件中有一个列,其中包含一个元组作为值。例如一个值: 10.000 , 20.000
我的目标是拆分该列并用两个新列替换该列。
我已经尝试过以下操作:
brokerMktPrices["nameOfColumn"] = pd.DataFrame(brokerMktPrices["nameOfColumn"].str.split(' ',1).tolist(), columns = ['firstNewColumn','secondNewColumn'])
Run Code Online (Sandbox Code Playgroud)
但这会导致一列仅包含元组的第一个值(左侧值)。所以secondNewColumn
缺少了!
我还尝试了一些麻烦的事情,例如在数据框末尾添加两个新列,然后删除该nameOfColumn
列!但我认为必须有更好的解决方案来解决我的问题!
我想使用 scipy 的树状图。我有以下数据:
我有一个包含七种不同方式的列表。例如:
Y = [71.407452200146807, 0, 33.700136456196823, 1112.3757110973756, 31.594949722819372, 34.823881975554166, 28.36368420190157]
Run Code Online (Sandbox Code Playgroud)
每个平均值是为不同的用户计算的。例如:
X = ["user1", "user2", "user3", "user4", "user5", "user6", "user7"]
Run Code Online (Sandbox Code Playgroud)
我的目标是在树状图的帮助下显示上述数据。
我尝试了以下方法:
Y = [71.407452200146807, 0, 33.700136456196823, 1112.3757110973756, 31.594949722819372, 34.823881975554166, 28.36368420190157]
X = ["user1", "user2", "user3", "user4", "user5", "user6", "user7"]
# Attempt with matrix
#X = np.concatenate((X, Y),)
#Z = linkage(X)
Z = linkage(Y)
# Plot the dendogram with the results above
dendrogram(Z, leaf_rotation=45., leaf_font_size=12. , show_contracted=True)
plt.style.use("seaborn-whitegrid")
plt.title("Dendogram to find clusters")
plt.ylabel("Distance")
plt.show()
Run Code Online (Sandbox Code Playgroud)
但它说:
ValueError:压缩距离矩阵 'y' …