赞
踩
Pyspark版本:V3.2.1
本篇博客只单独介绍Pyspark.ml.feature包中HashingTF类和FeatureHasher类的使用方法,其他类的使用可以参考博客:Pyspark:特征处理(ml.feature包的是使用)_Sun_Sherry的博客-CSDN博客
MurmurHash算法是一种适用于一般的基于散列查找的非加密校验函数。其当前最新版本为MurmurHash3,该算法能够产生出32-bit或128-bit哈希值。
Murmur哈希的算法包含两个基本操作:MUltiply(MU, 乘法) and Rotate(R,旋转)。因为它在哈希的过程要经历多次MU和R操作,所以就叫算法就叫MurMur了。
目前Python中的第三方包mmh3已经实现了该哈希算法,这里仅简要介绍其使用方法。具体如下:
- import mmh3
-
- a_mmh=mmh3.hash('a')
- print(a_mmh)
- a_mmh64=mmh3.hash64('a')
- print(a_mmh64)
- a_mmh128=mmh3.hash128('a')
- print(a_mmh128)
其结果如下:
概括地说,HashingTF类可以统计各个单词(term)在一篇文档中出现的次数(term frequence,TF),并以向量的方式保存。而在统计过程中,需要将单词跟向量的列索引一一映射起来。其映射方法如下:
HashingTF的使用方法如下:
- from pyspark.sql import SparkSession
- from pyspark.ml.feature import *
- import os
- from pyspark.ml.linalg import Vectors
-
- os.environ['SPARK_HOME'] ='/Users/sherry/documents/spark/spark-3.2.1-bin-hadoop3.2'
- spark=SparkSession.builder.appName('ml').getOrCreate()
-
- data=spark.createDataFrame([(['a','b','c','b'],),
- (['c','d','d','c'],),
- (['a','e','e'],),],['words'])
- tf_model=HashingTF(inputCol='words',outputCol='w_tf',numFeatures=8)
- data_tf=tf_model.transform(data)
- print(data_tf.toPandas())
其结果如下:
FeatureHasher类的作用和x的作用基本相似,但FeatureHasher类能处理更多的数据类型。其具体处理方式如下:
其具体用法举例如下:
- df=spark.createDataFrame([(1,True,'A1','1'),
- (2,False,'C1','3')],
- ['A','B','C','D'])
- feat_hash=FeatureHasher(inputCols=['A','B','C','D'],
- outputCol='features',
- numFeatures=8)
- df_feathash=feat_hash.transform(df)
其结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。