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