Visual C# (C_sharp)の数値計算ライブラリ MathNET Numericsを使う(8) 特異値分解(SVD)、主成分分析(PCA)を計算してみる(ちょうど奥村先生が記事を出されてたので)
今日、このTweet見た。
主成分分析とバイプロットの関係がわかりにくいというご質問をいただいたので、特異値分解も含めて三者の関係を解説した記事を書きました(Rを利用。そのうちPython版も書くかも) https://t.co/11Nt23dOmw
— Haruhiko Okumura (@h_okumura) August 28, 2022
こちらのリンクの例題をC#とMath.NET Numericsでやってみよう。
特異値分解は実はめちゃくちゃ簡単で、M.Svd()だけで計算できる。その前にCSV読んで平均引いて、、、というのが実は面倒くさい(もしかしたらもっと簡単になるのかもしれないが、私はC#初心者…)。
結果はこちら。奥村先生がRでやられたのと一致している。
ファイル読み込みも含めたソースはこちら。
using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
using MathNet.Numerics.LinearAlgebra;
namespace SVDtest01
{
class Program
{
static void Main(string[] args)
{
EncodingProvider provider = System.Text.CodePagesEncodingProvider.Instance;
var encoding = provider.GetEncoding("shift-jis");
StreamReader sr = new StreamReader(@"atest2014chu.csv",encoding);
string[] header = sr.ReadLine().Split(",");
var list = new List();
while (!sr.EndOfStream)
{
list.Add(sr.ReadLine().Split(","));
}
var M = Matrix.Build.Dense(list.Count, list[0].Length - 1);
for (int i = 0; i < list.Count; i++) {
for (int j = 0; j < list[0].Length - 1; j++)
{
M[i, j] = Convert.ToDouble(list[i][j + 1]);
}
}
var ColumnMean = new double[list[0].Length - 1];
for (int j = 0; j < list[0].Length - 1; j++)
{
ColumnMean[j] = 0.0;
for (int i = 0; i < list.Count; i++)
{
ColumnMean[j] += M[i, j];
}
ColumnMean[j] /= Convert.ToDouble(list.Count);
}
for (int i = 0; i < list.Count; i++)
{
for (int j = 0; j < list[0].Length - 1; j++)
{
M[i, j] -= ColumnMean[j];
}
}
var factorSvd = M.Svd();
var u = factorSvd.U;
var v = factorSvd.VT.Transpose();
var w = factorSvd.W;
Console.WriteLine(w.Diagonal() / Math.Sqrt(47 - 1));
Console.WriteLine(v);
Console.WriteLine(u * w);
}
}
}
過去のもの:
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(1) 複素行列を定義して一次方程式や逆行列、行列式などを計算する。
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(4) 多項式フィッティングをして、Array.ConvertAllで一括でフィッティングデータを得る。
« かつやで海老カツと鶏カツの合い盛り定食をいただく。タルタルソースがとても美味しい。 | トップページ | やよい軒で黒酢酢豚定食をいただく。いい感じに酸味が強く美味しかった。 »
「パソコン・インターネット」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- RF Weekly Digest (Gemini 3.1 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ)2026/4/5-4/12(2026.04.12)
- GLM-5.1(Ollamaから利用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらった。5分など長く考えた後、Gemma 4:31bよりさらに出来が良く、思った通りのものができた。(2026.04.09)
「学問・資格」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- 高周波・RFニュース 2026年4月17日 atisの3GPP Rel.20ウェビナー動画公開、MWCバルセロナ2026でのGSMA Device Enablement Summit資料公開、ハリファ大学が無線周波数AI言語モデルRF-GPT発表、レドームの解説など(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- 高周波・RFニュース 2026年4月16日 AmazonがGlobalstarを買収、GSMAが日本のデジタル化をレポート、Mini-Circuitsがケーブルアセンブリを動画で解説、Kymetaが米国海軍研究局と衛星通信で契約、PerasoがドローンIFF向け60GHzモジュール出荷、SEMCOが1500V耐圧MLCC発表(2026.04.16)
- 高周波・RFニュース 2026年4月15日 Microwave Journalはアンプと発振器特集、Signal Integrity Journalは100GHz越えのインターコネクトのAIを使うHFSSモデル化、ローデ・シュワルツが潜水艦通信をUDT2026で発表、Xiaomi Poco X8 Pro分解動画、atisの5Gポリシーレポート(2026.04.15)
「日記・コラム・つぶやき」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- 高周波・RFニュース 2026年4月17日 atisの3GPP Rel.20ウェビナー動画公開、MWCバルセロナ2026でのGSMA Device Enablement Summit資料公開、ハリファ大学が無線周波数AI言語モデルRF-GPT発表、レドームの解説など(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- 高周波・RFニュース 2026年4月16日 AmazonがGlobalstarを買収、GSMAが日本のデジタル化をレポート、Mini-Circuitsがケーブルアセンブリを動画で解説、Kymetaが米国海軍研究局と衛星通信で契約、PerasoがドローンIFF向け60GHzモジュール出荷、SEMCOが1500V耐圧MLCC発表(2026.04.16)
- 高周波・RFニュース 2026年4月15日 Microwave Journalはアンプと発振器特集、Signal Integrity Journalは100GHz越えのインターコネクトのAIを使うHFSSモデル化、ローデ・シュワルツが潜水艦通信をUDT2026で発表、Xiaomi Poco X8 Pro分解動画、atisの5Gポリシーレポート(2026.04.15)
« かつやで海老カツと鶏カツの合い盛り定食をいただく。タルタルソースがとても美味しい。 | トップページ | やよい軒で黒酢酢豚定食をいただく。いい感じに酸味が強く美味しかった。 »




コメント