Java 如何使用VectorAssembler设置spark数据集的n个特征?
我试图在一个包含n列未标记双精度的矩阵上运行PCA。我的代码是: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
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);