我正在使用 ROCR 包,我想知道如何在 R 中为 knn 模型绘制 ROC 曲线?有没有办法用这个包来绘制这一切?
不知道怎么用knn的ROCR的预测功能。这是我的示例,我使用来自 UCI 存储库的 isolet 数据集,我将类属性重命名为 y:
cl<-factor(isolet_training$y)
knn_isolet<-knn(isolet_training, isolet_testing, cl, k=2, prob=TRUE)
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,传递给 ROC 预测函数的参数是什么。我尝试了以下两种不起作用的替代方法:
library(ROCR)
pred_knn<-prediction(knn_isolet$y, cl)
pred_knn<-prediction(knn_isolet$y, isolet_testing$y)
Run Code Online (Sandbox Code Playgroud) 如果将对象x传递给f修改它的函数,则R将x在f环境中创建修改后的本地副本,而不是更改原始对象(由于复制更改原则).但是,我有一个x非常大的情况,一旦传递到它就不需要了f,所以我想避免存储x一次f调用的原始副本.有没有一种聪明的方法来实现这一目标?
f 是一个未知的功能,由一个可能不是很聪明的用户提供.
到目前为止,我所拥有的最好的是包装x一个函数forget,该函数x调用一个新的本地引用y,删除工作空间中的原始引用,然后传递新的引用.问题是,我不确定它是否达到了我想要的效果,而且只能用于globalenv(),这在我目前的情况下是一个交易破坏者.
forget <- function(x){
y <- x
# x and y now refers to the same object, which has not yet been copied
print(tracemem(y))
rm(list=deparse(substitute(x)), envir=globalenv())
# The outside reference is now removed so modifying `y`
# should no longer result in a copy (other than the
# intermediate …Run Code Online (Sandbox Code Playgroud) 我似乎无法在10.9.1上安装mysql-python.我怀疑它与最新的命令行工具更新有关但我不是专家:
Running MySQL-python-1.2.5/setup.py -q bdist_egg --dist-dir /var/folders/s7/j138zlt172nf6qqpn98rhzhm0000gn/T/easy_install-kq86vo/MySQL-python-1.2.5/egg-dist-tmp-edndmM
clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
error: Setup script exited with error: command 'cc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
知道怎么克服这个吗?
pip也有同样的错误.
我在终端和RStudio中(在Mac和Linux上)都使用R,想知道两者是否可以使用不同的.Rprofiles,或者最好使用相同的库,.Rprofile但使用不同的环境特定的调整脚本。
我以为将以下代码放入我的目录中是可行的.Rprofile,但是不幸的session_info是在.First运行时未设置该代码。都不是Sys.getenv。
.First <- function(){
# [STUFF I ALWAYS WANT TO DO]
# Load my favourite packages
# Set CRAN mirror
# etc. etc.
# [ENVIRONMENT SPECIFIC TWEAKS]
if(grepl("RStudio", session_info()$platform$ui)){
tryCatch(source("~/.R_RStudio"), error=print)
} else {
tryCatch(source("~/.R_terminal"), error=print)
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试了设置alias R='R --args terminal',.bash_profile该设置的确允许我检测会话是否从bash启动,但是它搞砸了,R CMD ...并且任何脚本都使用其他命令行参数。
我意识到,可能无法从R会话的起始位置进行检测,但是也许RStudio中有一些我不知道的聪明选择。
我将数据从BigQuery移动到Oracle数据库,并试图找到处理时间戳的最佳方法.Oracle DB只能导入日期为小端格式(dd/mm/yyyy hh:mi:ss)的csv文件,但默认情况下BigQuery仅支持big endian(yyyy-mm-dd hh:mi:ss).
SELECT
t,
STRING(t) s
FROM
(SELECT TIMESTAMP(132456789101112) t)
Run Code Online (Sandbox Code Playgroud)
Row t s
1 1974-03-14 01:33:09 UTC 1974-03-14 01:33:09.101112
Run Code Online (Sandbox Code Playgroud)
我当然可以提取时间戳的不同组件并手动将它们粘贴在一起(见下文)或编写一些聪明的UDF,但如果没有任何方法可以使用BigQuery的标准功能,我会感到惊讶.这似乎是一件很平常的事情,我实际上犹豫要求一些时间.
SELECT
t,
CONCAT(
RIGHT(CONCAT("0", STRING(DAY(t))), 2), "/",
RIGHT(CONCAT("0", STRING(MONTH(t))), 2), "/",
RIGHT(CONCAT("000", STRING(YEAR(t))), 4), " ",
TIME(t)
) s
FROM
(SELECT TIMESTAMP(132456789101112) t)
Run Code Online (Sandbox Code Playgroud)
Row t s
1 1974-03-14 01:33:09 UTC 14/03/1974 01:33:09
Run Code Online (Sandbox Code Playgroud)
是否有类似FORMAT(t, "dd/mm/yyyy hh:mi:ss")的方法或使用regexp的方法?(无需连续几个REGEXP_EXTRACT.)
我对R很新,所以答案可能很明显,但到目前为止,我只找到了不匹配的类似问题的答案,或者我无法将其转化为我的答案.
要求: 我有两个相同长度的向量,包含数值和NA值,可能如下所示:
[1] 12 8 11 9 NA NA NA
[1] NA 7 NA 10 NA 11 9
Run Code Online (Sandbox Code Playgroud)
我现在需要的是两个向量,它们只包含那些不在NA两个原始向量中的值,因此在这种情况下,结果应如下所示:
[1] 8 9
[1] 7 10
Run Code Online (Sandbox Code Playgroud)
我正在考虑简单地在循环中浏览向量,但数据集非常大,所以我希望能更快地解决这个问题...我希望有人可以帮助我...
我有一个逻辑向量
v <- c(FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE)
Run Code Online (Sandbox Code Playgroud)
我想计算FALSE每个之间的数量TRUE.对于上面的例子,期望的结果是
3 2 1 4
Run Code Online (Sandbox Code Playgroud)
理想情况下,答案不会使用迭代方法.我的实际应用是一个更大的逻辑向量.效率越高越好.
谢谢!
我最近发现了如何创建衣衫褴褛的数据帧使用的I功能,但其很难与它们集成tidyr,ggplot2以及Hadleyverse的其余部分.更具体地说,如何将包含命名向量的列收集到键值列中?
假设我创建了一个这样的数据框
make.vector <- function(length.out){
x <- sample(9, length.out)
names(x) <- switch(length.out,
"Alice",
c("Bob", "Charlie"),
c("Dave", "Erin", "Frank"),
c("Gwen", "Harold", "Inez", "James"))
x
}
mydf <- data.frame(Game = gl(3, 3, labels=LETTERS[1:3]),
Set = rep(1:3, 3),
Score = I(lapply(rep(2:4, each=3), make.vector)))
Run Code Online (Sandbox Code Playgroud)
生产
> print(mydf)
Game Set Score
1 A 1 8, 3
2 A 2 2, 8
3 A 3 3, 8
4 B 1 1, 5, 4
5 B 2 2, 3, …Run Code Online (Sandbox Code Playgroud) 我试图使用foreach和将以下代码转换为并行%dopar%.
library(doSNOW)
library(foreach)
cl<- makeCluster(4, type = "SOCK")
registerDoSNOW(cl)
min_subid <- c()
max_subid <- c()
p_typ <- c()
p_nm <- c()
st_tm<-c()
end_tm <- c()
supp <- c()
chart_type <- c()
foreach(j =1:noOfPhases) %dopar%
{
start_time <-phases[j, colnames(phases)=="StartTime"]
end_time <-phases[j, colnames(phases)=="StopTime"]
phase_type <-phases[j, colnames(phases)=="Phase_Type_Id"]
phase_name <-phases[j, colnames(phases)=="Phase_Name"]
suppress <-phases[j, colnames(phases)=="Suppression_Time"]
chart_typ <-phases[j, colnames(phases)=="chartType"]
conft<-(masterData$Time.Subgroup>=start_time & masterData$Time.Subgroup<=end_time)
masterData[which(conft), colnames(masterData)=="Phase_Type"]<-phase_type
masterData[which(conft), colnames(masterData)=="Phase_Name"]<-phase_name
min_subid <- rbind(min_subid, min(which(conft)))
max_subid <- rbind(max_subid, max(which(conft)))
p_typ <- rbind( p_typ, masterData$Phase_Type[min(which(conft))])
p_nm <- rbind( …Run Code Online (Sandbox Code Playgroud)