我正在使用h2o自动编码器异常来查找模型中的异常数据,但问题是自动编码器仅接受数字预测变量。 我的要求是我已经根据CardNumber或商家编号找到了异常值。 并且Cardnumber是12位数字(342178901244),并且大多数情况下都是唯一的,因此其名义数据以及我们无法进行热编码,因为它会创建许多与唯一的card no.s一样多的新字段。 因此,请提出任何可以包括分类数据的方式,并且仍然可以运行自动编码器
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')
答案 0 :(得分:0)
您不能在预测变量(自动编码器或其他任何事物)中放置几乎唯一的分类功能,而不能期望它起作用。
相反,您需要从中提取有意义的功能,具体取决于您要解决的问题。例如,如果它是信用卡号,则可以添加对卡电路进行编码的功能(VISA,万事达卡,美国运通卡...)。
限制仅仅是您对域的想象力和知识。