Я пометил 2D данные.В наборе 4 метки, и я знаю соответствие каждой точки ее метке.Я хотел бы, учитывая новую произвольную точку данных, найти вероятность того, что она имеет каждую из 4 меток.Он должен принадлежать одной и только одной из меток, поэтому вероятности должны составлять 1.
На данный момент я обучил 4 независимых GMM sklearn (sklearn.mixture.GaussianMixture
) на связанных точках данных.с каждой этикеткой.Следует отметить, что я не хочу обучать один GMM с 4 компонентами, потому что я уже знаю метки и не хочу кластеризоваться так, чтобы это было хуже, чем мои известные метки.(Может показаться, что есть способ предоставить Y=
метки для функции fit()
, но я не могу заставить ее работать).
На приведенном выше графике точки закрашены их известными метками, а контуры представляют четыре независимых GMM, приспособленных к этим 4 наборам точек.
Для новой точки я попытался вычислитьвероятность его метки двумя способами:
GaussianMixture.predict_proba()
: поскольку каждый независимый GMM имеет только одно распределение, это просто возвращает вероятность 1 для всех моделей.
GaussianMixture.score_samples()
: Согласно документации, этот возвращает «взвешенные логарифмические вероятности для каждой выборки».Моя процедура состоит в том, что для одного нового пункта я делаю четыре вызова этой функции от каждого из четырех независимо обученных GMM, представляющих каждое распределение выше.Здесь я получаю полуразумные результаты - обычно положительное число для правильной модели и отрицательные числа для каждой из трех неправильных моделей, с более запутанными результатами для точек вблизи пересекающихся границ распределения.Вот типичный отчетливый результат:
2.904136, -60.881554, -20.824841, -30.658509
Эта точка на самом деле связана с первой меткой и с наименьшей вероятностью будет второй меткой (самая дальняя)из второго раздачи).Моя проблема заключается в том, как преобразовать приведенные выше оценки в вероятности, которые составляют 1 и точно отражают вероятность того, что данная точка принадлежит одному и только одному из четырех распределений?Учитывая, что это 4 независимых модели, возможно ли это?Если нет, есть ли другой метод, который я упустил из виду, который позволил бы мне обучать GMM на основе известных меток и обеспечивал бы вероятность, равную 1?