List of usage examples for weka.attributeSelection PrincipalComponents setVarianceCovered
public void setVarianceCovered(double vc)
From source file:PCADetector.java
License:Apache License
public boolean runPCA(ArrayList<Double> newData, int slidewdSz, double cAlpha, int nAttrs) { try {/* www. j av a 2 s. c o m*/ if (m_nDims == 0) { m_nDims = nAttrs; for (int i = 0; i < this.m_nDims; i++) { m_oriDataMatrix.add(new ArrayList<Double>()); // one list for each attribute } } verifyData(newData); this.c_alpha = cAlpha; if (false == prepareData(newData, slidewdSz)) return false; Instances oriDataInsts = getInstances(); if (oriDataInsts != null) { // standardization + PCA covariance matrix m_scaledInstances = new Instances(oriDataInsts); Standardize filter = new Standardize(); filter.setInputFormat(m_scaledInstances); m_scaledInstances = Standardize.useFilter(m_scaledInstances, filter); // standardization PrincipalComponents PCA = new PrincipalComponents(); PCA.setVarianceCovered(1.0); // means 100% PCA.setMaximumAttributeNames(-1); PCA.setCenterData(true); Ranker ranker = new Ranker(); AttributeSelection selector = new AttributeSelection(); selector.setSearch(ranker); selector.setEvaluator(PCA); selector.SelectAttributes(m_scaledInstances); // Instances transformedData = selector.reduceDimensionality(m_scaledInstances); // get sorted eigens double[] eigenValues = PCA.getEigenValues(); // eigenVectors[i][j] i: rows; j: cols double[][] eigenVectors = PCA.getUnsortedEigenVectors(); Sort(eigenValues, eigenVectors); setEigens(eigenValues); // get residual start dimension int residualStartDimension = -1; double sum = 0; double major = 0; for (int ss = 0; ss < eigenValues.length; ss++) { sum += eigenValues[ss]; } for (int ss = 0; ss < eigenValues.length; ss++) { major += eigenValues[ss]; if ((residualStartDimension < 0) && (major / sum > 0.95)) { residualStartDimension = ss + 1; break; } } // System.out.println("residualStartDim: "+residualStartDimension); m_threshold = computeThreshold(eigenValues, residualStartDimension); // check new data abnormal or not boolean bAbnormal = checkSPE(eigenVectors, residualStartDimension, newData); computeProjPCs(eigenVectors, residualStartDimension, newData); // only for demo if (bAbnormal) { // anomaly, now to diagnosis // check original space using all the lists diagnosis(eigenVectors, residualStartDimension, newData); } } } catch (Exception exc) { } return true; }
From source file:com.rapidminer.operator.features.transformation.PrincipalComponentsTransformation.java
License:Open Source License
public IOObject[] apply() throws OperatorException { ExampleSet exampleSet = getInput(ExampleSet.class); PrincipalComponents transformation = new PrincipalComponents(); transformation.setNormalize(false); // if the user wants to normalize // the data he has to apply the // filter before transformation.setVarianceCovered(getParameterAsDouble(PARAMETER_MIN_VARIANCE_COVERAGE)); log(getName() + ": Converting to Weka instances."); Instances instances = WekaTools.toWekaInstances(exampleSet, "PCAInstances", WekaInstancesAdaptor.LEARNING); try {//from w w w. j av a 2 s . co m log(getName() + ": Building principal components."); transformation.buildEvaluator(instances); } catch (Exception e) { throw new UserError(this, e, 905, new Object[] { "PrincipalComponents", e }); } ExampleSet result = null; try { Instances transformed = transformation.transformedData(); result = WekaTools.toRapidMinerExampleSet(transformed, "pc"); } catch (Exception e) { throw new UserError(this, 905, "Principal Components Transformation", "Cannot convert to principal components (" + e.getMessage() + ")"); } return new IOObject[] { result }; }
From source file:it.poliba.sisinflab.simlib.featureSelection.methods.PCA.java
public void execute(String dataset) { try {/*from w w w. ja va 2 s . c om*/ if (dataset.length() == 0) throw new IllegalArgumentException(); // Load input dataset. DataSource source = new DataSource(dataset); Instances data = source.getDataSet(); // Performs a principal components analysis. PrincipalComponents pcaEvaluator = new PrincipalComponents(); // Sets the amount of variance to account for when retaining principal // components. pcaEvaluator.setVarianceCovered(1.0); // Sets maximum number of attributes to include in transformed attribute // names. pcaEvaluator.setMaximumAttributeNames(-1); // Scaled X such that the variance of each feature is 1. boolean scale = true; if (scale) { pcaEvaluator.setCenterData(true); } else { pcaEvaluator.setCenterData(false); } // Ranking the attributes. Ranker ranker = new Ranker(); ranker.setNumToSelect(-1); AttributeSelection selector = new AttributeSelection(); selector.setSearch(ranker); selector.setEvaluator(pcaEvaluator); selector.SelectAttributes(data); // Transform data into eigenvector basis. Instances transformedData = selector.reduceDimensionality(data); PrintStream o = new PrintStream(new File("data/" + "PCAResults" + ".txt")); System.setOut(o); System.out.println(Arrays.toString(selector.rankedAttributes())); System.out.println(Arrays.toString(selector.selectedAttributes())); //System.out.println(selector.CVResultsString()); System.out.println(selector.toResultsString()); System.out.println(); } catch (IllegalArgumentException e) { System.err.println("Error"); } catch (Exception e) { e.printStackTrace(); } }