Java 如何使用VectorAssembler设置spark数据集的n个特征?

Java 如何使用VectorAssembler设置spark数据集的n个特征?,java,apache-spark,pca,Java,Apache Spark,Pca,我试图在一个包含n列未标记双精度的矩阵上运行PCA。我的代码是: SparkSession spark = SparkSession .builder() .appName("JavaPCAExample") .getOrCreate(); Dataset<Row> data = spark.read().format("csv") .option("s

我试图在一个包含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();
SparkSession spark=SparkSession
.builder()
.appName(“JavaPCAExample”)
.getOrCreate();
数据集数据=spark.read().format(“csv”)
.期权(“sep”、“、”)
.选项(“推断模式”、“真”)
.选项(“标题”、“假”)
.load(“testInput/matrix.csv”);
PCAModel pca=新pca()
//.setInputCol(“功能”)
//.setOutputCol(“pcaFeatures”)
.setK(3)
.fit(数据);
数据集结果=pca.transform(data).select(“pcaFeatures”);
结果显示(真);
spark.stop();
运行此操作将导致“java.lang.IllegalArgumentException:字段“features”不存在。”异常。我发现了一些帖子:

这让我找到了VectorAssembler文档:

在每个示例中,都会手动添加带标签的列标题作为功能。我还不知道如何使用VectorAssembler将我的n个未标记列全部转换为功能。如有任何见解,将不胜感激。谢谢你找到了.columns()函数

SparkSession spark=SparkSession
.builder()
.appName(“JavaPCAExample”)
.getOrCreate();
数据集数据=spark.read().format(“csv”)
.期权(“sep”、“、”)
.选项(“推断模式”、“真”)
.选项(“标题”、“假”)
.load(“testInput/matrix.csv”);
向量汇编程序汇编程序=新向量汇编程序()
.setInputCols(data.columns())
.setOutputCol(“特征”);
数据集输出=汇编程序.transform(数据);
PCAModel pca=新pca()
.setInputCol(“功能”)
.setOutputCol(“pcaFeatures”)
.setK(5)
.fit(输出);
    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);