質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

2003閲覧

PypeRの使い方について

gopan

総合スコア19

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2016/11/23 02:13

###前提・実現したいこと
自分は「人工知能に関する断創録」というサイトの「類似楽曲検索システムを作ろう」というページにて類似楽曲検索システムの再現を試みています。
今、EMDを計算する段階で、このページではPythonでRを呼び出すために「RPy2」を使っているのですが調べた結果、Windowsでは「RPy2」がうまく動作しないため「PypeR」を使った方が良いという情報を得ました。
そこで質問なのですが、下記の「RPy2」を使って書かれているプログラムを「PypeR」に直す場合、どのようにすれば良いのでしょうか?
Pythonに関しては、このサイトを見て勉強している途中で初心者も同然なのでご質問させていただきました。
どうかよろしくお願い致します。

###該当のソースコード

Python

1import rpy2.robjects as robjects 2 3# Rで輸送問題を解くライブラリ 4# Rのデフォルトパッケージではないのでインストールが必要 5# Rでinstall.packages("lpSolve") 6robjects.r['library']('lpSolve') 7transport = robjects.r['lp.transport'] 8 9def calcEMD(sigFile1, sigFile2): 10 # シグネチャをロード 11 sig1 = loadSignature(sigFile1) 12 sig2 = loadSignature(sigFile2) 13 14 # 距離行列を計算 15 numFeatures = sig1.shape[0] # クラスタの数 16 dist = np.zeros(numFeatures * numFeatures) # 距離行列(フラット形式) 17 18 for i in range(numFeatures): 19 mu1 = sig1[i, 1:21].reshape(20, 1) # 縦ベクトル 20 S1 = sig1[i, 21:421].reshape(20, 20) 21 for j in range(numFeatures): 22 mu2 = sig2[j, 1:21].reshape(20, 1) 23 S2 = sig2[j, 21:421].reshape(20, 20) 24 # 特徴量iと特徴量j間のKLダイバージェンスを計算 25 dist[i * numFeatures + j] = symKLDiv(mu1, S1, mu2, S2) 26 27 # シグネチャの重み(0列目)を取得 28 w1 = sig1[:,0] 29 w2 = sig2[:,0] 30 31 # 重みと距離行列からEMDを計算 32 # transport()の引数を用意 33 costs = robjects.r['matrix'](robjects.FloatVector(dist), 34 nrow=len(w1), ncol=len(w2), 35 byrow=True) 36 row_signs = ["<"] * len(w1) 37 row_rhs = robjects.FloatVector(w1) 38 col_signs = [">"] * len(w2) 39 col_rhs = robjects.FloatVector(w2) 40 41 t = transport(costs, "min", row_signs, row_rhs, col_signs, col_rhs) 42 flow = t.rx2('solution') 43 44 dist = dist.reshape(len(w1), len(w2)) 45 flow = np.array(flow) 46 work = np.sum(flow * dist) 47 emd = work / np.sum(flow) 48 return emd

###補足情報(言語/FW/ツール等のバージョンなど)
OS : Windows10
Python2.7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問