2016-04-27 11 views
1

私は2000行のデータフレームを持っており、同じデータフレームを2つにスライスして結合しようとしています。H2O python rbindエラー

t1 = test[:10, :] 
t2 = test[20:, :] 
temp = t1.rbind(t2) 
temp.show() 

は、その後、私はこのエラーを得た:

--------------------------------------------------------------------------- 
EnvironmentError       Traceback (most recent call last) 
<ipython-input-37-8daeb3375743> in <module>() 
     2 t2 = test[20:, :] 
     3 temp = t1.rbind(t2) 
----> 4 temp.show() 
     5 print len(temp) 
     6 print len(test) 

/usr/local/lib/python2.7/dist-packages/h2o/frame.pyc in show(self, use_pandas) 
    383  print("This H2OFrame has been removed.") 
    384  return 
--> 385  if not self._ex._cache.is_valid(): self._frame()._ex._cache.fill() 
    386  if H2ODisplay._in_ipy(): 
    387  import IPython.display 

/usr/local/lib/python2.7/dist-packages/h2o/frame.pyc in _frame(self, fill_cache) 
    423 
    424 def _frame(self, fill_cache=False): 
--> 425  self._ex._eager_frame() 
    426  if fill_cache: 
    427  self._ex._cache.fill() 

/usr/local/lib/python2.7/dist-packages/h2o/expr.pyc in _eager_frame(self) 
    67  if not self._cache.is_empty(): return self 
    68  if self._cache._id is not None: return self # Data already computed under ID, but not cached locally 
---> 69  return self._eval_driver(True) 
    70 
    71 def _eager_scalar(self): # returns a scalar (or a list of scalars) 

/usr/local/lib/python2.7/dist-packages/h2o/expr.pyc in _eval_driver(self, top) 
    81 def _eval_driver(self, top): 
    82  exec_str = self._do_it(top) 
---> 83  res = ExprNode.rapids(exec_str) 
    84  if 'scalar' in res: 
    85  if isinstance(res['scalar'], list): self._cache._data = [float(x) for x in res['scalar']] 

/usr/local/lib/python2.7/dist-packages/h2o/expr.pyc in rapids(expr) 
    163  The JSON response (as a python dictionary) of the Rapids execution 
    164  """ 
--> 165  return H2OConnection.post_json("Rapids", ast=expr,session_id=H2OConnection.session_id(), _rest_version=99) 
    166 
    167 class ASTId: 

/usr/local/lib/python2.7/dist-packages/h2o/connection.pyc in post_json(url_suffix, file_upload_info, **kwargs) 
    515  if __H2OCONN__ is None: 
    516  raise ValueError("No h2o connection. Did you run `h2o.init()` ?") 
--> 517  return __H2OCONN__._rest_json(url_suffix, "POST", file_upload_info, **kwargs) 
    518 
    519 def _rest_json(self, url_suffix, method, file_upload_info, **kwargs): 

/usr/local/lib/python2.7/dist-packages/h2o/connection.pyc in _rest_json(self, url_suffix, method, file_upload_info, **kwargs) 
    518 
    519 def _rest_json(self, url_suffix, method, file_upload_info, **kwargs): 
--> 520  raw_txt = self._do_raw_rest(url_suffix, method, file_upload_info, **kwargs) 
    521  return self._process_tables(raw_txt.json()) 
    522 

/usr/local/lib/python2.7/dist-packages/h2o/connection.pyc in _do_raw_rest(self, url_suffix, method, file_upload_info, **kwargs) 
    592  raise EnvironmentError(("h2o-py got an unexpected HTTP status code:\n {} {} (method = {}; url = {}). \n"+ \ 
    593        "detailed error messages: {}") 
--> 594        .format(http_result.status_code,http_result.reason,method,url,detailed_error_msgs)) 
    595 
    596 

EnvironmentError: h2o-py got an unexpected HTTP status code: 
500 Server Error (method = POST; url = http://localhost:54321/99/Rapids). 
detailed error messages: [] 

私は行(LEN(TEMP))をカウントした場合、それを見つけるに動作します。また、スライスインデックスを少し変更すると、それも見付かります。たとえば、これに変更すると、データフレームが表示されます。

t1 = test[:10, :] 
t2 = test[:5, :] 

ここに何かがありますか?ありがとう。

答えて

0

情報がなくても何が起こったのか不明です(ログには理由がないと思われる)。

どのバージョンをお使いですか?私は出血の虹彩であなたのコードを試してみて、それはすべて期待どおりに働いた。ところで

、rbindは一般的に何を意味的に後にしていることサブセットです、特に以来、高価になるだろう:

test[range(10) + range(20,test.nrow),:]

することも、あなたが作る注意点が必要なサブセットを(与える必要がありますPythonの行インデックスの完全なリストをh2oにRESTで渡します)。

+0

こんにちは、お返事いただきありがとうございます。バージョンは3.8.1.4です。あなたが提案したようにうまくいきます。私の最初のアイデアは、k-fold関数を実装することでした。私はこのようなものには新しいので、効率的に行う方法を知っているのだろうかと思います。ありがとう。 – hamuchiwa

+0

独自のk倍関数を実装する必要はありません.H2Oは既に 'nfolds'引数を使って相互検証を行います。このノートブックで例を確認してください:https://github.com/h2oai/h2o-3/blob/master/h2o-py/demos/H2O_tutorial_eeg_eyestate.ipynb –

+0

私はnfolds引数について理解しています。私がしようとしているのは、GLMモデルでlambda_search = Trueとnfolds = 3を同時に設定することです。それは私にそれをさせてくれないようです。ラムダの手動グリッド検索を避けるために、k-fold関数を実装することにしました。それは正しい方法のように聞こえるか?どうもありがとう。 – hamuchiwa

関連する問題