2012-05-15 14 views
8

मुझे जावा में पीसीए के कार्यान्वयन की आवश्यकता है। मुझे कुछ ऐसा खोजने में दिलचस्पी है जो अच्छी तरह से प्रलेखित, व्यावहारिक और उपयोग में आसान है। कोई सिफारिशें?जावा में पीसीए कार्यान्वयन

उत्तर

8

यहां एक है: PCA Class

इस कक्षा में एक मूल प्रिंसिपल घटक विश्लेषण के लिए एक वैरिमैक्स रोटेशन के साथ आवश्यक विधियां शामिल हैं। विकल्पों को कॉन्वर्सिस या सहसंबंध मार्टिक्स का उपयोग करके विश्लेषण के लिए उपलब्ध हैं। मोंटे कार्लो सिमुलेशन का उपयोग करते हुए एक समांतर विश्लेषण किया जाता है। एकता से अधिक ईग्नवेल पर आधारित निष्कर्षण मानदंड, मोंटे कार्लो ईजेनवल्यू प्रतिशत से अधिक या मोंटे कार्लो ईजेनवाल्यू से अधिक अर्थ उपलब्ध हैं। वास्तव में

3

जांच http://weka.sourceforge.net/doc.stable/weka/attributeSelection/PrincipalComponents.html Weka कई अन्य एल्गोरिथ्म कि पीसीए के साथ साथ इस्तेमाल किया जा सकता है और यह भी Weka समय-समय पर अधिक एल्गोरिथ्म जोड़ रहा है। तो मैं बात करता हूं, अगर आप जावा पर काम कर रहे हैं तो वीका एपीआई पर स्विच करें।

+3

अमान्य लिंक, कृपया केवल एक लिंक के साथ सवालों के जवाब देने से बचने का प्रयास करें, क्योंकि वे भविष्य में समाप्त हो सकते हैं और अविश्वसनीय हो सकते हैं। – Iancovici

8

अब जावा के लिए प्रिंसिपल कंपोनेंट विश्लेषण कार्यान्वयन के कई सारे हैं।

  1. अपाचे स्पार्क: 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(); 
    } 
    
  2. 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); 
    
  3. Apache Commons मठ (एकल लड़ी, कोई ढांचा)

    //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); 
    

नोट, सिंगुलर वैल्यू डिकंपोजिशन, जिसका उपयोग प्रिंसिपल कंपोनेंट्स को खोजने के लिए भी किया जा सकता है, के बराबर कार्यान्वयन है।

0

Smile जावा के लिए एक पूर्ण एमएल लाइब्रेरी है। आप अपने पीसीए कार्यान्वयन को एक कोशिश देते हैं। कृपया देखें: https://haifengl.github.io/smile/api/java/smile/projection/PCA.html

स्माइल के साथ पीसीए tutorial भी है लेकिन ट्यूटोरियल स्कैला का उपयोग करता है।

संबंधित मुद्दे