在这样的声明中:
g = sns.FacetGrid(df, row="variable", col="state")
Run Code Online (Sandbox Code Playgroud)
我想控制变量和状态在 FacetGrid 中出现的顺序。我找不到哪里可以做到这一点。
我试图按照下面的方法用 R 创建一个条形图竞赛。当我尝试将它们另存为 gif 文件时,所有 png 都会被创建,然后我得到:
Error: The animation object does not specify a save_animation method
Run Code Online (Sandbox Code Playgroud)
是否因为我创建了多个文件而发生这种情况?
#This script contains a function to produce a "bar chart race" in R
#The following links were invaluable:
#https://www.blakeshaffer.ca/post/making-animated-charts-with-gganimate/
#/sf/ask/3683660571/
#load required packages:
library(tidyverse)
library(gganimate)
#inputs:
#data - the dataset, must contain a column called "year"
#x - the column which contains the numeric value to plot
#y - the column which contains the labels of the plot
#optional:
#title - title …
Run Code Online (Sandbox Code Playgroud) 使用以下代码在 R 中构建 ggpairs 图形。
df 是一个包含 6 个连续变量和 1 个组变量的数据框
ggpairs(df[,-1],columns = 1:ncol(df[,-1]),
mapping=ggplot2::aes(colour = df$Group),legends = T,axisLabels = "show",
upper = list(continuous = wrap("cor", method = "spearman", size = 2.5, hjust=0.7)))+
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"))
Run Code Online (Sandbox Code Playgroud)
我正在尝试将斯皮尔曼相关性的 p 值添加到生成的图形的上面板(即附加到斯皮尔曼相关系数)。
一般来说,p 值是使用cor.test
作为“Spearman”传递的方法计算的
还知道 StackOverFlow 帖子讨论与此类似的查询,但我需要ggpairs
,该解决方案不起作用。另外,之前的查询还没有解决。
我正在尝试向 R 中的引导函数添加一个进度条。我试图使示例函数尽可能简单(因此我在本示例中使用了 mean)。
library(boot)
v1 <- rnorm(1000)
rep_count = 1
m.boot <- function(data, indices) {
d <- data[indices]
setWinProgressBar(pb, rep_count)
rep_count <- rep_count + 1
Sys.sleep(0.01)
mean(d, na.rm = T)
}
tot_rep <- 200
pb <- winProgressBar(title = "Bootstrap in progress", label = "",
min = 0, max = tot_rep, initial = 0, width = 300)
b <- boot(v1, m.boot, R = tot_rep)
close(pb)
Run Code Online (Sandbox Code Playgroud)
引导程序正常运行,但问题是rep_count
循环中的值没有增加,并且在此过程中进度条保持冻结状态。
如果我rep_count
在引导完成后检查 的值,它仍然是 1。
我究竟做错了什么?也许引导函数不是简单地将m.boot
函数插入到循环中,因此其中的变量不会增加?
谢谢你。
这是我的代码:
library(MASS)
library(caret)
df <- Boston
set.seed(3721)
cv.10.folds <- createFolds(df$medv, k = 10)
lasso_grid <- expand.grid(fraction=c(1,0.1,0.01,0.001))
lasso <- train(medv ~ .,
data = df,
preProcess = c("center", "scale"),
method ='lasso',
tuneGrid = lasso_grid,
trControl= trainControl(method = "cv",
number = 10,
index = cv.10.folds))
lasso
Run Code Online (Sandbox Code Playgroud)
与线性模型不同,我无法从摘要(套索)中找到套索回归模型的系数。我该怎么做?或者我可以使用 glmnet 吗?
当通过 glmnet 包估计套索模型时,我想知道是否更好:(a)直接从 cv.fit 对象中提取系数/预测/偏差cv.glmnet
,或者(b)使用最小 lambda fromcv.glmnet
重新运行glmnet
并从glmnet
进程中拉出这些对象。(请耐心等待——我觉得这已经被记录在案了,但我在网上看到了这两个例子/教程,并且没有可靠的逻辑来选择一种方式。)
也就是说,对于系数,我可以运行(a):
cvfit = cv.glmnet(x=xtrain, y=ytrain, alpha=1, type.measure = "mse", nfolds = 20)
coef.cv <- coef(cvfit, s = "lambda.min")
Run Code Online (Sandbox Code Playgroud)
或者我之后可以运行(b):
fit = glmnet(x=xtrain, y=ytrain, alpha=1, lambda=cvfit$lambda.min)
coef <- coef(fit, s = "lambda.min")
Run Code Online (Sandbox Code Playgroud)
虽然这两个过程选择相同的模型变量,但它们不会产生相同的系数。同样,我可以通过以下两个过程之一进行预测:
prdct <- predict(fit,newx=xtest)
prdct.cv <- predict(cvfit, newx=xtest, s = "lambda.min")
Run Code Online (Sandbox Code Playgroud)
他们预测相似但不相同的向量。
最后,我认为我可以通过以下两种方法之一解释 % 偏差:
percdev <- fit$dev.ratio
percdev.cv <- cvfit$glmnet.fit$dev.ratio[cvfit$cvm==mse.min.cereal]
Run Code Online (Sandbox Code Playgroud)
但实际上,这样拉是不可能的percdev.cv
,因为如果 cv.glmnet 使用的 lambda 序列少于 100 个元素,则cvfit$glmnet.fit$dev.ratio
和的长度cvfit$cvm==mse.min.cereal
不匹配。所以我不太确定如何从 …
我是 R 新手,正在尝试根据行业对一些数据进行聚类。我了解到 K 均值无法处理因子和分类数据。我已经从我的数据集中删除了名为“行业”的因素(67 个不同的观察结果),但希望在模型完成后为每个观察结果分配一个标签。本质上,我希望我的最终结果看起来像美国犯罪数据集示例。任何帮助将不胜感激。
我的结果:
我理想的结果:
代码:
library(tidyverse) # data manipulation
library(cluster) # clustering algorithms
library(factoextra) # clustering algorithms & visualization
library(ggplot2) ## used for plotting
library(gridExtra) ## used for plotting
library(robustbase)
###Read in dataset
df <- read.csv('my_data')
df2 <- scale(df)
### Subset of Data -- looking at percentage closed won and total opportunities
dat = df2[,c(1,3)]
# initial cluster split
k2 <- kmeans(dat, centers = 2, nstart = 25)
str(k2)
k2
fviz_cluster(k2, data = dat)
### Additional …
Run Code Online (Sandbox Code Playgroud) 我对使用 python sklearn 的数据集进行了 10 倍交叉验证,
result = cross_val_score(best_svr, X, y, cv=10, scoring='r2')
print(result.mean())
Run Code Online (Sandbox Code Playgroud)
我已经能够得到 r2 分数的平均值作为最终结果。我想知道是否有办法打印出每个折叠的预测值(在本例中为 10 组值)。
我正在训练一个基于Kaggle心脏病数据的决策树模型。
由于我也在使用 10 倍 CV 构建其他模型,因此我尝试使用带有 rpart 方法的 caret 包来构建树。然而,情节结果很奇怪,因为“铊”应该是一个因素。为什么显示“thaliumnormal <0.5”?这是否意味着如果“铊”==正常“然后走左边的路线“是”,否则走右边的路线“否”?
非常感谢!
编辑:我很抱歉没有提供足够的背景信息,这似乎引起了一些混乱。“铊”是一个变量,代表一种用于检测冠状动脉狭窄(又名狭窄)的技术。它是一个具有三个级别(正常、固定缺陷、可逆缺陷)的因素。
此外,我想让图表更具可读性,例如代替“thliumnormal < 0.5”,它应该类似于“thlium = normal”。我可以通过直接使用 rpart 来实现这个目标(见下文)。
但是,您可能已经注意到树是不同的,尽管我使用了带有 caret rpart CV 10 折的推荐 cp 值(请参阅下面的代码)。
我了解这两个包可能会导致一些差异。理想情况下,我可以使用插入符号和方法 rpart 来构建树,以便它与插入符号中构建的其他模型对齐。有谁知道我如何使用 caret rpart 构建的树模型的绘图标签更容易理解?
我有相当大的数据集,我想在其中排除方差相当低的列,这就是为什么我想使用短语 NearZeroVar。但是,我确实很难理解 freqCut 和 uniqueCut 的作用以及它们如何相互影响。我已经阅读了 R 中的解释,但这并没有真正帮助我解决这个问题。如果有人能给我解释一下,我将非常感激!
r ×8
r-caret ×3
ggplot2 ×2
python ×2
statistics ×2
correlation ×1
factoextra ×1
function ×1
gganimate ×1
glmnet ×1
k-means ×1
loops ×1
progress ×1
regression ×1
rpart ×1
scikit-learn ×1
seaborn ×1
variance ×1