小编Dr.*_*rox的帖子

glmnet的standardize参数如何处理虚拟变量?

在我的数据集中,我有许多连续和虚拟变量.对于使用glmnet进行分析,我希望连续变量是标准化的,而不是虚拟变量.

我目前通过首先定义仅具有[0,1]值的列的虚拟向量然后scale在所有非虚拟列上使用该命令来手动执行此操作.问题是,这不是很优雅.

但是glmnet有一个内置的standardize论点.默认情况下这会使假人标准化吗?如果是这样,有没有一种优雅的方式来告诉glmnet的standardize论点跳过假人?

r machine-learning dataset glmnet

14
推荐指数
1
解决办法
6761
查看次数

识别序列中的缺失值/执行两个列表之间的不对称差异

使用R,我想有效地识别序列中缺少哪些值.我已经写下了我如何做的下面的例子.肯定有更好的办法.有人可以帮忙吗?

data.list=c(1,2,4,5,7,8,9)

full.list=seq(from = 1, to = 10, by =1)

output <- c()
for(i in 1:length(full.list)){
    holder1 <- as.numeric(any(data.list == i))
    output[i] <- holder1
}

which(output == 0)
Run Code Online (Sandbox Code Playgroud)

r missing-data

7
推荐指数
1
解决办法
3313
查看次数

结合多个神经网络模型

我运行了200次循环,其中我:

  • 将我的数据集随机分成训练和测试集

  • nnet()在训练集上拟合R 命令的神经网络模型

  • 评估测试集的性能

我将每个模型保存到列表中.

现在我想使用组合模型来进行样本外预测.我已经combinerandomForest对象上使用了这个功能.对象有类似的组合命令nnet吗?

我无法上传数据集,但下面是我正在使用的代码.它按原样工作,除了我寻找命令组合模型的最后一行.

    n <- 200
    nnet_preds <- matrix(NA,  ncol = 1,  nrow = n)
    nnet_predstp <- matrix(NA,  ncol = 1,  nrow = n)
    nnet_predstn <- matrix(NA,  ncol = 1,  nrow = n)
    nnet_predsfptp <- matrix(NA,  ncol = 1,  nrow = n)
    nnet_predsfntp <- matrix(NA,  ncol = 1,  nrow = n)
    NN_predictions <- matrix(NA,  ncol = 1,  nrow = 10) 
    outcome_2010_NN <- testframe2[, "ytest"] 
    nn_model <- …
Run Code Online (Sandbox Code Playgroud)

r machine-learning neural-network

5
推荐指数
1
解决办法
1563
查看次数

匹配并替换data.table中的许多值

我有一个包含许多错误名称的数据集.我创建了一个两列.csv,其中包含一列中的旧(不正确)名称以及第二列中相应的新(正确)名称.现在我需要告诉R用正确的名称替换数据中的每个旧名称.

testData = data.table(oldName = c("Nu York", "Was DC", "Buston",  "Nu York"))
replacements = data.table(oldName = c("Buston", "Nu York", "Was DC"), 
    newName = c("Boston", "New York", "Washington DC"))

    # The next line fails.
