VectorAssembler是一个转换器它将给定的列列表组合到一个向量列中
将原始特征和由不同特征变换器生成的特征组合成单个特征向量非常有用
以便训练ML模型如逻辑回归和决策树
VectorAssembler接受以下输入列类型:所有数字类型,布尔类型和矢量类型。 在每一行中,输入列的值将按 指定的顺序连接到一个向量中
返回的是一个vector,向量
01.加载模块创建对象
from pyspark.sql import SparkSession
from pyspark.ml.feature import VectorAssembler
spark = SparkSession.builder.config("spark.driver.host","192.168.1.4")\
.config("spark.ui.showConsoleProgress","false")\
.appName("VectorAssembler").master("local[*]").getOrCreate()
02.生成数据,数据格式需要满足前面的要求
from pyspark.sql.types import Row
data = spark.createDataFrame([
Row(1,2),
Row(11,12),
Row(15,16),
Row(19,20)
],["name","version"])
data.show()
输出结果:
+----+-------+
|name|version|
+----+-------+
| 1| 2|
| 11| 12|
| 15| 16|
| 19| 20|
+----+-------+
03.使用转换器,转换数据
vectorAssembler = VectorAssembler(inputCols=['name', 'version'],outputCol="res")
res = vectorAssembler.transform(data)
res.show()
输出结果:
+----+-------+-----------+
|name|version| res|
+----+-------+-----------+
| 1| 2| [1.0,2.0]|
| 11| 12|[11.0,12.0]|
| 15| 16|[15.0,16.0]|
| 19| 20|[19.0,20.0]|
+----+-------+-----------+
04.查看输出列的类型:
res.printSchema()
spark.stop()
输出结果:
root
|-- name: long (nullable = true)
|-- version: long (nullable = true)
|-- res: vector (nullable = true)