0

我正在使用 h2o 自动编码器异常来查找模型中的异常数据,但问题是自动编码器仅接受数字预测器。我的要求是我已经根据 CardNumber 或商户号码找到异常值。卡号是 12 位数字(342178901244),大部分是唯一的,所以它的标称数据,我们不能做热编码,它会创建许多新的字段,与唯一的卡号一样多。所以请提出任何我们可以包含分类数据的方法,我们仍然可以运行自动编码器

model=H2OAutoEncoderEstimator(activation="Tanh",
                              hidden=[70],
                              ignore_const_cols=False,
                              epochs=40)

model.train(x=predictors,training_frame=train.hex)

#Get anomalous values
test_rec_error=model.anomaly(test.hex,per_feature=True)
train_rec_error=model.anomaly(train.hex,per_feature=True)
recon_error_df['outlier'] = np.where(recon_error_df['Reconstruction.MSE'] > top_whisker, 'outlier', 'no_outlier')
4

1 回答 1

0

您不能将几乎唯一的分类特征放在预测器(自动编码器或其他任何东西)中并期望它起作用。

相反,您需要从中提取有意义的特征,这取决于您要解决的问题。例如,如果它是信用卡号,您可以添加对卡电路进行编码的特征(VISA、万事达卡、美国运通卡等)。
限制只是您对该领域的想象力和知识。

于 2019-03-15T10:04:41.380 回答