小编Gus*_*sto的帖子

如何使用 PySpark 2.4.5 评估分类器

我想知道使用 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)

python evaluation apache-spark pyspark apache-spark-mllib

16
推荐指数
1
解决办法
9236
查看次数

Pandas:用两列替换数据框中的一列

我的 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列!但我认为必须有更好的解决方案来解决我的问题!

python multiple-columns pandas

6
推荐指数
1
解决办法
8271
查看次数

Python:使用 Scipy 的树状图不起作用

我想使用 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' …

python hierarchical-clustering scipy

0
推荐指数
1
解决办法
3069
查看次数