Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何使用GPflow运行的GPC,通过简单的数据输入进行预测?无法在不同数据上运行示例笔记本中的代码_Python 3.x_Tensorflow2.0_Prediction_Gpflow - Fatal编程技术网

Python 3.x 如何使用GPflow运行的GPC,通过简单的数据输入进行预测?无法在不同数据上运行示例笔记本中的代码

Python 3.x 如何使用GPflow运行的GPC,通过简单的数据输入进行预测?无法在不同数据上运行示例笔记本中的代码,python-3.x,tensorflow2.0,prediction,gpflow,Python 3.x,Tensorflow2.0,Prediction,Gpflow,我试着在笔记本上对自己生成的数据运行代码,以证明该模型是否能够进行任何分类。 所以我创建了X和Y作为输入数据 X=np.array([-0.0259,-0.3579,-0.289,0.0356,0.0147,0.0234]).reshape(-1,1) Y=np.array([0,0,0,1,1,1]).reshape(-1,1) 选择X和Y中的值作为二进制逻辑,X中的负值等于Y中的0。X中的正值应归类为Y中的1 然后我创建了一个模型并对其进行了培训: Per = gpflow.kernel

我试着在笔记本上对自己生成的数据运行代码,以证明该模型是否能够进行任何分类。

所以我创建了X和Y作为输入数据

X=np.array([-0.0259,-0.3579,-0.289,0.0356,0.0147,0.0234]).reshape(-1,1)
Y=np.array([0,0,0,1,1,1]).reshape(-1,1)
选择X和Y中的值作为二进制逻辑,X中的负值等于Y中的0。X中的正值应归类为Y中的1

然后我创建了一个模型并对其进行了培训:

Per = gpflow.kernels.Periodic(gpflow.kernels.SquaredExponential())
model_Per = gpflow.models.VGP((X, Y), likelihood=gpflow.likelihoods.Bernoulli(), kernel=Per)
我试着用相同的X来预测Y作为模型训练的输入,只是想看看是否有正确的结果

Ypred, VARpred = model_Per.predict_y(X)
对于Ypred,我得到输出:

    <tf.Tensor: shape=(6, 1), dtype=float64, numpy=
array([[0.5],
       [0.5],
       [0.5],
       [0.5],
       [0.5],
       [0.5]])>

为VARpred

   <tf.Tensor: shape=(6, 1), dtype=float64, numpy=
array([[0.25],
       [0.25],
       [0.25],
       [0.25],
       [0.25],
       [0.25]])>

我试着,改变内核,组合内核,在预测前用Scipy进行优化,改变数据,但平均值和方差的输出总是相同的。我期待着,这个数据集的Ypred=Y


创建此分类模型时我做错了什么?

您必须实际优化您的模型。一旦你优化了它,结果实际上看起来非常合理。我不希望GP模型准确预测p=1——这意味着在这一点上观察到0的概率为0.0%,我只有在看到无限量的数据都表示1时才会相信


对于您使用的伯努利似然,方差与平均值具有决定性的相关性。如果y~Bernoulli,且平均值[y]=p,则Var[y]=p*(1-p)。对你来说,平均值是p=0.5,因此方差是0.5*(1-0.5)=0.25。

你必须实际优化你的模型。一旦你优化了它,结果实际上看起来非常合理。我不希望GP模型准确预测p=1——这意味着在这一点上观察到0的概率为0.0%,我只有在看到无限量的数据都表示1时才会相信


对于您使用的伯努利似然,方差与平均值具有决定性的相关性。如果y~Bernoulli,且平均值[y]=p,则Var[y]=p*(1-p)。对你来说,平均值是p=0.5,所以方差是0.5*(1-0.5)=0.25。

你能展示一下你是如何用Scipy训练它的吗?我使用了
opt=gpflow.optimizers.Scipy()opt.minimize(模型每训练损失,变量=模型每可训练变量)
这是文档记事本中的标准优化器经过优化后,我得到了
列表中每X一个都比0.5好,但不是1或0。是否有其他方法对一维数据进行分类?或者其他可以推荐的优化方法?您能展示一下如何使用Scipy对其进行培训吗?我使用了
opt=gpflow.optimizers.Scipy()opt.minimize(model\u Per.training\u loss,variables=model\u Per.trainiable\u variables)
这是文档记事本中的标准优化器经过优化后,我得到了
列表中每X一个都比0.5好,但不是1或0。是否有其他方法对一维数据进行分类?或者其他可以推荐的优化方法?