Keras to_categorical()转换字符串标签报错的解决求助
解决方案
报错原因很明确:to_categorical()只接受整数类型的类别标签,但你的目标特征是字符串('DDoS'、'Benign'),无法直接转换为整数,因此触发错误。
下面是两种可行的修复方法:
方法一:通过因子转换为整数标签
先将字符串标签转为因子,再转换为整数(减1是为了让类别从0开始,适配keras的独热编码逻辑):
# 转换训练集目标标签 trainingtarget_int <- as.integer(as.factor(trainingtarget)) - 1 # 转换测试集目标标签 testingtarget_int <- as.integer(as.factor(testingtarget)) - 1 # 生成独热编码 trainLabels <- to_categorical(trainingtarget_int) testLabels <- to_categorical(testingtarget_int)
方法二:手动映射字符串到整数
如果想更直观控制类别对应的编码值,可以直接用条件判断手动转换:
# 自定义映射:Benign对应0,DDoS对应1 trainingtarget_int <- ifelse(trainingtarget == 'Benign', 0, 1) testingtarget_int <- ifelse(testingtarget == 'Benign', 0, 1) # 生成独热编码 trainLabels <- to_categorical(trainingtarget_int)
额外注意点
- 可以用
class(Train2[,5])确认目标特征的类型,确保是字符或因子类型(如果是因子可以直接转整数再减1)。 - 后续模型训练时,输入的特征矩阵
training和testing要确保是数值类型,你当前用as.matrix()转换的操作是没问题的。
内容的提问来源于stack exchange,提问作者Frenzy
相关产品推荐
相关产品推荐

