19

के साथ पैरामीटर सीखें। मैं बेयसियन नेटवर्क बनाने के लिए विंडोज़ पर python3.x के लिए सबसे उपयुक्त टूल खोज रहा हूं, डेटा से इसके पैरामीटर सीखता हूं और अनुमान लगाता हूं।Bayesian नेटवर्क बनाएं और Python3.x

नेटवर्क संरचना मैं अपने आप को परिभाषित करना चाहते हैं इस प्रकार है: enter image description here

यह this कागज से लिया जाता है।

सभी चर "आकार" और "ग्रैपपोज" को छोड़कर अलग-अलग हैं (और केवल 2 संभावित राज्य ले सकते हैं), जो निरंतर हैं और गॉसियन के मिश्रण के रूप में मॉडलिंग किए जाने चाहिए।

लेखक उम्मीद-मैक्ज़िमाइज़ेशन एल्गोरिथ्म का उपयोग सटीक अनुमान गणना करने के लिए सशर्त संभावना तालिकाओं के लिए मानकों और जंक्शन-ट्री एल्गोरिथ्म जानने के लिए।

जैसा कि मुझे लगता है कि मर्फी द्वारा बेयस नेट टूलबॉक्स के साथ मैटलैब में सभी को एहसास हुआ है।

मैं अजगर में कुछ इसी तरह खोज करने के लिए करने की कोशिश की और यहाँ मेरी परिणाम हैं:

  1. अजगर बायेसियन नेटवर्क उपकरण बॉक्स http://sourceforge.net/projects/pbnt.berlios/ (http://pbnt.berlios.de/)। वेब साइट काम नहीं करती है, प्रोजेक्ट समर्थित नहीं लगता है।
  2. बेयसपी https://github.com/bayespy/bayespy मुझे लगता है कि मुझे वास्तव में यही चाहिए, लेकिन मैं नेटवर्क संरचना के निर्माण के दृष्टिकोण को समझने के लिए अपने मामले के समान कुछ उदाहरण ढूंढने में असफल रहा।
  3. पीईएमसी एक शक्तिशाली मॉड्यूल प्रतीत होता है, लेकिन मुझे इसे विंडोज 64, पायथन 3.3 पर आयात करने में समस्याएं हैं। जब मैं विकास संस्करण

    चेतावनी (theano.configdefaults) स्थापित करता हूं तो मुझे त्रुटि मिलती है: g ++ पता नहीं चला! थेनो अनुकूलित सी-कार्यान्वयन (सीपीयू और जीपीयू दोनों के लिए) निष्पादित करने में असमर्थ रहेगा और पायथन कार्यान्वयन के लिए डिफ़ॉल्ट होगा। प्रदर्शन गंभीर रूप से अपमानित हो जाएगा। इस चेतावनी को हटाने के लिए, थानो झंडे को एक खाली स्ट्रिंग पर सेट करें।

