<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14">
  <compounddef id="classforpy_1_1_entropy_gain" kind="class" language="C++" prot="public">
    <compoundname>forpy::EntropyGain</compoundname>
    <basecompoundref refid="classforpy_1_1_i_gain_calculator" prot="public" virt="non-virtual">forpy::IGainCalculator</basecompoundref>
    <includes refid="entropygain_8h" local="no">entropygain.h</includes>
      <sectiondef kind="private-attrib">
      <memberdef kind="variable" id="classforpy_1_1_entropy_gain_1ac1a8edc182fcd0afb6873327f0f002aa" prot="private" static="no" mutable="no">
        <type>std::shared_ptr&lt; <ref refid="classforpy_1_1_i_entropy_function" kindref="compound">IEntropyFunction</ref> &gt;</type>
        <definition>std::shared_ptr&lt;IEntropyFunction&gt; forpy::EntropyGain::entropy_function</definition>
        <argsstring></argsstring>
        <name>entropy_function</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="65" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" bodystart="65" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="friend">
      <memberdef kind="friend" id="classforpy_1_1_entropy_gain_1ab2f44cbb59a08132f4c843e5225bba0e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>friend class</type>
        <definition>friend class cereal::access</definition>
        <argsstring></argsstring>
        <name>cereal::access</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="67" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" bodystart="67" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1abc43e0916178b292c4e31b4e2cfc3a29" prot="public" static="no" const="no" explicit="yes" inline="yes" virt="non-virtual">
        <type></type>
        <definition>forpy::EntropyGain::EntropyGain</definition>
        <argsstring>(const std::shared_ptr&lt; IEntropyFunction &gt; &amp;entropy_function)</argsstring>
        <name>EntropyGain</name>
        <param>
          <type>const std::shared_ptr&lt; <ref refid="classforpy_1_1_i_entropy_function" kindref="compound">IEntropyFunction</ref> &gt; &amp;</type>
          <declname>entropy_function</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>entropy_function</parametername>
</parameternamelist>
<parameterdescription>
<para>shared(IEntropyFunction) The entropy to use for gain calculation. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="40" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" bodystart="40" bodyend="42"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1af061e2eaa35f38a0be49e7498bcaae38" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>float</type>
        <definition>float forpy::EntropyGain::approx</definition>
        <argsstring>(const std::vector&lt; float &gt; &amp;members_numbers_left, const std::vector&lt; float &gt; &amp;members_numbers_right)</argsstring>
        <name>approx</name>
        <reimplements refid="classforpy_1_1_i_gain_calculator_1a3d8dadb6439f48d793f5436dd1e1ff90">approx</reimplements>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_left</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_right</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Gets a gain approximation that can be used inside an <computeroutput>argmax</computeroutput> function. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="45" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1a08a2311df694a241bb2ee8a243f48b13" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>float</type>
        <definition>float forpy::EntropyGain::operator()</definition>
        <argsstring>(const float &amp;current_entropy, const std::vector&lt; float &gt; &amp;members_numbers_left, const std::vector&lt; float &gt; &amp;members_numbers_right)</argsstring>
        <name>operator()</name>
        <reimplements refid="classforpy_1_1_i_gain_calculator_1ad76035ac7f74d1a0aca63a178a2f6d01">operator()</reimplements>
        <param>
          <type>const float &amp;</type>
          <declname>current_entropy</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_left</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_right</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Calculates the information gain. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="49" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1ae1cf8dc30d70ceac375c2299c773ae9a" prot="public" static="no" const="no" explicit="no" inline="no" virt="virtual">
        <type>float</type>
        <definition>float forpy::EntropyGain::operator()</definition>
        <argsstring>(const std::vector&lt; float &gt; &amp;members_numbers_left, const std::vector&lt; float &gt; &amp;members_numbers_right)</argsstring>
        <name>operator()</name>
        <reimplements refid="classforpy_1_1_i_gain_calculator_1adf9ec81579274ee28aa1b3268be2dd0f">operator()</reimplements>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_left</declname>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>members_numbers_right</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Calculates the information gain. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="54" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1ad72835fdfb74ed51d26724b00386289e" prot="public" static="no" const="yes" explicit="no" inline="no" virt="virtual">
        <type>bool</type>
        <definition>bool forpy::EntropyGain::operator==</definition>
        <argsstring>(const IGainCalculator &amp;rhs) const</argsstring>
        <name>operator==</name>
        <reimplements refid="classforpy_1_1_i_gain_calculator_1ac8305de8f987aeae48f4cd971afa69e3">operator==</reimplements>
        <param>
          <type>const <ref refid="classforpy_1_1_i_gain_calculator" kindref="compound">IGainCalculator</ref> &amp;</type>
          <declname>rhs</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Deep equality comparison. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="57" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1ad5977372140dea068c335ff34ad1984b" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
        <type>std::shared_ptr&lt; <ref refid="classforpy_1_1_i_entropy_function" kindref="compound">IEntropyFunction</ref> &gt;</type>
        <definition>std::shared_ptr&lt;IEntropyFunction&gt; forpy::EntropyGain::getEntropy_function</definition>
        <argsstring>() const</argsstring>
        <name>getEntropy_function</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="59" column="1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="protected-func">
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1a3893d1f89e9d4510c54ac0840cd51b01" prot="protected" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type></type>
        <definition>forpy::EntropyGain::EntropyGain</definition>
        <argsstring>()</argsstring>
        <name>EntropyGain</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="62" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" bodystart="62" bodyend="62"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="classforpy_1_1_entropy_gain_1a3d0bd4d355f29fee3f14ada4db641b8a" prot="private" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>class Archive</type>
          </param>
        </templateparamlist>
        <type>void</type>
        <definition>void forpy::EntropyGain::serialize</definition>
        <argsstring>(Archive &amp;ar, const uint &amp;)</argsstring>
        <name>serialize</name>
        <param>
          <type>Archive &amp;</type>
          <declname>ar</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &amp;</type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="69" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" bodystart="69" bodyend="72"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Calculates the gain as difference of current entropy and the weighted sum of subgroup entropies. </para>    </briefdescription>
    <detaileddescription>
