我有 Kaggle 实践竞赛中的房屋数据,我正在使用 rpart 训练一个简单的第一个模型来预测销售价格。
该模型无法正确识别销售状况异常或预付款的销售。因此,我想增加这个在模型中显然被忽视的变量的重要性。
我假设这是通过使用“权重”参数来完成的,但如何使用该参数?如何确定我想要哪些变量具有更高的权重?
如果我有一个像
x = c(1, 2, -1, -2, 5, 6, 7, -1, -2, -3, 8, 9)
Run Code Online (Sandbox Code Playgroud)
我希望对于每个负值,向前看并计算前方有多少个负值,包括当前值。所以结果看起来像
y = c(0, 0, 2, 1, 0, 0, 0, 3, 2, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)
我的最终目标是使用这些结果根据最接近的正值的平均值创建负值的替换值。在这种情况下,我希望结果是:
result = {1,2,(2+5)/2,(2+5)/2,5,6,7,(7+8)/2,(7+8)/2,(7+8)/2,8,9}
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用mutate
和lead
使用不同的偏移量来执行此操作,但是必须有更简单的方法吗?
这是我的数据:
ID a b c d
1 x 1 2 3
2 y 1 2 3
3 z NA NA NA
4 z 1 2 3
5 y NA NA NA
Run Code Online (Sandbox Code Playgroud)
现在,如果我想用 a 组的 b 平均值替换单列中的 NA(例如 b),我知道如何使用以下代码来实现:
data %>%
group_by(a) %>%
mutate(b = ifelse(is.na(b), as.integer(mean(b, na.rm=TRUE)), b)
Run Code Online (Sandbox Code Playgroud)
我想使用基本相同的代码,但将其应用于 b、c、d 列。但我的代码不起作用,我不知道为什么,它说“错误,大小不兼容 (3),期望 10(组大小)或 1”
cols <- c("b","c","d")
data %>%
group_by(a) %>%
mutate_at(.cols = cols, funs(ifelse(is.na(cols),
as.integer(mean(cols, na.rm=TRUE)), cols)
Run Code Online (Sandbox Code Playgroud)
我假设问题与查看数据时未正确应用列名称的代码有关?
我不知道为什么我收到这个错误!我的数据training
是稀疏矩阵.
dim(training)
> 14407 161
dim(label.train)
> 14407 1
xgb.train <- xgb.DMatrix(data = training, label = label.train)
> Error in setinfo.xgb.DMatrix(dmat, names(p), p[[1]]) :
The length of labels must equal to the number of rows in the input data
Run Code Online (Sandbox Code Playgroud)
我检查了我的数据并且:
label.train
是一个data.frametraining
没有所有零行或列training
都是数字PS.我的数据非常庞大,因此我无法发布可重现的代码,只需要提供可能出现此错误的人可能出错的提示.
我以为我了解 map() 的工作原理,但显然我不明白。我有一个与工作目录中的真实文件相对应的文件名向量:
\nfile_names <- c("filename1", "filename2", "filename3")\n
Run Code Online (Sandbox Code Playgroud)\n这有效:
\nlibrary(tidyverse)\n\ndata <- data_frame(filename = file_names) %>%\n mutate(content = map(file_names, read_tsv))\n
Run Code Online (Sandbox Code Playgroud)\n但是当我想使用推荐的格式向 read_tsv 添加参数时map(\\\\(x) f(x, arg1, arg2))
data <- data_frame(filename = file_names) %>%\n mutate(content = map(\\(file_names) read_tsv(file_names, skip = 1, col_names = FALSE)))\n
Run Code Online (Sandbox Code Playgroud)\n我收到错误:
\n\n\n错误
\nmutate()
:\n\xe2\x84\xb9 参数:content = map(function(file_names) read_tsv(file_names, skip = 1, col_names = FALSE))
。\n由以下错误引起map()
:\n!.x
必须是向量,而不是函数。
我尝试将 file_names 更改为 .x 等,但我不知道它是如何工作的。任何帮助表示赞赏。
\n