अद्यतन:

  1. libpgm (http://pythonhosted.org/libpgm/)। वास्तव में मुझे क्या चाहिए, दुर्भाग्य से पायथन 3.x
  2. द्वारा समर्थित बहुत ही सक्रिय रूप से सक्रिय रूप से लाइब्रेरी विकसित करना: PGMPY। दुर्भाग्यवश निरंतर चर और डेटा से सीखना अभी तक समर्थित नहीं है। https://github.com/pgmpy/pgmpy/

कोई भी सलाह और ठोस उदाहरणों की अत्यधिक सराहना की जाएगी।

+0

मैंने कभी कोशिश नहीं की है लेकिन आप https://pypi.python.org/pypi/BNfinder/2.0.4 – runDOSrun

+0

@runDOSrun धन्यवाद देख सकते हैं। दुर्भाग्य से पाइथन 3.x – Spu

+2

पर पोर्ट नहीं किया गया है क्या आपने विज्ञान-सीखने की कोशिश की है? http://scikit-learn.org/stable/modules/naive_bayes.html ऐसा लगता है जो आप चाहते हैं, और कई अन्य एमएल एल्गोरिदम जो पायथन 3.x में काम करते हैं। – IVlad

उत्तर

6

ऐसा लगता है कि pomegranate को हाल ही में बेयसियन नेटवर्क शामिल करने के लिए अपडेट किया गया था। मैंने इसे स्वयं नहीं किया है, लेकिन इंटरफ़ेस अच्छा और sklearn-ish दिखता है।

+0

हां, बहुत आशाजनक लग रहा है, धन्यवाद। मुझे इसे एक मौका और देना होगा। आगे की तरफ देखे जाने पर निरंतर चर का समर्थन किया जाएगा। – Spu

+1

@ एसपीयू क्या आपने इसे आजमाया? आपके अनुभव क्या थे? –

0

पीआईएमसी की जी ++ समस्या के लिए, मैं अत्यधिक अनुशंसा करता हूं कि जी ++ इंस्टॉलेशन किया जाए, यह नमूना प्रक्रिया को काफी हद तक बढ़ाएगा, अन्यथा आपको इस चेतावनी के साथ रहना होगा और 2000 नमूना प्रक्रिया के लिए 1 घंटे तक बैठना होगा।

चेतावनी तय करने का तरीका यह है: 1. जी ++ स्थापित करें, सिलाई डाउनलोड करें और g ++ इंस्टॉल करें, आप इसे Google पर कर सकते हैं।इसे जांचने के लिए, बस "cmd" पर जाएं और "g ++" टाइप करें, अगर यह कहता है कि "इनपुट फ़ाइल की आवश्यकता है", तो, आपको g ++ इंस्टॉल किया गया है। 2. पायथन पैकेज स्थापित करें: mingw, libpython 3. पायथन पैकेज स्थापित करें: theano

यह समस्या ठीक होनी चाहिए।

मैं वर्तमान में आपके साथ एक ही समस्या पर काम कर रहा हूं, शुभकामनाएं!

0

हमेशा के लिए पार्टी के लिए देर हो चुकी है, लेकिन मैंने जेपी टाइप का उपयोग कर बेयससेवर जावा एपीआई को लपेट लिया है; यह सभी कार्यक्षमता है कि आप की जरूरत हो सकता है नहीं, लेकिन आप की तरह कुछ का उपयोग करके उपरोक्त नेटवर्क बनाने होगा:

from bayesianpy.network import Builder as builder 
import bayesianpy.network 

nt = bayesianpy.network.create_network() 

# where df is your dataframe 
task = builder.create_discrete_variable(nt, df, 'task') 

size = builder.create_continuous_variable(nt, 'size') 
grasp_pose = builder.create_continuous_variable(nt, 'GraspPose') 

builder.create_link(nt, size, grasp_pose) 
builder.create_link(nt, task, grasp_pose) 

for v in ['fill level', 'object shape', 'side graspable']: 
    va = builder.create_discrete_variable(nt, df, v) 
    builder.create_link(nt, va, grasp_pose) 
    builder.create_link(nt, task, va) 

# write df to data store 
with bayesianpy.data.DataSet(df, bayesianpy.utils.get_path_to_parent_dir(__file__), logger) as dataset: 
    model = bayesianpy.model.NetworkModel(nt, logger) 
    model.train(dataset) 

    # to query model multi-threaded 
    results = model.batch_query(dataset, [bayesianpy.model.QueryModelStatistics()], append_to_df=False) 

मैं Bayes सर्वर के साथ संबद्ध नहीं कर रहा हूँ - और अजगर आवरण 'सरकारी' नहीं है (यदि आप उपयोग कर सकते हैं सीधे पाइथन के माध्यम से जावा एपीआई)। मेरा रैपर उन कार्यों पर कुछ मान्यताओं और स्थानों की सीमाएं बनाता है जिन्हें मैं बहुत अधिक उपयोग नहीं करता हूं। रेपो यहां है: github.com/morganics/bayesianpy

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