pyspark

多项式转化 PolynomialExpansion

degree=3 时,x ,xx ,xxx ,y ,xy ,xxy ,yy ,xyy ,yyy

pyspark_第1张图片

 

类别型数据常用独热编码:

字符转换成数字索引 StringIndexer

在转换成独热编码  OneHotEncoder

使用stringindex将category转换成categoryIndex  之后,本来a,b,c是没有大小顺序的,但是转换成数字索引后数字0,1,2有了大小关系,因此使用onehotencoder再次转换

pyspark_第2张图片

一般只在测试集上进行独热编码,测试数据中可能会出现新的类别,比如‘e’,因此,编码时可以先预留一种‘rare’类别,新的类别都归进去

 

文本处理

基于DataFrame的StopWordsRemover处理

停止词的词表一般不需要自己制作,有很多可选项可以自己下载选用。中文暂时没有词表。

remover.transform(sentenceData).show(truncate=False)

truncate=False:结果show的时候太长也不会做截断,属性为True时会截断

pyspark_第3张图片

 

Tokenize 将一句话转换成一个单词的序列

pyspark_第4张图片

Count Vectorizer

pyspark_第5张图片

说明features中第一行id为1 的数据[0,1,2],[1,1,1],含义,左边是值,右边是出现次数,表示0出现1次,1出现1次,2出现一次。

 

要先使用fit对数据进行扫描,才知道数据的出现次数,进行编码,然后才能transport

 

TF-IDF

pyspark_第6张图片

SQLTransformer

from pyspark.ml.feature import SQLTransformer
df = spark.createDataFrame([
    (0,1.0,2.0 ), 
    (1, 3.0,2.0),
    (2,4.0,7.0 )],
    ["id", "v1","v2"])
sqlTrans = SQLTransformer(statement="SELECT *, (v1 + v2) AS v3, (v1 * v2) AS v4 FROM __THIS__")
sqlTrans.transform(df).show()
spark.stop()

+---+---+---+----+----+
| id| v1| v2|  v3|  v4|
+---+---+---+----+----+
|  0|1.0|2.0| 3.0| 2.0|
|  1|3.0|2.0| 5.0| 6.0|
|  2|4.0|7.0|11.0|28.0|
+---+---+---+----+----+

 

你可能感兴趣的:(pyspark)