在PySpark中,pandas.cut()的等价物是pyspark.ml.feature.Bucketizer。pyspark.ml.feature.Bucketizer是一个用于将连续特征划分为离散化区间的转换器。它根据用户定义的边界将输入列的值映射到指定的区间编号。使用Bucketizer可以将连续特征转换为分类特征,方便后续的机器学习模型训练和分析。
使用pyspark.ml.feature.Bucketizer,您可以指定边界数组,这些边界将被用于将连续特征进行离散化。每个边界数组的元素定义了一个区间,例如[0, 10, 20, 30]将连续特征划分为四个区间:(-inf, 0.0], (0.0, 10.0], (10.0, 20.0], (20.0, 30.0]。
以下是pyspark.ml.feature.Bucketizer的主要参数:
以下是pyspark.ml.feature.Bucketizer的示例代码:
from pyspark.ml.feature import Bucketizer
# 创建一个DataFrame作为示例数据
data = [(0, -1.0), (1, 1.5), (2, 3.0), (3, 5.5)]
df = spark.createDataFrame(data, ["id", "value"])
# 指定边界数组
splits = [-float("inf"), 0.0, 2.0, float("inf")]
# 创建Bucketizer对象
bucketizer = Bucketizer(splits=splits, inputCol="value", outputCol="bucketedValues")
# 对DataFrame进行转换
bucketedData = bucketizer.transform(df)
bucketedData.show()
输出结果如下所示:
+---+-----+--------------+
| id|value|bucketedValues|
+---+-----+--------------+
| 0| -1.0| 0.0|
| 1| 1.5| 1.0|
| 2| 3.0| 1.0|
| 3| 5.5| 2.0|
+---+-----+--------------+
在这个示例中,输入列"value"的值被映射到bucketedValues列中的相应区间编号。
领取专属 10元无门槛券
手把手带您无忧上云