【发布时间】:2019-11-18 13:49:11
【问题描述】:
我在解析数据时看到文件类型之间的奇怪行为。我正在使用 parquet 和 CSV 格式的小型数据集(200 行,34 列)。
当我解析 CSV 文件时,我可以看到布尔值被正确识别为枚举,如下所示(男性/女性):
print(h2o_frame_csv.types)
{'C1': 'int', 'userId': 'int', 'itemId': 'int', 'rating': 'int', 'timestamp': 'int', 'movieId': 'int', 'movieTitle': 'enum', 'releaseDate': 'time', 'videoReleaseDate': 'int', 'imdbUrl': 'enum', 'unknown': 'int', 'Action': 'int', 'Adventure': 'int', 'Animation': 'int', 'Childrens': 'int', 'Comedy': 'int', 'Crime': 'int', 'Documentary': 'int', 'Drama': 'int', 'Fantasy': 'int', 'FilmNoir': 'int', 'Horror': 'int', 'Musical': 'int', 'Mystery': 'int', 'Romance': 'int', 'SciFi': 'int', 'Thriller': 'int', 'War': 'int', 'Western': 'int', 'age': 'int', 'occupation': 'enum', 'zipCode': 'int', 'male': 'enum', 'female': 'enum'}
但是,当我使用文件的 parquet 版本时,我看到相同的值被视为 int 值
print(h2o_frame_parquet.types)
{'Unnamed: 0': 'int', 'userId': 'int', 'itemId': 'int', 'rating': 'int', 'timestamp': 'int', 'movieId': 'int', 'movieTitle': 'enum', 'releaseDate': 'time', 'videoReleaseDate': 'int', 'imdbUrl': 'enum', 'unknown': 'int', 'Action': 'int', 'Adventure': 'int', 'Animation': 'int', 'Childrens': 'int', 'Comedy': 'int', 'Crime': 'int', 'Documentary': 'int', 'Drama': 'int', 'Fantasy': 'int', 'FilmNoir': 'int', 'Horror': 'int', 'Musical': 'int', 'Mystery': 'int', 'Romance': 'int', 'SciFi': 'int', 'Thriller': 'int', 'War': 'int', 'Western': 'int', 'age': 'int', 'occupation': 'enum', 'zipCode': 'int', 'male': 'int', 'female': 'int', '__index_level_0__': 'int'}
这在尝试训练分类器模型时会成为一个问题。某些指标不可用,因为 h2o 认为这是回归量而不是二项式。见下文
print(f"For {file_type} dataset the metric class is {type(xgb.model_performance(xval=True))}")
For csv dataset the metric class is <class 'h2o.model.metrics_base.H2OBinomialModelMetrics'>
For parquet dataset the metric class is <class 'h2o.model.metrics_base.H2ORegressionModelMetrics'>
解析 parquet 文件时将布尔值视为数字 (int) 的原因是什么?布尔值是否不像 CSV 文件中那样被视为分类枚举?
【问题讨论】: