Tôi cần triển khai PCA trong Java. Tôi quan tâm đến việc tìm kiếm nội dung nào đó được tài liệu tốt, thực tế và dễ sử dụng. Bất kỳ đề xuất?Thực hiện PCA trong Java
Trả lời
Đây là một: PCA Class.
Lớp này chứa các phương pháp cần thiết cho Phân tích thành phần chính cơ bản với xoay vòng varimax. Các tùy chọn có sẵn cho một phân tích bằng cách sử dụng hiệp phương sai hoặc siêu kết hợp. Một phân tích song song, sử dụng mô phỏng Monte Carlo, được thực hiện. Các tiêu chí khai thác dựa trên các giá trị riêng biệt lớn hơn sự thống nhất, lớn hơn một tỷ lệ phần trăm riêng của Monte Carlo hoặc lớn hơn các phương tiện trị riêng của Monte Carlo có sẵn.
séc http://weka.sourceforge.net/doc.stable/weka/attributeSelection/PrincipalComponents.html WEKA trên thực tế có nhiều thuật toán khác mà có thể được sử dụng với cùng với PCA và cũng WEKA là thêm thuật toán hơn bất cứ lúc nào. vì vậy tôi điều, nếu bạn đang làm việc trên java sau đó chuyển sang weka api.
Hiện tại có một số triển khai Phân tích thành phần chính cho Java.
Apache Spark: https://spark.apache.org/docs/2.1.0/mllib-dimensionality-reduction.html#principal-component-analysis-pca
SparkConf conf = new SparkConf().setAppName("PCAExample").setMaster("local"); try (JavaSparkContext sc = new JavaSparkContext(conf)) { //Create points as Spark Vectors List<Vector> vectors = Arrays.asList( Vectors.dense(-1.0, -1.0), Vectors.dense(-1.0, 1.0), Vectors.dense(1.0, 1.0)); //Create Spark MLLib RDD JavaRDD<Vector> distData = sc.parallelize(vectors); RDD<Vector> vectorRDD = distData.rdd(); //Execute PCA Projection to 2 dimensions PCA pca = new PCA(2); PCAModel pcaModel = pca.fit(vectorRDD); Matrix matrix = pcaModel.pc(); }
ND4J: http://nd4j.org/doc/org/nd4j/linalg/dimensionalityreduction/PCA.html
//Create points as NDArray instances List<INDArray> ndArrays = Arrays.asList( new NDArray(new float [] {-1.0F, -1.0F}), new NDArray(new float [] {-1.0F, 1.0F}), new NDArray(new float [] {1.0F, 1.0F})); //Create matrix of points (rows are observations; columns are features) INDArray matrix = new NDArray(ndArrays, new int [] {3,2}); //Execute PCA - again to 2 dimensions INDArray factors = PCA.pca_factor(matrix, 2, false);
Apache Commons Math (đơn ren, không có khung)
//create points in a double array double[][] pointsArray = new double[][] { new double[] { -1.0, -1.0 }, new double[] { -1.0, 1.0 }, new double[] { 1.0, 1.0 } }; //create real matrix RealMatrix realMatrix = MatrixUtils.createRealMatrix(pointsArray); //create covariance matrix of points, then find eigen vectors //see https://stats.stackexchange.com/questions/2691/making-sense-of-principal-component-analysis-eigenvectors-eigenvalues Covariance covariance = new Covariance(realMatrix); RealMatrix covarianceMatrix = covariance.getCovarianceMatrix(); EigenDecomposition ed = new EigenDecomposition(covarianceMatrix);
Lưu ý, Phân tích giá trị số ít, cũng có thể được sử dụng để tìm Thành phần chính, có các triển khai tương đương.
Smile là thư viện ML chính thức cho java. Bạn thử thực hiện PCA. Vui lòng xem: https://haifengl.github.io/smile/api/java/smile/projection/PCA.html
Ngoài ra còn có PCA tutorial bằng Smile nhưng hướng dẫn sử dụng Scala.
Liên kết không hợp lệ, hãy cố gắng tránh trả lời các câu hỏi chỉ với một liên kết vì chúng có thể hết hạn và không đáng tin cậy trong tương lai. – Iancovici