私はグラフをWindowsアプリケーションでC#でプロットしています。 私はこれまでに Least Squares Fitting--Perpendicular Offsets を使用しています。しかし、私のデータソースは、垂直線から(ほぼ)水平線まで変化します。プリンシパルコンポーネント分析を使用して最適なラインを見つけるには?
次に、私はPCAとAccord.netライブラリについて読んでいます。私はいくつかのコードを書いてきましたが、正確に何をするのか分かりません。
私はグラフのDataPointsのリストを持っています。ベストフィットラインをプロットするには、それらを活用する方法を固有ベクトルを取得した後
DataTable dt = new DataTable();
dt.Columns.Add("X", typeof(double));
dt.Columns.Add("Y", typeof(double));
foreach (DataPoint dp in listOfPoints)
{
DataRow dr = dt.NewRow();
dr["X"] = dp.XValue;
dr["Y"] = dp.YValues[0];
dt.Rows.Add(dr);
}
string[] columnNames;
double[,] sourceMatrix = dt.ToMatrix(out columnNames);
DescriptiveAnalysis sda = new DescriptiveAnalysis(sourceMatrix, columnNames);
sda.Compute();
AnalysisMethod method = AnalysisMethod.Center;
PrincipalComponentAnalysis pca = new PrincipalComponentAnalysis(sda.Source, method);
pca.Compute();
double[] mean = sourceMatrix.Mean();
double[,] eigenVectors = pca.ComponentMatrix;
。
ありがとう@Matt、accord.netとc#の文脈で私を説明してください。これはより数学的です。 – KSK
私は正確に何をするのかわからない。 – KSK
ああ、あなたは正確に何をするのか尋ねなかった:)申し訳ありませんが、私はaccord.netに精通していないので、私は答えることができます。 Accord.StatisticsのPCAクラスを使用すると非常に簡単になるでしょう。 –