我试图预测包含NAs的数据的拟合值,并基于生成的模型plm.这是一些示例代码:
require(plm)
test.data <- data.frame(id=c(1,1,2,2,3), time=c(1,2,1,2,1),
y=c(1,3,5,10,8), x=c(1, NA, 3,4,5))
model <- plm(y ~ x, data=test.data, index=c("id", "time"),
model="pooling", na.action=na.exclude)
yhat <- predict(model, test.data, na.action=na.pass)
test.data$yhat <- yhat
Run Code Online (Sandbox Code Playgroud)
当我运行最后一行时,我收到一条错误,指出替换有4行而数据有5行.
我不知道如何获得预测返回长度为5的向量...
如果不是运行plm我运行lm(如下面的行),我得到预期的结果.
model <- lm(y ~ x, data=test.data, na.action=na.exclude)
Run Code Online (Sandbox Code Playgroud) 我已经训练了模型中使用word2vec和使用keras的LSTM模型来预测主题类别,并有大约训练期间98%的准确率,我保存的模型,然后装到另一个文件试图在测试集,我用model.evaluate和model.predict,结果非常不一样。
我使用 keras 和 tensorflow 作为后端,模型摘要是:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
lstm_1 (LSTM) (None, 22) 19624
_________________________________________________________________
dropout_1 (Dropout) (None, 22) 0
_________________________________________________________________
dense_1 (Dense) (None, 40) 920
_________________________________________________________________
activation_1 (Activation) (None, 40) 0
=================================================================
Total params: 20,544
Trainable params: 20,544
Non-trainable params: 0
_________________________________________________________________
None
Run Code Online (Sandbox Code Playgroud)
编码:
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.load_weights(os.path.join('model', 'lstm_model_weights.hdf5'))
score, acc = model.evaluate(x_test, y_test, batch_size=batch_size)
print()
print('Score: %1.4f' % score)
print('Evaluation Accuracy: %1.2f%%' % (acc*100))
predicted = model.predict(x_test, batch_size=batch_size)
acc2 …Run Code Online (Sandbox Code Playgroud) 我已经训练并保存了我的 H2O AutoML 模型。重新加载后,当我使用预测方法时,出现以下错误:java.lang.IllegalArgumentException:测试/验证数据集有一个非分类列“响应”,它在训练数据中是分类的
我在创建模型时没有指定任何编码,但我现在收到此错误。任何人都可以帮助我解决这个问题。
任何帮助将不胜感激。
我使用1.3.0包中的函数ggpredict()和函数来计算混合效应模型的平均估计值和置信区间(以下简称:CI)。这些功能依赖于ggemmeans()ggeffectspredict()emmeans()使其输出对 ggplot 友好。这两个函数预测/估计的值的平均值和 CI 均不同。为什么?
以下可重现的示例基于数据集 RIKZ(Janssen e Mulder 2005;Zuur 等人 2007),该数据集着眼于与平均潮汐水位(NAP,以米为单位)相比,物种丰富度(物种数量)如何随采样站高度变化)和暴露水平(具有三个级别的因素:低、中、高):
\nrm(list=ls())\nif (!require(pacman)) install.packages(\'pacman\'); library(pacman)\np_load(emmeans)\np_load(ggplot2)\np_load(ggpubr)\np_load(ggeffects)\np_load(lme4, lmerTest, glmmTMB)\np_load(RCurl)\n# get data:\nRIKZ <- read.csv(text = RCurl::getURL(\n"https://raw.githubusercontent.com/marcoplebani85/datasets/master/RIKZ.csv"))\nstr(RIKZ)\n# "Exposure" is a factor:\nRIKZ$Exposure <- as.factor(RIKZ$Exposure)\nRun Code Online (Sandbox Code Playgroud)\n在这里,我使用泊松分布残差将广义混合效应模型拟合到数据中glmmTMB():
mem1 <- glmmTMB(Richness ~ NAP+Exposure + (1 | Beach),\n family="poisson",\n data = RIKZ, REML=T)\nRun Code Online (Sandbox Code Playgroud)\n模型预测和 CI 根据ggeffects::ggpredict(),不考虑随机效应的不确定性(参见本页了解为何考虑或不考虑):
richness.predicted <- ggpredict(mem1, \nterms=c("NAP", "Exposure"), type="fixed")\nRun Code Online (Sandbox Code Playgroud)\n同一模型的预测和 CI根据ggeffects::ggemmeans() …
我试图预测自住房屋的中位数值,这是一个效果良好的例子.https://heuristically.wordpress.com/2011/11/17/using-neural-network-for-regression/
library(mlbench)
data(BostonHousing)
require(nnet)
# scale inputs: divide by 50 to get 0-1 range
nnet.fit <- nnet(medv/50 ~ ., data=BostonHousing, size=2)
# multiply 50 to restore original scale
nnet.predict <- predict(nnet.fit)*50
Run Code Online (Sandbox Code Playgroud)
nnet.predict [,1] 1 23.70904 2 23.70904 3 23.70904 4 23.70904 5 23.70904 6 23.70904 7 23.70904 8 23.70904 9 23.70904 10 23.70904 11 23.70904 12 23.70904 13 23.70904 14 23.70904 15 23.70904
对于所有506个观测值的所有预测,我得到23.70904相同的值?为什么会这样?我做错了什么?
我的R版本是3.1.2.
我有一些重复的措施,顺序响应数据:
dat <- data.frame(
id = factor(sample(letters[1:5], 50, replace = T)),
response = factor(sample(1:7, 50, replace = T), ordered = T),
x1 = runif(n = 50, min = 1, max = 10),
x2 = runif(n = 50, min = 100, max = 1000)
)
Run Code Online (Sandbox Code Playgroud)
我建立了以下模型:
library(ordinal)
model <- clmm(response ~ x1 + x2 + (1|id), data = dat)
Run Code Online (Sandbox Code Playgroud)
我有一些新数据:
new_dat <- data.frame(
id = factor(sample(letters[1:5], 5, replace = T)),
x1 = runif(n = 5, min = 1, max = 10), …Run Code Online (Sandbox Code Playgroud) 我对张量流非常陌生,尤其是 2.0,因为没有足够的关于该 API 的示例,但它似乎比 1.x 方便得多到目前为止,我设法使用 tf.estimator api 训练线性模型,然后设法保存它使用 tf.estimator.exporter。
之后,我想使用 tf.saved_model api 加载这个模型,我想我成功了,但我对我的程序有一些疑问,所以这里快速浏览一下我的代码:
所以我有一个使用 tf.feature_column api 创建的功能数组,它看起来像这样:
feature_columns =
[NumericColumn(key='geoaccuracy', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None),
NumericColumn(key='longitude', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None),
NumericColumn(key='latitude', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None),
NumericColumn(key='bidfloor', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None),
VocabularyListCategoricalColumn(key='adid', vocabulary_list=('115', '124', '139', '122', '121', '146', '113', '103', '123', '104', '147', '114', '149', '148'), dtype=tf.string, default_value=-1, num_oov_buckets=0),
VocabularyListCategoricalColumn(key='campaignid', vocabulary_list=('36', '31', '33', '28'), dtype=tf.string, default_value=-1, num_oov_buckets=0),
VocabularyListCategoricalColumn(key='exchangeid', vocabulary_list=('1241', '823', '1240', '1238'), dtype=tf.string, default_value=-1, num_oov_buckets=0),
...]
Run Code Online (Sandbox Code Playgroud)
之后,我以这种方式使用我的特征列数组定义一个估计器,并训练它。直到这里,没问题。
linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns)
Run Code Online (Sandbox Code Playgroud)
训练我的模型后,我想保存它,所以这里开始产生疑问,这是我的操作方式,但不确定这是正确的方法: …
让我们从我刚开始接触 TensorFlow 和深度学习的前提开始。
我有使用tf.Model.train()两个可用 GPU训练的 TF 2.0 Keras 样式模型,我希望缩短推理时间。
我使用极其方便的tf.distribute.MirroredStrategy().scope()上下文管理器训练了分布在 GPU 上的模型
mirrored_strategy = tf.distribute.MirroredStrategy()
with mirrored_strategy.scope():
model.compile(...)
model.train(...)
Run Code Online (Sandbox Code Playgroud)
两个 GPU 都得到了有效利用(即使我对结果的准确性不太满意)。
我似乎无法找到一种类似的策略来使用该tf.Model.predict()方法在 GPU 之间分配推理:当我运行时,model.predict()我(显然)仅从两个 GPU 中的一个获得使用。
是否可以在两个 GPU 上实例化相同的模型并并行提供不同的数据块?
有些帖子建议如何在 TF 1.x 中执行此操作,但我似乎无法在 TF2.0 中复制结果
https://medium.com/@sbp3624/tensorflow-multi-gpu-for-inferencing-test-time-58e952a2ed95
我对这个问题的心理斗争主要是
tf.Session()基于 TF2.0 中隐含的会话,如果我理解正确,我阅读的解决方案对每个 GPU 使用单独的会话,我真的不知道如何在 TF2.0 中复制它model.predict()特定会话中使用该方法。我知道这个问题可能没有很好地表述,但我总结为:
有没有人知道如何model.predict()在 TF2.0 中在多个 GPU 上运行 Keras 风格(以并行方式对每个 GPU 上的不同批次数据进行推理)?
在此先感谢您的帮助。
我正在尝试在数据之上手动绘制模型估计值。我真正的问题远比这复杂得多,所以predict如果可以的话,我想避免使用,并且更愿意了解如何计算这些预测而不是依赖某个包。
(底部可重现示例的数据。)
所以我首先运行一个模型,并获取模型估计和标准误差:
library(glmmTMB)
glmmLep<-glmmTMB(Lepidoptera ~ DayL50,
data=Dat, family=nbinom2(link="log") )
dB_est<-(summary(glmmLep)$coeff$cond[2,1])
dB_SE<-(summary(glmmLep)$coeff$cond[2,2])
Int<-(summary(glmmLep)$coeff$cond[1,1])
Int_SE<-(summary(glmmLep)$coeff$cond[1,2])
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一系列 x 值来预测
x<-seq(from=min(Dat$DayL50),to=max(Dat$DayL50),length.out = length(Dat$DayL50))
Run Code Online (Sandbox Code Playgroud)
然后我用两种不同的方法预测 y 值(使用predict和编写应该做同样事情的方程)
ypred<-exp(dB_est*x+Int)
y<-predict(glmmLep,list(DayL50=x),type="response",se.fit = T)
Run Code Online (Sandbox Code Playgroud)
我们绘制两条预测线(一条是顶部较小的红线):
ggplot(aes(x=DayL50,y=Lepidoptera),data=Dat)+
geom_point(size=2)+
geom_line(aes(y=y$fit,x=x),size=2)+
geom_ribbon(aes(ymax=y$fit+1.96*y$se.fit,ymin=y$fit-1.96*y$se.fit,x=x),alpha=0.2)+
geom_line(aes(y=ypred,x=x),size=1,color="red")+
# geom_ribbon(aes(ymax=ymax,ymin=ymin,x=x),alpha=0.2,color="red")+
coord_cartesian(ylim=c(0,1000))
Run Code Online (Sandbox Code Playgroud)
我们看到我写的方程与predict函数的作用相同。都好。但是,当我在该行周围添加 SE / 95% CI 功能区时,我在尝试重新创建它时遇到了问题(这里我保留为 SE,因为 95%CI 会导致更多笨拙的情节)。我用许多不同的方式玩过这个公式,但似乎无法理解。出于某种原因,我似乎找不到任何关于它的帖子,但也许我没有使用正确的搜索词。任何人都可以向我解释我在这里缺少什么。似乎我在错误功能区(以红色标出)中遗漏了相当多的复杂性。
ymin<-exp((dB_est-dB_SE)*x+(Int))
ymax<-exp((dB_est+dB_SE)*x+(Int))
ggplot(aes(x=DayL50,y=Lepidoptera),data=Dat)+
geom_point(size=2)+
geom_line(aes(y=y$fit,x=x),size=2)+
geom_ribbon(aes(ymax=y$fit+1.96*y$se.fit,ymin=y$fit-1.96*y$se.fit,x=x),alpha=0.2)+
geom_line(aes(y=ypred,x=x),size=1,color="red")+
geom_ribbon(aes(ymax=ymax,ymin=ymin,x=x),alpha=0.2,color="red")+
coord_cartesian(ylim=c(0,1000))
Run Code Online (Sandbox Code Playgroud)
或者使用 95% CI,就像我的predict色带一样,它甚至更远:
ymin<-exp((dB_est-1.96*dB_SE)*x+(Int))
ymax<-exp((dB_est+1.96*dB_SE)*x+(Int))
ggplot(aes(x=DayL50,y=Lepidoptera),data=Dat)+
geom_point(size=2)+
geom_line(aes(y=y$fit,x=x),size=2)+
geom_ribbon(aes(ymax=y$fit+1.96*y$se.fit,ymin=y$fit-1.96*y$se.fit,x=x),alpha=0.2)+
geom_line(aes(y=ypred,x=x),size=1,color="red")+
geom_ribbon(aes(ymax=ymax,ymin=ymin,x=x),alpha=0.2,color="red")+
coord_cartesian(ylim=c(0,1000))
Run Code Online (Sandbox Code Playgroud)
Dat<-structure(list(Lepidoptera = c(0L, 0L, 1L, 0L, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在数据集上运行 xgboost 回归模型,而不会丢失任何数据。
# Run GBM on training dataset
# Create xgboost object
pts_xgb = xgb.XGBRegressor(objective="reg:squarederror", missing=None, seed=42)
# Fit xgboost onto data
pts_xgb.fit(X_train
,y_train
,verbose=True
,early_stopping_rounds=10
,eval_metric='rmse'
,eval_set=[(X_test,y_test)])
Run Code Online (Sandbox Code Playgroud)
模型创建似乎工作正常,我使用以下命令确认 X_train 和 y_train 没有空值:
print(X_train.isnull().values.sum()) # prints 0
print(y_train.isnull().values.sum()) # prints 0
Run Code Online (Sandbox Code Playgroud)
但是当我运行以下代码时,出现以下错误。
代码:
pts_xgb.score(X_train,y_train)
Run Code Online (Sandbox Code Playgroud)
错误:
---------------------------------------------------------------------------
XGBoostError Traceback (most recent call last)
<ipython-input-37-39b223d418b2> in <module>
----> 1 pts_xgb.score(X_train_test,y_train_test)
/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sklearn/base.py in score(self, X, y, sample_weight)
551
552 from .metrics import r2_score
--> 553 y_pred = self.predict(X)
554 return r2_score(y, y_pred, …Run Code Online (Sandbox Code Playgroud) predict ×10
r ×5
glmmtmb ×2
keras ×2
python ×2
tensorflow ×2
automl ×1
emmeans ×1
ggeffects ×1
ggplot2 ×1
h2o ×1
lme4 ×1
load ×1
mixed-models ×1
model ×1
multi-gpu ×1
na ×1
ordinal ×1
panel-data ×1
plm ×1
prediction ×1
regression ×1
save ×1
xgboost ×1