我使用lme4包运行glmer logit模型.我对各种两种和三种互动效果及其解释感兴趣.为简化起见,我只关注固定效应系数.
我设法提出了一个代码来计算并在logit量表上绘制这些效果,但我无法将它们转换为预测的概率量表.最后我想复制effects包的输出.
这个例子依赖于加州大学洛杉矶分校关于癌症患者的数据.
library(lme4)
library(ggplot2)
library(plyr)
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
facmin <- function(n) {
min(as.numeric(levels(n)))
}
facmax <- function(x) {
max(as.numeric(levels(x)))
}
hdp <- read.csv("http://www.ats.ucla.edu/stat/data/hdp.csv")
head(hdp)
hdp <- hdp[complete.cases(hdp),]
hdp <- within(hdp, {
Married <- factor(Married, levels = 0:1, labels = c("no", "yes"))
DID <- factor(DID)
HID <- factor(HID)
CancerStage <- revalue(hdp$CancerStage, c("I"="1", "II"="2", "III"="3", "IV"="4"))
})
Run Code Online (Sandbox Code Playgroud)
在此之前,我需要的是所有数据管理,功能和包.
m <- glmer(remission ~ CancerStage*LengthofStay + Experience +
(1 | DID), …Run Code Online (Sandbox Code Playgroud) 我正在拟合glm模型R并且可以使用拟合模型在predict.glm(object=fm1, type="response")哪里获得响应尺度的预测值fm1.我想知道如何使用包中的augment函数以响应比例获得预测值broom.我的最低工作示例如下.
Dilution <- c(1/128, 1/64, 1/32, 1/16, 1/8, 1/4, 1/2, 1, 2, 4)
NoofPlates <- rep(x=5, times=10)
NoPositive <- c(0, 0, 2, 2, 3, 4, 5, 5, 5, 5)
Data <- data.frame(Dilution, NoofPlates, NoPositive)
fm1 <- glm(formula=NoPositive/NoofPlates~log(Dilution),
family=binomial("logit"), data=Data, weights=NoofPlates)
predict.glm(object=fm1, type="response")
# 1 2 3 4 5 6 7 8 9 10
# 0.02415120 0.07081045 0.19005716 0.41946465 0.68990944 0.87262421 0.95474066 0.98483820 0.99502511 0.99837891
library(broom)
broom::augment(x=fm1)
# …Run Code Online (Sandbox Code Playgroud) 如何在 GPU 上训练 XGBoost 模型但在 CPU 上运行预测而不分配任何GPU RAM?
我的情况:我tree_method='gpu_hist'用 Python 创建了一个 XGBoot 模型 ( ) predictor='cpu_predictor',然后在 GPU 上训练它,然后将其保存(pickle)到磁盘,然后从磁盘读取模型,然后用它进行预测。
我的问题:一旦模型开始进行预测,即使我在 CPU 上运行它,它仍然会分配一些少量的 GPU RAM(大约 289MB)。这是一个问题,原因如下:
那么,如何告诉 XGBoost 不分配任何GPU RAM 并仅使用 CPU 和常规 RAM 进行预测呢?
非常感谢您的帮助!
我有这个数据集:
x <- c(0, 40, 80, 120, 160, 200)
y <- c(6.52, 5.10, 4.43, 3.99, 3.75, 3.60)
Run Code Online (Sandbox Code Playgroud)
我使用lm()以下方法计算了线性模型
model <- lm(y ~ x)
Run Code Online (Sandbox Code Playgroud)
我想知道x如果我有新y值的预测值,例如ynew <- c(5.5, 4.5, 3.5),但如果我使用该predict()函数,它只计算新y值.
x如果我有新y值,如何预测新值?
在64位Linux机器上使用R 3.2.0 with caret 6.0-41和randomForest 4.6-10.
当尝试使用公式对使用包中的函数训练predict()的randomForest对象使用该方法时,该函数返回错误.当通过训练和/或使用和而不是公式,这一切都顺利进行.train()caretrandomForest()x=y=
这是一个工作示例:
library(randomForest)
library(caret)
data(imports85)
imp85 <- imports85[, c("stroke", "price", "fuelType", "numOfDoors")]
imp85 <- imp85[complete.cases(imp85), ]
imp85[] <- lapply(imp85, function(x) if (is.factor(x)) x[,drop=TRUE] else x) ## Drop empty levels for factors.
modRf1 <- randomForest(numOfDoors~., data=imp85)
caretRf <- train( numOfDoors~., data=imp85, method = "rf" )
modRf2 <- caretRf$finalModel
modRf3 <- randomForest(x=imp85[,c("stroke", "price", "fuelType")], y=imp85[, "numOfDoors"])
caretRf <- train(x=imp85[,c("stroke", "price", "fuelType")], y=imp85[, "numOfDoors"], method = "rf")
modRf4 …Run Code Online (Sandbox Code Playgroud) 我试图预测python statsmodels ARIMA包中的时间序列,包含一个外生变量,但无法弄清楚在预测步骤中插入外生变量的正确方法.请参阅此处了解文档.
import numpy as np
from scipy import stats
import pandas as pd
import statsmodels.api as sm
vals = np.random.rand(13)
ts = pd.TimeSeries(vals)
df = pd.DataFrame(ts, columns=["test"])
df.index = pd.Index(pd.date_range("2011/01/01", periods = len(vals), freq = 'Q'))
fit1 = sm.tsa.ARIMA(df, (1,0,0)).fit()
#this works fine:
pred1 = fit1.predict(start=12, end = 16)
print(pred1)
Out[32]:
2014-03-31 0.589121
2014-06-30 0.747575
2014-09-30 0.631322
2014-12-31 0.654858
2015-03-31 0.650093
Freq: Q-DEC, dtype: float64
Run Code Online (Sandbox Code Playgroud)
现在添加一个趋势外生变量
exogx = np.array(range(1,14))
#to make this easy, let's look at …Run Code Online (Sandbox Code Playgroud) 更新:
我试过在https://rdrr.io/snippets/上运行代码,它运行正常.因此,我怀疑我的R安装有问题,但是非常担心这种情况可能会发生而不会出现错误或警告.调查此问题的最佳步骤是什么?我在Ubuntu 18.04和gbm 2.1.4上运行R 3.4.4
我正在将增强模型拟合到数据集中,并注意到一些奇怪的预测.这是一个最小的工作示例.请注意,这只是我正在使用的数据集的一小部分示例
mydata <- structure(list(Count = c(1L, 3L, 1L, 4L, 1L, 0L, 1L, 2L, 0L, 0L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 0L, 2L, 3L, 1L, 4L, 3L, 0L, 4L, 1L, 2L, 1L, 1L, 0L, 2L, 1L, 4L, 1L, 5L, 3L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 2L, 0L, 0L, 1L, 1L, 1L, 0L, 3L, 1L, 1L, 0L, 3L, 1L, 1L, 1L, 1L, 2L, 3L, 2L, 2L, 0L, 0L, 3L, …Run Code Online (Sandbox Code Playgroud) 对于简单glm对象,我可以使用predict(fit, type = "terms")检索每个术语具有拟合值的矩阵.
什么是lmerresp 的等价物.glmer合身模特?据我所见,该predict.merMod功能不支持type = terms.
我装逻辑回归模型预测的二元结果vs的mpg(mtcars数据集).情节如下所示.如何确定mpg任何特定vs值的值?例如,我有兴趣在mpg概率vs为0.50 时找出值是什么.感谢任何人都能提供的帮助!
model <- glm(vs ~ mpg, data = mtcars, family = binomial)
ggplot(mtcars, aes(mpg, vs)) +
geom_point() +
stat_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE)
Run Code Online (Sandbox Code Playgroud)
我之前使用fastai库训练了一个resnet34模型,并保存了weights.h5文件.使用最新版本的fastai,我是否还需要非空列车和有效文件夹才能导入我的学习者并在测试集上进行预测?
此外,我正在循环遍历每个测试图像并使用learn.predict_array,但是有没有办法在测试文件夹中批量预测?
我目前正在加载/预测的示例:
PATH = '/path/to/model/'
sz = 224
arch=resnet34
tfms = tfms_from_model(resnet34, sz, aug_tfms=transforms_side_on, max_zoom=1.1)
data = ImageClassifierData.from_paths(PATH, tfms=tfms, bs=64)
learn = ConvLearner.pretrained(arch, data, precompute=False)
learn.unfreeze()
learn.load('224_all')
imgs = sorted(glob(os.path.join(test_path, '*.jpg')))
preds = []
_,val_tfms = tfms_from_model(resnet34, 224)
for n, i in enumerate(imgs):
im = val_tfms(open_image(i))[None]
preds.append(1-np.argmax(learn.predict_array(im)[0]))
Run Code Online (Sandbox Code Playgroud)
现在必须有更清洁的方法来做到这一点,不是吗?
machine-learning predict batch-processing python-3.x fast-ai
predict ×10
r ×7
lme4 ×2
python ×2
broom ×1
cpu ×1
fast-ai ×1
formula ×1
gbm ×1
glm ×1
gpu ×1
graphics ×1
lm ×1
numpy ×1
python-3.x ×1
r-caret ×1
regression ×1
statistics ×1
statsmodels ×1
xgboost ×1