PCA with linear Accord.Net
Implements principal component analysis(PCA) algorithm
PCA Summary
Example
public static List<double> GetPCADataErrorValue(List<double[]> coordinates)
{
var originalData = coordinates.DeepClone();
var data = coordinates.ToArray();
var centroid = Measures.Mean(data, dimension: 0);
PrincipalComponentAnalysis pca = new PrincipalComponentAnalysis()
{
Method = PrincipalComponentMethod.CovarianceMatrix,
Means = centroid,
};
var adjustData = AdjustData(data, centroid);
var covariance = Measures.Covariance(adjustData);
pca.Learn(covariance);
var transform = pca.Transform(originalData.ToArray());
double maxDistance = 0;
List<double> distanceList = new List<double>();
// κ° μ μμ μ£Όμ΄μ§ μ μ λν 거리 κ³μ°
for (int i = 0; i < data.Length; ++i)
{
var distance = Math.Sqrt(Math.Pow(transform[i][1], 2) + Math.Pow(transform[i][2],2));
distanceList.Add(distance);
maxDistance = Math.Max(maxDistance, distance);
}
}
private static double[][] AdjustData(double[][] data, double[] centroid)
{
for (int i = 0; i < data.Length; i++)
for (int j = 0; j < data[i].Length; j++)
data[i][j] -= centroid[j];
return data;
}Last updated