在使用diag(prop.table())功能时,’sum’对因子没有意义

我在尝试计算KNN算法运行后生成的混淆矩阵中的误分类次数的平均值。当我执行“prop.table(t,1)”时,结果如下:

kdd_train <- dataset_normalized[1:140000,]kdd_test <- dataset_normalized[140001:145586,]kdd_train_target <- dataset_extracted[1:140000,12]kdd_test_target <- dataset_extracted[140001:145586,12]prop.table(t,1)               m1kdd_test_target       FALSE        TRUE          FALSE 0.997044917 0.002955083          TRUE  0.048592189 0.951407811

然而,当我执行命令“error_per_class = diag(prop.table(m1))”时,返回了一个错误

> error_per_class = diag(prop.table(m1))Error in Summary.factor(c(1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L,  :   ‘sum’ not meaningful for factors

有什么办法可以解决这个问题吗?感谢任何帮助!


回答:

错误信息中提到了原因,变量是因子类型。直接对因子类型应用prop.table是不可能的,因为它需要进行一些计算。

prop.table(m1)

Error in Summary.factor(c(2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, : ‘sum’ not meaningful for factors

根据显示的值来看,它应该是一个逻辑向量,所以将其转换为逻辑类型应该可以解决问题

as.logical(m1)prop.table(as.logical(m1))#[1] 0.09090909 0.09090909 0.00000000 0.00000000 0.00000000 0.00000000 0.09090909 0.00000000 0.00000000 0.09090909 0.00000000 0.09090909 0.00000000 0.00000000#[15] 0.09090909 0.00000000 0.09090909 0.09090909 0.00000000 0.09090909 0.09090909 0.00000000 0.00000000 0.09090909

数据

set.seed(24)m1 <- factor(sample(c(TRUE, FALSE), 24, replace=TRUE))kdd_test_target  <- factor(sample(c(TRUE, FALSE), 24, replace=TRUE))

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注