簡體   English   中英

將pandas數據幀有效轉換為h2o幀

[英]conversion of pandas dataframe to h2o frame efficiently

我有一個Pandas數據幀,它具有Encoding: latin-1並且由以下分隔; 數據幀非常大,幾乎是size: 350000 x 3800 我最初想使用sklearn,但我的數據幀缺少值( NAN values ),所以我不能使用sklearn的隨機森林或GBM。 所以我不得不使用H2O's分布式隨機森林來訓練數據集。 主要問題是當我執行h2o.H2OFrame(data)時,數據幀沒有被有效轉換。 我檢查了提供編碼選項的可能性,但文檔中沒有任何內容。

有人對此有所了解嗎? 任何線索都可以幫助我。 我還想知道是否有其他像H2O這樣的庫可以非常有效地處理NAN值? 我知道我們可以歸因於列,但我不應該在我的數據集中這樣做,因為我的列是來自不同傳感器的值,如果值不存在則意味着傳感器不存在。 我只能使用Python

import h2o
import pandas as pd

df = pd.DataFrame({'col1': [1,1,2], 'col2': ['César Chávez Day', 'César Chávez Day', 'César Chávez Day']})
hf = h2o.H2OFrame(df)

由於您遇到的問題是由於數據集中的NAN數量很多,因此應首先處理此問題。 有兩種方法可以做到這一點。

  1. NAN替換為一個明顯超出范圍的值。 防爆。 如果某個要素在0-1之間變化,請將所有NAN替換為該要素的-1。

  2. 使用Imputer類來處理NAN值。 這將用該特征的均值,中值或模式替換NAN

如果您的數據中存在大量缺失值並且您希望提高轉換效率,我建議明確指定列類型和NA字符串,而不是讓H2O解釋它。 您可以將要解釋為NA的字符串列表和指定列類型的字典傳遞給H2OFrame()方法。

它還允許您為不存在的傳感器創建自定義標簽,而不是具有通用的“不可用”(在pandas中使用自定義字符串計算NaN值)。

import h2o    

col_dtypes = {'col1_name':col1_type, 'col2_name':col2_type}
na_list = ['NA', 'none', 'nan', 'etc']

hf = h2o.H2OFrame(df, column_types=col_dtypes, na_strings=na_list)

有關更多信息 - http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/_modules/h2o/frame.html#H2OFrame

編輯:@ErinLeDell建議直接使用h2o.import_file()指定列dtypes和NA字符串將為您提供最大的加速。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM