2017-08-21 9 views
1

自分のコンピュータにrpy2を設定しようとしています。rpy2があまりにも多くのRAMを使用する理由

マイ設定:

  • のWindows 10、16Go RAM
  • アナコンダます:python 3.6
  • と4.4.0独立したRバージョン:3.4.1

Pythonパッケージ:

  • rpy2:2.8.6
  • 頭の
  • パンダ:私は大きくはありません、私のデータセットをインポートしたことを今

    import pandas as pd 
    original_data = pd.read_csv(
        "http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data", 
        names=[ 
         "Age", "Workclass", "fnlwgt", "Education", "Education-Num", "Martial Status", 
         "Occupation", "Relationship", "Race", "Sex", "Capital Gain", "Capital Loss", 
         "Hours per week", "Country", "Target"], 
         sep=r'\s*,\s*', 
         engine='python', 
         na_values="?") 
    original_data.head() 
    
    import sys 
    sys.getsizeof(original_data) 
    >> 34605590 
    

    :0.20.3私は最初のものは、私のデータセット(UCIレポから大人)をロードすることです

rpy2 documentation

from rpy2.robjects import r, pandas2ri 
pandas2ri.activate() 

制御Rメモリ制限(ミズーリの結果)

に示すよう... 今はRインターフェースを開始します
import rpy2.robjects as robjects 
r('memory.limit()') 
>> array([ 2047.]) 

は生中継、私は安全でなければならない...私はfailling前に、私のRAMの使用量は、(:O 5Goから16Goに)爆発していることに注意してくださいR.

r_dataframe = pandas2ri.py2ri(original_data) 

--------------------------------------------------------------------------- 
RRuntimeError        Traceback (most recent call last) 
<ipython-input-17-5921ca574db2> in <module>() 
----> 1 r_dataframe = pandas2ri.py2ri(original_data) 

C:\Users\touleem\AppData\Local\Continuum\Anaconda3\lib\functools.py in wrapper(*args, **kw) 
    801 
    802  def wrapper(*args, **kw): 
--> 803   return dispatch(args[0].__class__)(*args, **kw) 
    804 
    805  registry[object] = func 

C:\Users\touleem\AppData\Local\Continuum\Anaconda3\lib\site-packages\rpy2\robjects\pandas2ri.py in py2ri_pandasdataframe(obj) 
    58    od[name] = StrVector(values) 
    59 
---> 60  return DataFrame(od) 
    61 
    62 @py2ri.register(PandasIndex) 

C:\Users\touleem\AppData\Local\Continuum\Anaconda3\lib\site-packages\rpy2\robjects\vectors.py in __init__(self, obj) 
    956         " of type VECSXP") 
    957 
--> 958    df = baseenv_ri.get("data.frame").rcall(tuple(kv), globalenv_ri) 
    959    super(DataFrame, self).__init__(df) 
    960 

RRuntimeError: Error: cannot allocate vector of size 254 Kb 

に設定私のデータを渡すためにしてみてください。

なぜそれほど多くのRAMが必要ですか?あなたの助けのための

おかげ

答えて

0

は、なぜそれがそんなにRAMを取るのでしょうか?

残念ながら、私はアリのアイデアはありません。 rpy2は、Windowsでは実際にはサポートされていません(ネイティブを意味し、Dockerコンテナで正常に動作します)。

(あなたが報告されているものよりも仕方少ないメモリ使用量を意味する)、ここで正常に動作している次

url = "http://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data" 
from rpy2.robjects.packages import importr 
utils = importr('utils') 
dataf = utils.read_csv(url) 
関連する問題