省市县字符串特征的独热编码代码 java sparkmllib
时间: 2024-01-31 15:02:39 浏览: 24
以下是Java代码示例,使用Spark MLlib库进行省市县字符串特征的独热编码:
```java
import org.apache.spark.ml.feature.{OneHotEncoder, StringIndexer}
// 创建一个DataFrame,包含省市县三个字段
val data = Seq(
("广东", "深圳", "南山"),
("广东", "广州", "天河"),
("北京", "北京", "海淀"),
("江苏", "南京", "玄武")
).toDF("province", "city", "county")
// 对省市县三个字段进行索引
val provinceIndexer = new StringIndexer()
.setInputCol("province")
.setOutputCol("provinceIndex")
.fit(data)
val cityIndexer = new StringIndexer()
.setInputCol("city")
.setOutputCol("cityIndex")
.fit(data)
val countyIndexer = new StringIndexer()
.setInputCol("county")
.setOutputCol("countyIndex")
.fit(data)
// 对索引后的字段进行独热编码
val encoder = new OneHotEncoder()
.setInputCols(Array("provinceIndex", "cityIndex", "countyIndex"))
.setOutputCols(Array("provinceVec", "cityVec", "countyVec"))
// 将转换器应用于数据集
val indexed = countyIndexer.transform(cityIndexer.transform(provinceIndexer.transform(data)))
val encoded = encoder.transform(indexed)
// 打印结果
encoded.show()
```
这段代码将生成一个包含省市县三个字段的DataFrame,并对这些字段进行索引和独热编码。输出结果将包含独热向量列 `provinceVec`, `cityVec`, `countyVec`。