简短的回答:您只需不使用GMM进行分类。
长答案...
从答案到相关主题,Multiclass classification using Gaussian Mixture Models with scikit learn(原文为重点):
高斯混合物不是分类器。这是密度估算
方法,并期望其组成部分能够神奇地与
你的课不是一个好主意。 [...] GMM只是试图拟合高斯混合体
到您的数据中,但是没有任何强制性
根据标签(甚至没有在标签中提供)
呼叫)。这有时会起作用-但仅适用于琐碎的问题
问题,班级之间的间隔是如此之大,以至于朴素贝叶斯
通常可以使用,但是对于
问题。
以及受访者本人的评论(再次强调原文):
如答案中所述-GMM 不是分类器,因此请问您是否
正确使用“ GMM分类器”是无法回答的。使用
GMM作为分类器在定义上是不正确的,没有“有效”
在不是这个模型的问题中使用它的方式
设计要做。您可以做的是建立一个适当的生成器
每个班级的模型。换句话说,构造您自己的分类器
您适合一个GMM 每个标签,然后使用分配的概率
实际分类。然后,这是一个适当的分类器。看到
github.com/scikit-learn/scikit-learn/pull/2468
(对于价值而言,您可能会注意到respondent是DeepMind的研究科学家,并且是第一个被授予machine-learning
gold badge的人,网址为这样)
进一步详细说明(这就是为什么我没有简单地将问题标记为重复):
在scikit-learn文档中确实有一个标题为GMM classification的帖子:
用于分类的高斯混合模型演示。
我想早在2017年,当上面的回复写出来的时候,就不存在了。但是,深入研究提供的代码,您将意识到GMM模型实际上是按照上面lejlot提出的方式在那里使用的;没有以classifier.fit(X_train,y_train)
形式出现的没有语句-所有用法都以classifier.fit(X_train)
的形式出现,即不使用实际标签。>
这正是我们希望从类似 clustering 的算法(实际上就是GMM所期望的),而不是分类器所期望的。再次,scikit-learn提供了在GMM fit
method中提供标签的选项:
fit
((自我,X,y =无)
您在这里实际使用过的
(正如上面的回答所暗示的那样,也许在2017年还不存在),但是,鉴于我们对GMM及其用法的了解,目前尚不清楚该参数在哪里因为(并且,我可以说,scikit-learn在一些实践上占有一定的份额,这些实践从纯粹的 programming 角度来看似乎很明智,但是从 modeling 来看却毫无意义透视)。
最后一句话:尽管将随机种子(如评论中所建议的)固定为“工作”,但相信“分类器”可提供0.4到0.7之间的精度范围,具体取决于随机种子可以说不是一个好主意...
本文链接:https://www.f2er.com/3158293.html