PythonからRを利用する方法

PythonからRを利用する方法

Rは統計解析を目的とした言語であり、
様々な統計解析や機械学習などのライブラリーが提供されています。

一方、Pythonはシステム開発のライブラリーが豊富に提供されており、
Rよりも簡単にシステム開発が行えます。
Pythonでも統計解析や機械学習のライブラリーは提供されていますが、
プログラムはPythonで書き、
PythonからRの統計解析や機械学習のライブラリーを利用したいという場合があります。
こんなときにPythonからRを利用する方法を知っていると便利です。

PypeRというライブラリーを使うと、
PythonからRを利用することが可能となります。

PypeRのインストールは簡単で、以下のコマンドを実行するだけです。

pip install pyper

では、実際にPypeRを使ってPythonからRを利用してみます。
例として、フィッシャーのあやめのデータセット(※1)を用いて、
あやめの品種を予測する決定木をRで作成して、
作成した決定木によりあやめの品種の予測値を出してみます。

import pyper
import pandas as pd

#Pythonでフィッシャーのあやめのデータセットを読み込む
iris = pd.read_csv(“iris.csv”)

#Rのインスタンスを作る
r = pyper.R(use_pandas=’True’)

#PythonのオブジェクトをRに渡す
r.assign(“iris”,iris)

#Rで決定木を作成し、あやめの品種の予測値を出す
 r(“library(rpart);result <- rpart(Species~.,data=iris);predict <- predict(result,type=’class’)

これでPythonで読んだiris.csvのデータセットがRに渡り、決定木を作成し、あやめの品種の予測値が出ます。
pandasのデータフレームを直接渡せるので便利です。

PythonでRで出したあやめの品種の予測値を取り出すには次のようにします。

predict = r.get(“predict”)

print predict
[‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’
 ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’
 ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’
 ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’
 ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’
 ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’ ‘setosa’
 ‘setosa’ ‘setosa’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘virginica’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’ ‘versicolor’
 ‘versicolor’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’
 ‘virginica’ ‘versicolor’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’
 ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’
 ‘virginica’ ‘virginica’ ‘versicolor’ ‘virginica’ ‘virginica’ ‘virginica’
 ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’
 ‘versicolor’ ‘virginica’ ‘virginica’ ‘virginica’ ‘versicolor’ ‘versicolor’
 ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’
 ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’ ‘virginica’
 ‘virginica’ ‘virginica’ ‘virginica’]

これでpredictに配列オブジェクトとして予測値が格納されます。

以上、Pythonから簡単にRを呼び出す事が分かって頂けたかと思います。
RとPythonを別々に実行せずにPythonを中心とした開発が可能になります。

※1 フィッシャーのあやめのデータセットは、
Rに組み込まれているirisデータセットを利用します。
Rで以下のコマンドでirisデータセットをcsvファイルに保存ができます。

data(iris)
write.csv(iris,”iris.csv”,row.names=F)