小编Stu*_*olf的帖子

Seaborn 的构面排序

在这样的声明中:

g = sns.FacetGrid(df, row="variable", col="state")
Run Code Online (Sandbox Code Playgroud)

我想控制变量和状态在 FacetGrid 中出现的顺序。我找不到哪里可以做到这一点。

python seaborn

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

错误:动画对象未指定 save_animation 方法

我试图按照下面的方法用 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 ggplot2 gganimate

9
推荐指数
2
解决办法
7627
查看次数

如何将斯皮尔曼相关性 p 值以及相关系数添加到 ggpairs 中?

使用以下代码在 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 中的对绘制的 Spearman 相关系数的 p 值

statistics r ggplot2 correlation

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

在 R 中为启动功能添加进度条

我正在尝试向 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函数插入到循环中,因此其中的变量不会增加?

谢谢你。

loops r function progress statistics-bootstrap

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

我应该如何获得套索模型的系数?

这是我的代码:

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 吗?

r lasso-regression r-caret

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

cv.glmnet 与 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 glmnet

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

向集群添加标签

我是 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)

r cluster-analysis k-means factoextra

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

sklearn中K-Fold Cross Validation中每个折叠的预测值

我对使用 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 组值)。

python regression scikit-learn cross-validation

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

caret rpart 决策树绘制结果

我正在训练一个基于Kaggle心脏病数据的决策树模型。

由于我也在使用 10 倍 CV 构建其他模型,因此我尝试使用带有 rpart 方法的 caret 包来构建树。然而,情节结果很奇怪,因为“铊”应该是一个因素。为什么显示“thaliumnormal <0.5”?这是否意味着如果“铊”==正常“然后走左边的路线“是”,否则走右边的路线“否”?

非常感谢!

使用fancyRpartPlot的插入符号rpart决策树图

编辑:我很抱歉没有提供足够的背景信息,这似乎引起了一些混乱。“铊”是一个变量,代表一种用于检测冠状动脉狭窄(又名狭窄)的技术。它是一个具有三个级别(正常、固定缺陷、可逆缺陷)的因素。

数据结构

此外,我想让图表更具可读性,例如代替“thliumnormal < 0.5”,它应该类似于“thlium = normal”。我可以通过直接使用 rpart 来实现这个目标(见下文)。

rpart 决策树图

但是,您可能已经注意到树是不同的,尽管我使用了带有 caret rpart CV 10 折的推荐 cp 值(请参阅下面的代码)。

代码 推荐的cp,用于使用fancyRpartplot的rpart树

我了解这两个包可能会导致一些差异。理想情况下,我可以使用插入符号和方法 rpart 来构建树,以便它与插入符号中构建的其他模型对齐。有谁知道我如何使用 caret rpart 构建的树模型的绘图标签更容易理解?

r decision-tree rpart r-caret

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

R 中的 NearZeroVar 是什么?

我有相当大的数据集,我想在其中排除方差相当低的列,这就是为什么我想使用短语 NearZeroVar。但是,我确实很难理解 freqCut 和 uniqueCut 的作用以及它们如何相互影响。我已经阅读了 R 中的解释,但这并没有真正帮助我解决这个问题。如果有人能给我解释一下,我将非常感激!

statistics r variance r-caret

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