2014-05-12 14 views
10

मैं एक साधारण काम के साथ संघर्ष कर रहा हूं। मैं तैरता जो करने के लिए मैं दो गाऊसी कर्नेल के साथ एक गाऊसी मिश्रण मॉडल फिट करने के लिए चाहते हैं का एक वेक्टर है:मैं विज्ञान-सीखने के तहत एक फिट गाऊसी मिश्रण मॉडल के लिए संभाव्यता घनत्व समारोह कैसे प्लॉट कर सकता हूं?

from sklearn.mixture import GMM 

gmm = GMM(n_components=2) 
gmm.fit(values) # values is numpy vector of floats 

मैं अब मिश्रण मॉडल मेरे द्वारा बनाए गए के लिए प्रायिकता घनत्व समारोह साजिश चाहते हैं, लेकिन मैं ऐसा करने के तरीके पर कोई दस्तावेज नहीं दिख रहा है। मुझे सबसे अच्छा कैसे चलना चाहिए?

संपादित करें:

Here डेटा के वेक्टर मैं फिटिंग कर रहा हूँ है।

from sklearn.mixture import GMM 
from matplotlib.pyplot import * 
import numpy as np 

try: 
    import cPickle as pickle 
except: 
    import pickle 

with open('/path/to/kde.pickle') as f: # open the data file provided above 
    kde = pickle.load(f) 

gmm = GMM(n_components=2) 
gmm.fit(kde) 

x = np.linspace(np.min(kde), np.max(kde), len(kde)) 

# Plot the data to which the GMM is being fitted 
figure() 
plot(x, kde, color='blue') 

enter image description here

# My half-baked attempt at replicating the scipy example 
fit = gmm.score_samples(x)[0] 
plot(x, fit, color='red') 

सज्जित वक्र मैं क्या उम्मीद थी की तरह कुछ भी नहीं दिखता है: और नीचे मैं चीजों को कैसे कर रहा हूँ के एक अधिक विस्तृत उदाहरण है। यह गॉसियन भी नहीं लगता है, जो थोड़ा अजीब है क्योंकि इसे गाऊशियन प्रक्रिया द्वारा उत्पादित किया गया था। मैं पागल हो रहा हूँ?

+1

उपयोग 'साजिश (एक्स, np.exp (फिट), color = 'लाल')' बजाय। क्योंकि 'gmm.score_samples'' लॉग' संभावना देता है। – emeth

+0

@blz डेटा वेक्टर के लिंक की समय सीमा समाप्त हो गई है। – shahensha

उत्तर

1

में से एक पर एक नजर डालें Github

पर उदाहरण scikit सीखने https://github.com/scikit-learn/scikit-learn/blob/master/examples/mixture/plot_gmm_pdf.py

विचार meshgrid उत्पन्न करते हैं, उनके scoregmm से मिलता है, और यह साजिश है।

उदाहरण से पता चलता

enter image description here

+0

मैं अपने अनौपचारिक डेटा के लिए उसी ट्यूटोरियल को लागू करने का प्रयास कर रहा हूं, लेकिन ऐसा कोई भाग्य नहीं है। क्या आप मेरे संपादन को देखकर बुरा लगेगा? हो सकता है कि वे बताएंगे कि मैं कहां गड़बड़ कर रहा हूं ... – blz

1

मैंने इस धागे और अन्य में उल्लिखित कुछ उदाहरणों का पालन किया और समाधान के करीब पहुंचने में कामयाब रहे, लेकिन अंतिम संभावना घनत्व समारोह एक को एकीकृत नहीं करता है। मुझे लगता है, कि मैं इसके लिए एक और धागे में सवाल पोस्ट करूंगा।

import ntumpy as np 
import matplotlib.pyplot as plt 
from sklearn.mixture import GaussianMixture 

np.random.seed(1) 

mus = np.array([[0.2], [0.8]]) 
sigmas = np.array([[0.1], [0.1]]) ** 2 
gmm = GaussianMixture(2) 
gmm.means_ = mus 
gmm.covars_ = sigmas 
gmm.weights_ = np.array([0.5, 0.5]) 

#Fit the GMM with random data from the correspondent gaussians 
gaus_samples_1 = np.random.normal(mus[0], sigmas[0], 10).reshape(10,1) 
gaus_samples_2 = np.random.normal(mus[1], sigmas[1], 10).reshape(10,1) 
fit_samples = np.concatenate((gaus_samples_1, gaus_samples_2)) 
gmm.fit(fit_samples) 

fig = plt.figure() 
ax = fig.add_subplot(111) 
x = np.linspace(0, 1, 1000).reshape(1000,1) 
logprob = gmm.score_samples(x) 
pdf = np.exp(logprob) 
#print np.max(pdf) -> 19.8409464401 !? 
ax.plot(x, pdf, '-k') 
plt.show() 

Here is the resulting plot

+0

यह संभाव्यता घनत्व समारोह में एक से बड़े मानों के बारे में मेरे प्रश्न का उत्तर देता है: https://math.stackexchange.com/questions/105455/how-can-a-probability घनत्व होने-अधिक से अधिक वन-एंड-एकीकृत-टू-वन – rauldg

संबंधित मुद्दे

 संबंधित मुद्दे