<para>Works correctly up to a total sum of elements of min(numeric_limits&lt;float&gt;::max(), numeric_limits&lt;input_dtype&gt;::max()) and the limitations of the selected entropy function. Speed optimized function that does no checks in release mode!</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>input_dtype</parametername>
</parameternamelist>
<parameterdescription>
<para>The datatype for counting class members. This might be a float if sample weights are used. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>    </detaileddescription>
    <inheritancegraph>
      <node id="60">
        <label>forpy::EntropyGain</label>
        <link refid="classforpy_1_1_entropy_gain"/>
        <childnode refid="61" relation="public-inheritance">
        </childnode>
      </node>
      <node id="61">
        <label>forpy::IGainCalculator</label>
        <link refid="classforpy_1_1_i_gain_calculator"/>
      </node>
    </inheritancegraph>
    <collaborationgraph>
      <node id="62">
        <label>forpy::EntropyGain</label>
        <link refid="classforpy_1_1_entropy_gain"/>
        <childnode refid="63" relation="public-inheritance">
        </childnode>
      </node>
      <node id="63">
        <label>forpy::IGainCalculator</label>
        <link refid="classforpy_1_1_i_gain_calculator"/>
      </node>
    </collaborationgraph>
    <location file="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" line="34" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/gains/entropygain.h" bodystart="34" bodyend="73"/>
    <listofallmembers>
      <member refid="classforpy_1_1_entropy_gain_1af061e2eaa35f38a0be49e7498bcaae38" prot="public" virt="virtual"><scope>forpy::EntropyGain</scope><name>approx</name></member>
      <member refid="classforpy_1_1_entropy_gain_1ab2f44cbb59a08132f4c843e5225bba0e" prot="public" virt="non-virtual"><scope>forpy::EntropyGain</scope><name>cereal::access</name></member>
      <member refid="classforpy_1_1_entropy_gain_1ac1a8edc182fcd0afb6873327f0f002aa" prot="private" virt="non-virtual"><scope>forpy::EntropyGain</scope><name>entropy_function</name></member>
      <member refid="classforpy_1_1_entropy_gain_1abc43e0916178b292c4e31b4e2cfc3a29" prot="public" virt="non-virtual"><scope>forpy::EntropyGain</scope><name>EntropyGain</name></member>
      <member refid="classforpy_1_1_entropy_gain_1a3893d1f89e9d4510c54ac0840cd51b01" prot="protected" virt="non-virtual"><scope>forpy::EntropyGain</scope><name>EntropyGain</name></member>
      <member refid="classforpy_1_1_entropy_gain_1ad5977372140dea068c335ff34ad1984b" prot="public" virt="non-virtual"><scope>forpy::EntropyGain</scope><name>getEntropy_function</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1a5bf22f6a9ec975327b1105c56ebd83ba" prot="protected" virt="non-virtual"><scope>forpy::EntropyGain</scope><name>IGainCalculator</name></member>
      <member refid="classforpy_1_1_entropy_gain_1a08a2311df694a241bb2ee8a243f48b13" prot="public" virt="virtual"><scope>forpy::EntropyGain</scope><name>operator()</name></member>
      <member refid="classforpy_1_1_entropy_gain_1ae1cf8dc30d70ceac375c2299c773ae9a" prot="public" virt="virtual"><scope>forpy::EntropyGain</scope><name>operator()</name></member>
      <member refid="classforpy_1_1_entropy_gain_1ad72835fdfb74ed51d26724b00386289e" prot="public" virt="virtual"><scope>forpy::EntropyGain</scope><name>operator==</name></member>
      <member refid="classforpy_1_1_entropy_gain_1a3d0bd4d355f29fee3f14ada4db641b8a" prot="private" virt="non-virtual"><scope>forpy::EntropyGain</scope><name>serialize</name></member>
      <member refid="classforpy_1_1_i_gain_calculator_1a8685755458c105cb2af8c0047a511443" prot="public" virt="virtual"><scope>forpy::EntropyGain</scope><name>~IGainCalculator</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
