![](/img/trans.png)
[英]Is there efficient way to convert Pandas DataFrame to H2O Frame?
[英]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數量很多,因此應首先處理此問題。 有兩種方法可以做到這一點。
將NAN
替換為一個明顯超出范圍的值。 防爆。 如果某個要素在0-1之間變化,請將所有NAN
替換為該要素的-1。
使用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.