sage/PRML - SageでRのPCAを試す
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2011/07/06からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://sage.math.canterbury.ac.nz/home/pub/109/
また、Sageのサーバを公開しているサイト(http://sage.math....
アップロードし、実行したり、変更していろいろ動きを試すこ...
** 10章 Rとの連携でPCAを解く [#i8fe1197]
はやり主成分分析(PCA)は、Rの得意とする分野で、
[[PRML 12章 主成分分析を試す(棒読み>http://d.hatena.ne.jp...
の実装をSageで表示する方法とRの計算結果をSageに渡す方法に...
*** Rなら主成分分析が1行で書ける [#sb5539ba]
Oil Flowのデータを使って主成分分析をします。r関数を使って...
各行のデータが「一様」、「環状」、「層状」のいずれかを示...
DataTrnLbls.txtを読み込み、「青」、「緑」、「赤」でプロッ...
Rのプロット結果をSageで表示するには、一度ファイルに出力す...
r.pdf, r.dev_offで囲んでプロット処理を記述します。
結果の出力は、html関数でイメージ読み込みします。
sageへの入力:
#pre{{
# Rでデータを読み込みPCAを計算
fileName = DATA + 'DataTrn.txt'
oilflow = r("oilflow <- read.table('%s')" %fileName)
result = r("result <- prcomp(oilflow)")
}}
sageへの入力:
#pre{{
# ラベルの読み込み
fileName = DATA + 'DataTrnLbls.txt'
labels = r("oilflow.labels <- read.table('%s')" %fileName)
# プロットファイル名の設定
filename = DATA+'pca.pdf'
r.pdf(file='"%s"' %filename)
# 結果のプロット
r("col <- colSums(t(oilflow.labels) * c(4,3,2))")
r("pch <- colSums(t(oilflow.labels) * c(3,1,4))")
r("plot(result$x[,1:2], col=col, pch=pch, xlim=c(-3,3), y...
r.dev_off()
# 式を変えたときにはブラウザーで再読込必要
html('<img src="pca.pdf">')
}}
&ref(fig1.png);
** Rの結果をsageに渡す [#d7a29e22]
Rの計算結果をsageに渡してためにsageobj関数または、_save_...
以下の例では、主成分分析の結果のλ1, λ2成分, λ3成分をsage...
この場合の結果は、sageのマトリックスとして返され、rs[0]で...
sageへの入力:
#pre{{
# Rの主成分分析の結果からλ1, λ2成分, λ3成分をsageの変数rs...
rs = sageobj(r("result$x[,1:3]"))
print rs[0]
}}
sageからの出力:
#pre{{
(0.853313762157, 0.409097298967, 0.499457870747)
}}
*** sageの3次元プロットで表示 [#x4535360]
Rで読み込んだlabelsは、辞書形式に変換されます。'DATA'のV1...
セットされます。これをまとめてlbsにセットします。
3次元プロットは、λ1, λ2成分, λ3成分を[x, y, z]にセットし...
sageでは他のライブラリとのインタフェースを用意し、データ...
ることが簡単にできます。
sageへの入力:
#pre{{
#ラベル情報をsageの形式に変換すると'DATA'ディクショナリに...
lb = sageobj(labels); lb
}}
sageからの出力:
#pre{{
{'row_names': [None, -1000], '_r_class': 'data.frame', '_...
'DATA': {'V1': [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,...
以下省略
}}
sageへの入力:
#pre{{
# これをzipでまとめて使う
lbs = zip(lb['DATA']['V1'],lb['DATA']['V2'],lb['DATA']['V...
}}
sageへの入力:
#pre{{
N = len(lbs)
plt = Graphics()
for n in range(N):
[x, y, z] = rs[n]
if lbs[n][0] == 1:
plt += point3d([x, y, z], rgbcolor='blue')
elif lbs[n][1] == 1:
plt += point3d([x, y, z], rgbcolor='green')
else:
plt += point3d([x, y, z], rgbcolor='red')
plt.show()
}}
&ref(fig2.png);
** コメント [#mf349858]
#vote(おもしろかった[5],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- ノートブックで fileName = DATA + 'DataTrn.txt' を実行す...
- ysatoさま、DATA変数にdataディレクトリのパスがセットされ...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2011/07/06からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロー...
http://sage.math.canterbury.ac.nz/home/pub/109/
また、Sageのサーバを公開しているサイト(http://sage.math....
アップロードし、実行したり、変更していろいろ動きを試すこ...
** 10章 Rとの連携でPCAを解く [#i8fe1197]
はやり主成分分析(PCA)は、Rの得意とする分野で、
[[PRML 12章 主成分分析を試す(棒読み>http://d.hatena.ne.jp...
の実装をSageで表示する方法とRの計算結果をSageに渡す方法に...
*** Rなら主成分分析が1行で書ける [#sb5539ba]
Oil Flowのデータを使って主成分分析をします。r関数を使って...
各行のデータが「一様」、「環状」、「層状」のいずれかを示...
DataTrnLbls.txtを読み込み、「青」、「緑」、「赤」でプロッ...
Rのプロット結果をSageで表示するには、一度ファイルに出力す...
r.pdf, r.dev_offで囲んでプロット処理を記述します。
結果の出力は、html関数でイメージ読み込みします。
sageへの入力:
#pre{{
# Rでデータを読み込みPCAを計算
fileName = DATA + 'DataTrn.txt'
oilflow = r("oilflow <- read.table('%s')" %fileName)
result = r("result <- prcomp(oilflow)")
}}
sageへの入力:
#pre{{
# ラベルの読み込み
fileName = DATA + 'DataTrnLbls.txt'
labels = r("oilflow.labels <- read.table('%s')" %fileName)
# プロットファイル名の設定
filename = DATA+'pca.pdf'
r.pdf(file='"%s"' %filename)
# 結果のプロット
r("col <- colSums(t(oilflow.labels) * c(4,3,2))")
r("pch <- colSums(t(oilflow.labels) * c(3,1,4))")
r("plot(result$x[,1:2], col=col, pch=pch, xlim=c(-3,3), y...
r.dev_off()
# 式を変えたときにはブラウザーで再読込必要
html('<img src="pca.pdf">')
}}
&ref(fig1.png);
** Rの結果をsageに渡す [#d7a29e22]
Rの計算結果をsageに渡してためにsageobj関数または、_save_...
以下の例では、主成分分析の結果のλ1, λ2成分, λ3成分をsage...
この場合の結果は、sageのマトリックスとして返され、rs[0]で...
sageへの入力:
#pre{{
# Rの主成分分析の結果からλ1, λ2成分, λ3成分をsageの変数rs...
rs = sageobj(r("result$x[,1:3]"))
print rs[0]
}}
sageからの出力:
#pre{{
(0.853313762157, 0.409097298967, 0.499457870747)
}}
*** sageの3次元プロットで表示 [#x4535360]
Rで読み込んだlabelsは、辞書形式に変換されます。'DATA'のV1...
セットされます。これをまとめてlbsにセットします。
3次元プロットは、λ1, λ2成分, λ3成分を[x, y, z]にセットし...
sageでは他のライブラリとのインタフェースを用意し、データ...
ることが簡単にできます。
sageへの入力:
#pre{{
#ラベル情報をsageの形式に変換すると'DATA'ディクショナリに...
lb = sageobj(labels); lb
}}
sageからの出力:
#pre{{
{'row_names': [None, -1000], '_r_class': 'data.frame', '_...
'DATA': {'V1': [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,...
以下省略
}}
sageへの入力:
#pre{{
# これをzipでまとめて使う
lbs = zip(lb['DATA']['V1'],lb['DATA']['V2'],lb['DATA']['V...
}}
sageへの入力:
#pre{{
N = len(lbs)
plt = Graphics()
for n in range(N):
[x, y, z] = rs[n]
if lbs[n][0] == 1:
plt += point3d([x, y, z], rgbcolor='blue')
elif lbs[n][1] == 1:
plt += point3d([x, y, z], rgbcolor='green')
else:
plt += point3d([x, y, z], rgbcolor='red')
plt.show()
}}
&ref(fig2.png);
** コメント [#mf349858]
#vote(おもしろかった[5],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- ノートブックで fileName = DATA + 'DataTrn.txt' を実行す...
- ysatoさま、DATA変数にdataディレクトリのパスがセットされ...
#comment_kcaptcha
ページ名:
SmartDoc