Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Re: Re: XML probabilistic trees

by dakkar (Hermit)
on Mar 23, 2003 at 15:03 UTC ( #245271=note: print w/replies, xml ) Need Help??


in reply to Re: Re: XML probabilistic trees
in thread XML probabilistic trees

So, you've got something like:

%nodes=( root => { parents => [], probs => [0.01]}, # P(root) some => { parents => ['n1'], probs => [0.74,0.21]}, # P(some|!root), P(some|root +) other =>{ parents => ['root','n1'], probs => [0.12,0.24, # P(other|!root,!some), P(ot +her|!root,some) 0.81,0.18]}, # P(other|root,!some), P(oth +er|root,some) );

I choose an array to represent the join probabilities because I thought it would be the easiest way. You get the entry you need with something like:

# the state you start from %state=(root=>1,some=>0); # let's get P(other|root,!some) $i=0; for @{$nodes{other}{parents}} { $i=($i<<2)+$state{$_} # this is a simple encoding. Just use the same +for updating and accessing } $prob=$nodes{other}{probs}[$i];

When you have trained your network, you can dump it using XML::Simple:

use XML::Simple; print XMLout(\%nodes);

I think this code should work as well with full-fledged belief networks, since I'm using names to refer to nodes, instead of nesting their representation in the XML tree.

-- 
        dakkar - Mobilis in mobile

Replies are listed 'Best First'.
Re: Re: Re: Re: XML probabilistic trees
by matth (Monk) on Mar 25, 2003 at 10:13 UTC
    Out of interest. Can anyone tell me why, when I print out with the command:
    print XMLout(\%nodes);
    That the hashed array is not printed out, as the XML form, in the order that it is presented within the program. Also. Can anyone please inform me whether it is easy (with an XML Perl module) to retrieve data, that is nested within tags, with reference to the ordered position in which identical and tandem tags are presented.

      Sorry, I think you lost me there...

      Aht do you mean by 'hashed array'? In Perl, a hash is a function from strings to scalars (a dictionary, a map, ...), an array is a function from integers to scalars (some call it a vector)

      If you meant 'why is the order of the hash keys not preserved?', then the answer is: it's not supposed to. In a hash the order is not important, only the correspondance between keys (which can't be repeated) and their associated values is.

      And for getting the values positionally, read the documentation for XML::Simple, there are various options to specify how to treat repeated elements.

      -- 
              dakkar - Mobilis in mobile
      

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://245271]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2022-05-22 02:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (78 votes). Check out past polls.

    Notices?