当前位置: 首页 > 知识库问答 >
问题:

如果整数仅为0,我们必须将其转换为因子吗?

吴弘壮
2023-03-14

我在一个数据帧中有许多列是标志“0”和“1”。当我导入数据帧时,它们属于类“整数”。

在所有列中,0表示不存在,1表示存在。

我需要将他们转换为fator吗?[因素将使水平1

我计划稍后使用xgboost构建一个预测模型。Xgboost只对数值列起作用,因此如果我将列转换为因子,则需要对它们进行热编码以将其转换为数值。

(附带问题:如果我们进行一次热编码以消除共线性,是否总是需要删除一列?)

共有2个答案

魏学智
2023-03-14

错误状态为xgb。DMatrix接受数值,其中数据为整数。

将数据转换为数字使用

train[] <- lapply(train, as.numeric)

然后使用

xgb.DMatrix(data=data.matrix(train))
万浩淼
2023-03-14

简短的回答:视情况而定。是的,只是为了更好的变量解释。否为0/1变量整数和因数都相同。

如果你问我个人的意见,那么我更倾向于是;因为你也更有可能有一些分类变量,它们要么有字符串值,要么有2个以上的级别,要么有2个整数级别,而不是0和1。在所有上述情况下,0/1变量整数和因数都不相同。只有0/1二进制级别的特定情况;整数变量和因子是相同的。因此,您可能希望在编码中保持一致性,甚至希望在0/1的情况下也采用这种方法。

看到你自己:

a <- c(1,2,1,2,1,2,5)
c<-as.character(a)
b<-as.factor(c)
d<-as.integer(b)

这里我只是在玩一个向量,它最终给我:

> d
[1] 1 2 1 2 1 2 3

因此,如果您不想调试值在将来发生变化的原因,请使用as。因子()从开始。

侧面回答:是的。搜索model.matrix()contrasts.arg,以便在R中完成此操作。

 类似资料:
  • 问题内容: 我们可以将字符转换为等效于ASCII值的整数,但是我们可以做相反的事情,即将给定的ASCII值转换为其等效的字符吗? 显示可能丢失的精度错误… 问题答案: 转换为:

  • 我正在尝试使用阿帕奇火花读取表。 以下是我的实现: 所以在火花壳里 我们在“订单”变量中得到结果。 如何将此结果转换为拼花文件或格式? 更新:我找到这段访问和转换dynamodb数据的代码https://github . com/onzocom/spark-dynamo db/blob/master/src/main/Scala/com/onzo/spark/dynamo db/dynamo db

  • 问题内容: 我需要使用反射获取字段的值。碰巧我并不总是确定该字段的数据类型是什么。为此,为了避免某些代码重复,我创建了以下方法: 并使用如下方法: 要么 问题是我似乎无法转换为: 有没有更好的方法来实现这一目标? 我正在使用Java 1.6。 问题答案: 不,即使可以从转换为,也无法转换为。对于已知为数字的 单个 值,并且想要获得长整型值,可以使用: 对于数组,这将比较棘手…

  • 问题内容: 我有Hibernate方法,它返回给我一个BigDecimal。我有另一个API方法,我需要将该数字传递给它,但是它接受Integer作为参数。我不能更改两种方法的返回类型或变量类型。 现在如何将BigDecimal转换为Integer并将其传递给第二种方法? 有没有解决的办法? 问题答案: 您将致电(或仅致电),如果您丢失了信息,它甚至会引发异常。返回一个int,但是自动装箱可以解决

  • 我知道PKCS#7=证书+可选原始数据+PKCS#1格式的签名

  • 问题内容: 我有一个将Android数据保存在其中的函数,但必须将数据转换为。 只要是我想保存为 以下是我的代码,只要值是 将上述转化为。 这是我决定要执行的操作,但是仍然无法将字符串值转换为每当它的。 然后功能 我应该如何对其进行更改以使其起作用? 问题答案: 不用编写自己的函数,而是使用try-catch的内部构造。您的问题是,or 或值本身是a,并且您在null引用上调用方法。请尝试以下操作