标签: predict

如何在面板数据回归中处理NA?

我试图预测包含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)

r predict na panel-data plm

8
推荐指数
1
解决办法
3189
查看次数

从 Keras model.evaluate 和 model.predict 得到不同的结果

我已经训练了模型中使用word2vec和使用keras的LSTM模型来预测主题类别,并有大约训练期间98%的准确率,我保存的模型,然后装到另一个文件试图在测试集,我用model.evaluatemodel.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)

python machine-learning predict deep-learning keras

8
推荐指数
1
解决办法
2452
查看次数

H2O AutoML 错误测试/验证数据集有一个非分类列,它在训练数据中是分类的” on predict

我已经训练并保存了我的 H2O AutoML 模型。重新加载后,当我使用预测方法时,出现以下错误:java.lang.IllegalArgumentException:测试/验证数据集有一个非分类列“响应”,它在训练数据中是分类的

我在创建模型时没有指定任何编码,但我现在收到此错误。任何人都可以帮助我解决这个问题。

任何帮助将不胜感激。

predict h2o automl

8
推荐指数
1
解决办法
1844
查看次数

混合效应模型的 ggpredict() 和 ggemmeans() 计算的预测不同:为什么?

我使用1.3.0包中的函数ggpredict()和函数来计算混合效应模型的平均估计值和置信区间(以下简称:CI)。这些功能依赖于ggemmeans()ggeffectspredict()emmeans()使其输出对 ggplot 友好。这两个函数预测/估计的值的平均值和 CI 均不同。为什么?

\n

以下可重现的示例基于数据集 RIKZ(Janssen e Mulder 2005;Zuur 等人 2007),该数据集着眼于与平均潮汐水位(NAP,以米为单位)相比,物种丰富度(物种数量)如何随采样站高度变化)和暴露水平(具有三个级别的因素:低、中、高):

\n
rm(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)\n
Run Code Online (Sandbox Code Playgroud)\n

在这里,我使用泊松分布残差将广义混合效应模型拟合到数据中glmmTMB()

\n
mem1 <- glmmTMB(Richness ~ NAP+Exposure + (1 | Beach),\n                family="poisson",\n                data = RIKZ, REML=T)\n
Run Code Online (Sandbox Code Playgroud)\n

模型预测和 CI 根据ggeffects::ggpredict()考虑随机效应的不确定性(参见本页了解为何考虑或不考虑):

\n
richness.predicted <- ggpredict(mem1, \nterms=c("NAP", "Exposure"), type="fixed")\n
Run Code Online (Sandbox Code Playgroud)\n

同一模型的预测和 CI根据ggeffects::ggemmeans() …

r predict emmeans glmmtmb ggeffects

8
推荐指数
1
解决办法
721
查看次数

预测 - 回归的神经网络

我试图预测自住房屋的中位数值,这是一个效果良好的例子.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.

regression r prediction predict neural-network

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

使用 `ordinal::clmm` 模型对新数据进行预测

我有一些重复的措施,顺序响应数据:

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)

r ordinal predict mixed-models

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

如何使用 tf.saved_model 加载模型并调用预测函数 [TENSORFLOW 2.0 API]

我对张量流非常陌生,尤其是 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)

训练我的模型后,我想保存它,所以这里开始产生疑问,这是我的操作方式,但不确定这是正确的方法: …

load model save predict tensorflow

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

如何在 Tensorflow 2.0 + Keras 中进行并行 GPU 推理?

让我们从我刚开始接触 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

Tensorflow:同时预测 GPU 和 CPU

我对这个问题的心理斗争主要是

  • TF 1.xtf.Session()基于 TF2.0 中隐含的会话,如果我理解正确,我阅读的解决方案对每个 GPU 使用单独的会话,我真的不知道如何在 TF2.0 中复制它
  • 我不知道如何在model.predict()特定会话中使用该方法。

我知道这个问题可能没有很好地表述,但我总结为:

有没有人知道如何model.predict()在 TF2.0 中在多个 GPU 上运行 Keras 风格(以并行方式对每个 GPU 上的不同批次数据进行推理)?

在此先感谢您的帮助。

predict multi-gpu keras tensorflow tensorflow2.0

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

如何围绕模型估计手动绘制 SE/CI

我正在尝试在数据之上手动绘制模型估计值。我真正的问题远比这复杂得多,所以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)

r predict ggplot2 lme4 glmmtmb

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

尝试运行 xgboost.predict 或 xgboost.score 时出现奇怪的错误

我正在尝试在数据集上运行 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)

python predict xgboost

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