【发布时间】:2018-05-09 03:07:41
【问题描述】:
所有特征都是浮点数据类型,而有些特征的 NaN 占主导地位。我尝试通过GradientBoostingClassifier 训练模型,如下所示。
train_x, test_x, train_y, test_y = train_test_split(features[feature_headers], features[target_header], test_size=0.33, random_state=int(time.time()))
clf = GradientBoostingClassifier(random_state=int(time.time()), learning_rate=0.1, max_leaf_nodes=None, min_samples_leaf=1, n_estimators=300, min_samples_split=2, max_features=None)
clf.fit(train_x, train_y)
但是会报错:
ValueError:输入包含 NaN、无穷大或对于 dtype('float32') 来说太大的值。
我不能使用一些 Imputation 方法来用均值、中值或 most_frequent 填充 NaN,因为从数据的角度来看它没有任何意义。有没有更好的方法让分类器识别 NaN 并将其也视为指示性特征?非常感谢。
【问题讨论】:
-
为什么不能用零替换 NaN?鉴于大多数情况下人们会估算缺失的 NaN 值,您的答案非常具体。
-
所有列都是浮点格式,它们的范围可能是[negative_value,positive_value],所以这意味着实际值可能是0,所以如果我用0填充NaN,会不会是个问题?谢谢! @jonnybazookatone
-
正如@Harry_pb 所说,应该没问题,特别是对于 GBC。
标签: python machine-learning scikit-learn classification