holder = replace(testData, testData[, oldName]==replacements[, oldName], 
    replacements[, newName]
Run Code Online (Sandbox Code Playgroud)

replace r data.table

5
推荐指数
2
解决办法
1599
查看次数

ggplot2 box-whisker plot:显示95%置信区间并删除异常值

我想要一个看起来就像下面那个的盒子图.但是,我想提出(1)95%的置信区间(2)没有异常值,而不是默认.

95%的置信区间可能意味着(i)扩展盒子并去除胡须,或(ii)只有一个平均值和胡须,并移除盒子.或者,如果人们有其他想法在这样的情节中呈现95%的置信区间,我愿意接受建议.最终目标是在同一图上显示多个类别的数据的均值和间隔.

set.seed(1234)
df <- data.frame(cond = factor( rep(c("A","B"), each=200) ), 
                   rating = c(rnorm(200),rnorm(200, mean=.8))
ggplot(df, aes(x=cond, y=rating, fill=cond)) + geom_boxplot() + 
    guides(fill=FALSE) + coord_flip()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

图片和代码来源:http://www.cookbook-r.com/Graphs/Plotting_distributions_ (ggplot2)/

plot r ggplot2

4
推荐指数
2
解决办法
9453
查看次数

在glmnet中绘制ROC曲线

编辑:正如Dwin在评论中指出的那样,下面的代码不适用于ROC曲线.ROC曲线必须在变化中编入索引,t而不是在lambda(如下所述)中.我有机会时会编辑下面的代码.

下面是我尝试创建一个预测二元结果的glmnet的ROC曲线.我在下面的代码中模拟了一个近似glmnet结果的矩阵.正如你们中的一些人所知,给定一个n x p输入矩阵,glmnet 为100个不同的lambda值输出一个n ×100的预测概率矩阵[$\Pr(y_i = 1)$].如果λ的进一步变化停止增加预测能力,则输出将窄于100.下面的glmnet预测概率的模拟矩阵是250x69矩阵.

首先,是否有更简单的方法来绘制glmnet ROC曲线?其次,如果没有,下面的方法是否正确?第三,我是否关心绘制(1)假/真阳性的概率或(2)简单地观察到的假/真阳性率?

set.seed(06511)

# Simulate predictions matrix
phat = as.matrix(rnorm(250,mean=0.35, sd = 0.12))
lambda_effect = as.matrix(seq(from = 1.01, to = 1.35, by = 0.005))
phat = phat %*% t(lambda_effect)


#Choose a cut-point
t = 0.5

#Define a predictions matrix
predictions = ifelse(phat >= t, 1, 0)

##Simulate y matrix
y_phat = apply(phat, 1, mean) + rnorm(250,0.05,0.10)
y_obs = ifelse(y_phat >= 0.55, 1, 0)

#percentage of …
Run Code Online (Sandbox Code Playgroud)

plot r machine-learning glmnet roc

3
推荐指数
1
解决办法
8927
查看次数

data.table合并产生额外的列[R]

在下面,我定义了一个12x5尺寸的主数据集。我将其分为四个data.tables,我想将它们合并。data.tables之间没有行ID重叠,某些列名称没有重叠。当我合并它们时,merge()不会识别列名匹配,并为每个data.table中的每个列创建新列。最终合并的data.table应该为12x5,但最终显示为12x7。我认为all=TRUEdata.table中的命令merge()可以解决这个问题。

library(data.table)

a <- data.table(id = c(1, 2, 3),  C1 = c(1, 2, 3))
b <- data.table(id = c(4, 5, 6),  C1 = c(1, 2, 3),  C2 = c(2, 3, 4))
c <- data.table(id = c(7, 8, 9),  C3 = c(5, 2, 7))
d <- data.table(id = c(10, 11, 12),  C3 = c(8, 2, 3), C4 = c(4, 6, 8))

setkey(a, "id")
setkey(b, "id")
setkey(c, "id")
setkey(d, "id")

final <- merge(a, b,  all = …
Run Code Online (Sandbox Code Playgroud)

merge r data.table

3
推荐指数
1
解决办法
1665
查看次数

将许多字段匹配(并求和)为R中的一个

我有一个数据文件(.csv),其中每个观察是333个区之一.每个区都有一个ID,如1101,1102,....... 其次,我有另一个数据文件(.csv),其中每个观察是112,975个城镇之一,包括人口数据.城镇数据有一个district_ID字段.每个区有大约300个城镇.因此,有一个区district_ID == 1101和大约300个城镇district_ID == 1101.

我想在我的分区数据集中创建一个区级人口变量.这意味着将多个城镇观测与每个单一区域观测相匹配,并对城镇级人口进行求和.

谢谢!

r

2
推荐指数
1
解决办法
230
查看次数

寻求在R中命名*many*new data.table列的快速或自动方法

我有一个大型数据集,3000x400.我需要创建新列,这些列是由变量子集化的现有列的​​方法constituency.我有一个新列名列表,我想用它来命名新列,在下面调用newNames.但是当我直接输入所需的新名称时,我只能弄清楚如何命名列.

我目前在做什么:

set.seed(1)
dataTest = data.table(turnout_avg = rnorm(20), urban_avg = rnorm(20,5,2), Constituency = c("A","B","C","D"), key = "Constituency")

oldColumnNames = c( "turnout_avg" , "urban_avg")

newNames = c( "turnout" ,   "urban")

# Here's my problem, naming these new columns
comm_means_by_district = cbind( 
dataTest[,list(Const_turnout = mean(na.omit(get(oldColumnNames[[1]])))), by= Constituency],
dataTest[,list(Const_urban = mean(na.omit(get(oldColumnNames[[2]])))),by= Constituency])
Run Code Online (Sandbox Code Playgroud)

实际上,我想创建两个以上的新列.因此,我不能可行性的类型Const_turnout,Const_urban对所有新列,等等.

我已经尝试了两个想法,但都没有用,1.

dataTest[,list(paste("district", newNames[1], sep="_") = mean(na.omit(get(refColNames[[1]])))), by= Constituency]
Run Code Online (Sandbox Code Playgroud)

或2.

dataTest[,list(paste(oldColumnNames[1], "constMean", sep="_") = mean(na.omit(get(refColNames[[1]])))), by= Constituency]
Run Code Online (Sandbox Code Playgroud)

r dataset data.table

1
推荐指数
1
解决办法
65
查看次数