如何使用 VectorAssembler 设置 spark 数据集的 n 个特征?
How to set n features of a spark Dataset using the VectorAssembler?
我正在尝试 运行 在包含 n 列未标记双打的矩阵上进行 PCA。我的代码是:
SparkSession spark = SparkSession
.builder()
.appName("JavaPCAExample")
.getOrCreate();
Dataset<Row> data = spark.read().format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "False")
.load("testInput/matrix.csv");
PCAModel pca = new PCA()
// .setInputCol("features")
// .setOutputCol("pcaFeatures")
.setK(3)
.fit(data);
Dataset<Row> result = pca.transform(data).select("pcaFeatures");
result.show(true);
spark.stop();
运行 这会导致“java.lang.IllegalArgumentException:字段“特征”不存在。”例外。我找到了帖子:
这让我找到了 VectorAssembler 文档:
https://spark.apache.org/docs/latest/ml-features.html#vectorassembler
在每个示例中,带标签的列 headers 都被手动添加为特征。我一直无法弄清楚如何使用 VectorAssembler 将我所有的 n 未标记的列转换为特征。任何见解将不胜感激。谢谢
找到 .columns() 函数
SparkSession spark = SparkSession
.builder()
.appName("JavaPCAExample")
.getOrCreate();
Dataset<Row> data = spark.read().format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "False")
.load("testInput/matrix.csv");
VectorAssembler assembler = new VectorAssembler()
.setInputCols(data.columns())
.setOutputCol("features");
Dataset<Row> output = assembler.transform(data);
PCAModel pca = new PCA()
.setInputCol("features")
.setOutputCol("pcaFeatures")
.setK(5)
.fit(output);
我正在尝试 运行 在包含 n 列未标记双打的矩阵上进行 PCA。我的代码是:
SparkSession spark = SparkSession
.builder()
.appName("JavaPCAExample")
.getOrCreate();
Dataset<Row> data = spark.read().format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "False")
.load("testInput/matrix.csv");
PCAModel pca = new PCA()
// .setInputCol("features")
// .setOutputCol("pcaFeatures")
.setK(3)
.fit(data);
Dataset<Row> result = pca.transform(data).select("pcaFeatures");
result.show(true);
spark.stop();
运行 这会导致“java.lang.IllegalArgumentException:字段“特征”不存在。”例外。我找到了帖子:
这让我找到了 VectorAssembler 文档: https://spark.apache.org/docs/latest/ml-features.html#vectorassembler
在每个示例中,带标签的列 headers 都被手动添加为特征。我一直无法弄清楚如何使用 VectorAssembler 将我所有的 n 未标记的列转换为特征。任何见解将不胜感激。谢谢
找到 .columns() 函数
SparkSession spark = SparkSession
.builder()
.appName("JavaPCAExample")
.getOrCreate();
Dataset<Row> data = spark.read().format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "False")
.load("testInput/matrix.csv");
VectorAssembler assembler = new VectorAssembler()
.setInputCols(data.columns())
.setOutputCol("features");
Dataset<Row> output = assembler.transform(data);
PCAModel pca = new PCA()
.setInputCol("features")
.setOutputCol("pcaFeatures")
.setK(5)
.fit(output);