You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中如何将nnet模型的概率输出转换为类别预测?

解决方法:将nnet概率输出转换为类别因子

完全可行,神经网络输出的概率矩阵正是推导类别预测的依据,nnet包本身支持直接输出类别,也可以手动转换,具体两种方法如下:

方法1:直接用predict函数输出类别

nnet的predict()函数支持type="class"参数,当你的响应变量(这里是Morphology)是因子类型时,指定该参数会直接返回预测的类别因子,和随机森林、逻辑回归的输出一致:

# 训练模型(确保Morphology是因子)
morph_scaled_train$Morphology <- factor(morph_scaled_train$Morphology)
nnet_model <- nnet(Morphology~. ,size=10,data=morph_scaled_train, maxit=1500)

# 直接生成类别预测
nnet_prediction_class <- predict(nnet_model, morph_test, type = "class")

方法2:手动从概率矩阵转换

如果已经得到概率矩阵,也可以通过每行最大概率对应的列名生成类别,再转为因子:

# 从概率矩阵获取类别
pred_classes <- colnames(nnet_prediction_prob)[apply(nnet_prediction_prob, 1, which.max)]
# 转换为因子(保持类别顺序和原概率矩阵一致)
pred_classes <- factor(pred_classes, levels = colnames(nnet_prediction_prob))

注意事项

  • 确保训练数据中的Morphology是因子类型,这样nnet会识别为分类任务,type="class"参数才能正常工作。如果之前是字符型,先转成因子再训练模型。

内容的提问来源于stack exchange,提问作者MM1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:05:09