gpt4 book ai didi

python - 如何从 BernoulliRBM 获得分数

转载 作者:行者123 更新时间:2023-12-01 09:33:48 24 4
gpt4 key购买 nike

我正在尝试使用sklearn.neural_network.BernoulliRBM与虹膜数据集:

from sklearn import datasets
iris = datasets.load_iris()
collist = ['SL', 'SW', 'PL', 'PW']
dat = pd.DataFrame(data=iris.data, columns=collist)

from sklearn.neural_network import BernoulliRBM
model = BernoulliRBM(n_components=2)
scores = model.fit_transform(dat)
print(scores.shape)
print(scores)

但是,我只得到 1 作为所有行的输出:

(150, 2)
[[1. 1.]
[1. 1.]
[1. 1.]
[1. 1.]
[1. 1.] # same for all rows

我能否获得与主成分分析中获得的类似于各行分数的值?否则我怎样才能从 RBM 获得一些有用的数字?我尝试了 model.score_samples(dat) ,但这也为绝大多数行提供了 0 值。

最佳答案

根据documentation :

The model makes assumptions regarding the distribution of inputs. At the moment, scikit-learn only provides BernoulliRBM, which assumes the inputs are either binary values or values between 0 and 1, each encoding the probability that the specific feature would be turned on.

由于您的 dat 值均大于 1,我猜测该模型会将所有输入数据截断为 1.0。例如,如果您应用标准化:

from sklearn.preprocessing import normalize
scores = model.fit_transform(normalize(dat))

您将获得一些变化的值:

array([[0.23041219, 0.23019722],
[0.23046652, 0.23025144],
...,
[0.23159369, 0.23137678],
[0.2316786 , 0.23146158]])

由于您的输入特征必须具有概率解释,因此您需要考虑对于您正在解决的特定问题,如果任何归一化是合理的,该怎么办。

关于python - 如何从 BernoulliRBM 获得分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49713947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com