使用 scikit-learn 预测给定 "y" 的数据向量 "x"?

Use scikit-learn to predict data vector "x" given "y"?

使用 Scikit 学习,基本思想(例如回归)是在拟合模型后给定数据向量 "x" 预测一些 "y"。典型代码如下所示(改编自 here):

from sklearn.svm import SVR
import numpy as np
n_samples, n_features = 10, 5
np.random.seed(0)
y = np.random.randn(n_samples)
X = np.random.randn(n_samples, n_features)
clf = SVR(C=1.0, epsilon=0.2)
clf.fit(X[:-1], y[:-1]) 
prediction = clf.predict(X[-1])
print 'prediction:', prediction[0]
print 'actual:', y[-1]

我的问题是:是否可以在给定 "x" 和 "y" 的情况下拟合某些模型(也许不是 SVR),然后在给定 "y" 的情况下预测 "x"。换句话说,像这样:

clf = someCLF()
clf.fit(x[:-1], y[:-1])
prediction = clf.predict(y[-1])
#where predict would return the data vector that could produce y[-1]

没有。有许多向量 (X) 可能导致相同的结果 (Y),反之亦然。

如果您需要预测一开始用作 X 的数据,您可能会考虑更改 X 和 Y。

在 scikit 中不可能,不。

你问的是 x 和 y 的生成模型或联合模型。如果您适合这样的模型,您可以对分布 p(x, y) 或条件分布 p(x | y) 或 p(y | x) 中的任一个进行推断。朴素贝叶斯是最流行的生成模型,但您无法使用 scikit 的版本进行上述推理。除了微不足道的问题,它还会对任何事情产生错误的估计。在给定其余变量的情况下,拟合好的连接模型比一个变量的条件模型要难得多。