赞
踩
FeatureHasher
class pyspark.ml.feature.FeatureHasher(numFeatures=262144, inputCols=None, outputCol=None, categoricalCols=None)
特征散列将一组分类或数字特征投影到指定维度的特征向量中(通常远小于原始特征空间的特征向量)。这是使用散列技巧完成的
数值列:
对于数字特征,列名的哈希值用于将特征值映射到其在特征向量中的索引。 默认情况下,数字特征不被视为分类(即使它们是整数)。 要将它们视为分类,请在 categoricalCols 中指定相关列
字符串列:
对于分类特征,使用字符串“column_name=value”的哈希值映射到向量索引,指标值为1.0。因此,分类特征是“one-hot”编码的(类似于使用带有 dropLast=false 的 OneHotEncoder)
布尔列:
布尔值的处理方式与字符串列相同。即布尔特征表示为“column_name=true”或“column_name=false”,指标值为1.0
null值:
Null(缺失)值被忽略(在结果特征向量中隐式为零)
由于使用简单的模将散列函数转换为向量索引,因此建议使用 2 的幂作为 numFeatures 参数;否则特征将不会均匀地映射到向量索引
01.初始化
from pyspark.sql import SparkSession
spark = SparkSession.builder.config("spark.Driver.host","192.168.1.3")\
.config("spark.ui.showConsoleProgress","false")\
.appName("FeatureHasher").master("local[*]").getOrCreate()
02.创建数据
data = [(2.0, True, "1", "foo"), (3.0, False, "2", "bar")]
cols = ["real", "bool", "stringNum", "string"]
df = spark.createDataFrame(data, cols)
df.show()
查看结果:
+----+-----+---------+------+
|real| bool|stringNum|string|
+----+-----+---------+------+
| 2.0| true| 1| foo|
| 3.0|false| 2| bar|
+----+-----+---------+------+
03.查看结构:
df.printSchema()
输出结果:
root
|-- real: double (nullable = true)
|-- bool: boolean (nullable = true)
|-- stringNum: string (nullable = true)
|-- string: string (nullable = true)
04.特征哈希转换
from pyspark.ml.feature import FeatureHasher
hasher = FeatureHasher(inputCols=cols, outputCol="features")
hasher.transform(df).show()
输出结果:
+----+-----+---------+------+--------------------+
|real| bool|stringNum|string| features|
+----+-----+---------+------+--------------------+
| 2.0| true| 1| foo|(262144,[174475,2...|
| 3.0|false| 2| bar|(262144,[70644,89...|
+----+-----+---------+------+--------------------+
05.详细查看
hasher.transform(df).head(2)
输出结果:
[Row(real=2.0, bool=True, stringNum='1', string='foo', features=SparseVector(262144, {174475: 2.0, 247670: 1.0, 257907: 1.0, 262126: 1.0})),
Row(real=3.0, bool=False, stringNum='2', string='bar', features=SparseVector(262144, {70644: 1.0, 89673: 1.0, 173866: 1.0, 174475: 3.0}))]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。