如何解决h2o数字列转换为枚举 使用虹膜数据集中的缺失值创建数字列sepal_len 检查数据类型与实木复合地板以熊猫制成中的定义保持不变将pandas数据框更改为str列并另存为新的镶木文件:
我有实木复合地板文件,其中包含数字列和分类列。
我想创建一个GBM模型,以后可以在Java程序中实现它的mojo进行推理。 问题在于,直到现在,我仍将数据中的null归为0(对于数字)和“ EMPTY”(对于分类列)。
当我在h2o中执行此操作时,我可以使用col_types参数在h2o import_file中强制执行我的方案。
当我不使用归因时,让h2o自己归因-它将我的数字列转换为枚举类型。
如果我尝试在不加归因的情况下在导入时强制执行类型,则对于所有数字功能都会收到以下错误:
error = 'Unsupported type override (String -> Numeric). Column XXX will be parsed as String'
因此连续特征将无法得到正确的处理...为什么将其转换为枚举? 我如何避免这种转换?
解决方法
H2O应该识别镶木地板文件的数据类型,并事先进行设置。保存实木复合地板文件时,您可能将数字列设置为字符串/分类。您有什么实木复合地板文件将列数据类型另存为?
我在H2O 3.30.0.1上验证,实木复合地板文件将其定义为何种数据类型将被识别。见下文。
使用虹膜数据集中的缺失值创建数字列(sepal_len
#Read a dataset
iris = h2o.import_file("http://h2o-public-test-data.s3.amazonaws.com/smalldata/iris/iris_wheader.csv")
#Convert one value to None
iris[0,0] = None
#Make it as pandas df and save as parquet as
df = iris.as_data_frame()
df.to_parquet('iris.parquet')
df.dtypes
返回:
sepal_len float64
sepal_wid float64
petal_len float64
petal_wid float64
class object
dtype: object
^列是浮点数
#Read in h2o
iris2 = h2o.import_file('iris.parquet')
iris2.head(2)
返回:
sepal_len sepal_wid petal_len petal_wid class
nan 3.5 1.4 0.2 Iris-setosa
4.9 3 1.4 0.2. Iris-setosa
检查数据类型与实木复合地板(以熊猫制成)中的定义保持不变
iris2.types
返回:
{'sepal_len': 'real','sepal_wid': 'real','petal_len': 'real','petal_wid': 'real','class': 'enum'}
^ H2O帧数据类型是真实的(不是枚举)
将pandas数据框更改为str
列并另存为新的镶木文件:
#Save the parquet as a string column
df.astype({'sepal_len':'str'}).to_parquet('irisB.parquet')
#Read file again
irisB = h2o.import_file('irisB.parquet')
irisB.types
返回:
{'sepal_len': 'enum','class': 'enum'}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。