dataminer.me

データマイニングやその周辺のお話を書くブログ

R+Pythonでランダムフォレスト

レコメンデーションエンジンに搭載するために

R+Pythonを使って、ランダムフォレストを実行するスクリプトを書いてみた。

データは以前使用した失業率と円/ドルレートの値。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#rpy2が使える環境であることを確認
import numpy as NP
try:
	import rpy2.robjects as robjects
except:
	print "Rpy2をインストールしてください。"
	print "UBUNTUの場合、apt-get install python-rpy2 でインストールできます。"
	print "easy_install が入っている場合は easy_install rpy2 でインストールできます。"
	print "その他の場合は http://sourceforge.net/projects/rpy/files/rpy2/ からダウンロードして対応ください。"


#RのランダムフォレストパッケージであるrandomForestをダウンロード
try:
	robjects.r["library"]("randomForest")
except:
	print "CRANのミラーサイトを使ってrandomForestパッケージをダウンロードしてください。"
	robjects.r["install.packages"]("randomForest")

#Numpyのarrayをdata.frameに変換する関数
def MyAsDataframe(Dataset):
	DataArray = NP.array(Dataset)
	Dataframe = {}
	for data in NP.transpose(DataArray):
		Dataframe[data[0]] = robjects.FloatVector(data[1:])
	return robjects.r["data.frame"](**Dataframe)
#RandomForest
#デフォルトの値が用いられています。もしも、パラメータをいじくりたい場合は変更が必要です。
def randomForest(formula,RDataframe):
	RFResult =  robjects.r["randomForest"](formula,RDataframe)
	return RFResult

#データのハンドリング
Dataset = []
for dataLine in open("sample.txt"):
	Dataset.append(dataLine.strip().split("\t"))
RDataframe = MyAsDataframe(Dataset)

#RandomForest開始
#数式を作る
formula = robjects.RFormula('YD ~ jobless')
#RandomForestの結果を表示する。
RFResult = randomForest(formula,RDataframe)
print "randomForest-Result"
print RFResult