Necesito la implementación de PCA en Java. Estoy interesado en encontrar algo que esté bien documentado, práctico y fácil de usar. ¿Alguna recomendación?Implementación de PCA en Java
Respuesta
Aquí hay uno: PCA Class.
Esta clase contiene los métodos necesarios para un análisis básico de componentes principales con una rotación varimax. Las opciones están disponibles para un análisis utilizando la covarianza o la correlación martix. Se realiza un análisis paralelo, usando simulaciones de Monte Carlo. Se encuentran disponibles criterios de extracción basados en valores propios mayores que la unidad, mayores que un percentil de autovalores de Monte Carlo o mayores que los valores propios de Monte Carlo.
cheque http://weka.sourceforge.net/doc.stable/weka/attributeSelection/PrincipalComponents.html weka, de hecho, tienen muchas otras algoritmo que podría ser utilizado junto con la PCA y también weka está añadiendo más algoritmo de vez en cuando. así que, si estás trabajando en Java, cambia a weka api.
Ahora hay una serie de implementaciones de análisis de componentes principales para 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 (single roscado; sin marco)
//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);
Nota: La Descomposición de valores singulares, que también se puede usar para encontrar componentes principales, tiene implementaciones equivalentes.
Smile es una biblioteca de ML hecha y derecha para java. Le das una oportunidad a su implementación de PCA. Por favor vea: https://haifengl.github.io/smile/api/java/smile/projection/PCA.html
También hay PCA tutorial con Smile pero el tutorial usa Scala.
- 1. Hacer PCA en java en matriz grande
- 2. OpenCV PCA Compute en Python
- 3. Algoritmo PCA y KNN
- 4. PCA primero o normalización primero?
- 5. Trazando pca biplot con ggplot2
- 6. Aplicar PCA en matriz dispersa muy grande
- 7. implementación de diff en Java
- 8. Implementación de KDTree en Java
- 9. Comparación visual de regresión y PCA
- 10. Implementación de Java Primitive
- 11. Implementación de archivos Java
- 12. Implementación Files.size() en Java 7
- 13. Implementación de OCR de Java
- 14. Implementación de Java de ... ¿JVM?
- 15. Implementación JAVA JNA WindowProc
- 16. Implementación de MPI para Java
- 17. IntervalTree DeleteNode Implementación de Java
- 18. ¿Mejor implementación de Java Queue?
- 19. Implementación java segmento de árbol
- 20. ¿Existe una implementación de handlebars.js en Java?
- 21. Cualquier implementación de conjunto ordenado en Java?
- 22. Implementación eficiente de matrices multidimensionales en Java?
- 23. Implementación de Barcode Scanner en Java
- 24. Implementación del proveedor de OAuth en Java
- 25. Implementación de árbol genérico en Java
- 26. Implementación de la interfaz Java en MATLAB
- 27. Implementación de interfaz genérica en Java
- 28. Implementación de complementos dinámicos en Java
- 29. Implementación de Java Array HashCode
- 30. Implementación de Java N-Tuple
Enlace no válido, evite responder preguntas con solo un enlace, ya que pueden caducar y no ser confiable en el futuro. – Iancovici