<?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="classification__opt_8h" kind="file" language="C++">
    <compoundname>classification_opt.h</compoundname>
    <includes refid="global_8h" local="yes">../global.h</includes>
    <includes local="yes">../util/serialization/basics.h</includes>
    <includes refid="ientropyfunction_8h" local="yes">../impurities/ientropyfunction.h</includes>
    <includes refid="inducedentropy_8h" local="yes">../impurities/inducedentropy.h</includes>
    <includes refid="types_8h" local="yes">../types.h</includes>
    <includes refid="desk_8h" local="yes">../util/desk.h</includes>
    <includes refid="ithreshopt_8h" local="yes">./ithreshopt.h</includes>
    <includedby refid="fastclassopt_8h" local="yes">/Users/classner/git/forpy/include/forpy/threshold_optimizers/fastclassopt.h</includedby>
    <includedby refid="threshold__optimizers_8h" local="yes">/Users/classner/git/forpy/include/forpy/threshold_optimizers/threshold_optimizers.h</includedby>
    <incdepgraph>
      <node id="941">
        <label>functional</label>
      </node>
      <node id="917">
        <label>iomanip</label>
      </node>
      <node id="939">
        <label>../util/checks.h</label>
        <link refid="checks_8h"/>
        <childnode refid="940" relation="include">
        </childnode>
        <childnode refid="941" relation="include">
        </childnode>
        <childnode refid="938" relation="include">
        </childnode>
        <childnode refid="942" relation="include">
        </childnode>
        <childnode refid="925" relation="include">
        </childnode>
        <childnode refid="915" relation="include">
        </childnode>
      </node>
      <node id="938">
        <label>limits</label>
      </node>
      <node id="946">
        <label>./ithreshopt.h</label>
        <link refid="ithreshopt_8h"/>
        <childnode refid="915" relation="include">
        </childnode>
        <childnode refid="923" relation="include">
        </childnode>
        <childnode refid="947" relation="include">
        </childnode>
        <childnode refid="926" relation="include">
        </childnode>
        <childnode refid="945" relation="include">
        </childnode>
      </node>
      <node id="935">
        <label>mapbox/variant_cast.hpp</label>
      </node>
      <node id="916">
        <label>glog/logging.h</label>
      </node>
      <node id="914">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/classification_opt.h</label>
        <link refid="classification__opt_8h"/>
        <childnode refid="915" relation="include">
        </childnode>
        <childnode refid="923" relation="include">
        </childnode>
        <childnode refid="924" relation="include">
        </childnode>
        <childnode refid="937" relation="include">
        </childnode>
        <childnode refid="926" relation="include">
        </childnode>
        <childnode refid="945" relation="include">
        </childnode>
        <childnode refid="946" relation="include">
        </childnode>
      </node>
      <node id="944">
        <label>cmath</label>
      </node>
      <node id="930">
        <label>numeric</label>
      </node>
      <node id="921">
        <label>string</label>
      </node>
      <node id="920">
        <label>./version.h</label>
        <link refid="version_8h"/>
      </node>
      <node id="928">
        <label>map</label>
      </node>
      <node id="945">
        <label>../util/desk.h</label>
        <link refid="desk_8h"/>
        <childnode refid="915" relation="include">
        </childnode>
        <childnode refid="926" relation="include">
        </childnode>
      </node>
      <node id="932">
        <label>./util/hash.h</label>
        <link refid="hash_8h"/>
        <childnode refid="933" relation="include">
        </childnode>
        <childnode refid="925" relation="include">
        </childnode>
      </node>
      <node id="927">
        <label>Eigen/Dense</label>
      </node>
      <node id="924">
        <label>../impurities/ientropyfunction.h</label>
        <link refid="ientropyfunction_8h"/>
        <childnode refid="915" relation="include">
        </childnode>
        <childnode refid="923" relation="include">
        </childnode>
        <childnode refid="925" relation="include">
        </childnode>
        <childnode refid="926" relation="include">
        </childnode>
      </node>
      <node id="947">
        <label>../data_providers/idataprovider.h</label>
        <link refid="idataprovider_8h"/>
        <childnode refid="915" relation="include">
        </childnode>
        <childnode refid="923" relation="include">
        </childnode>
        <childnode refid="941" relation="include">
        </childnode>
        <childnode refid="925" relation="include">
        </childnode>
        <childnode refid="926" relation="include">
        </childnode>
        <childnode refid="934" relation="include">
        </childnode>
      </node>
      <node id="934">
        <label>./util/storage.h</label>
        <link refid="storage_8h"/>
        <childnode refid="935" relation="include">
        </childnode>
        <childnode refid="936" relation="include">
        </childnode>
      </node>
      <node id="925">
        <label>vector</label>
      </node>
      <node id="931">
        <label>utility</label>
      </node>
      <node id="923">
        <label>../util/serialization/basics.h</label>
      </node>
      <node id="943">
        <label>../util/exponentials.h</label>
        <link refid="exponentials_8h"/>
        <childnode refid="944" relation="include">
        </childnode>
        <childnode refid="915" relation="include">
        </childnode>
      </node>
      <node id="937">
        <label>../impurities/inducedentropy.h</label>
        <link refid="inducedentropy_8h"/>
        <childnode refid="923" relation="include">
        </childnode>
        <childnode refid="938" relation="include">
        </childnode>
        <childnode refid="925" relation="include">
        </childnode>
        <childnode refid="915" relation="include">
        </childnode>
        <childnode refid="939" relation="include">
        </childnode>
        <childnode refid="943" relation="include">
        </childnode>
        <childnode refid="924" relation="include">
        </childnode>
      </node>
      <node id="918">
        <label>iostream</label>
      </node>
      <node id="915">
        <label>../global.h</label>
        <link refid="global_8h"/>
        <childnode refid="916" relation="include">
        </childnode>
        <childnode refid="917" relation="include">
        </childnode>
        <childnode refid="918" relation="include">
        </childnode>
        <childnode refid="919" relation="include">
        </childnode>
        <childnode refid="920" relation="include">
        </childnode>
        <childnode refid="921" relation="include">
        </childnode>
        <childnode refid="922" relation="include">
        </childnode>
      </node>
      <node id="933">
        <label>cstddef</label>
      </node>
      <node id="922">
        <label>csignal</label>
      </node>
      <node id="919">
        <label>thread</label>
      </node>
      <node id="942">
        <label>type_traits</label>
      </node>
      <node id="926">
        <label>../types.h</label>
        <link refid="types_8h"/>
        <childnode refid="927" relation="include">
        </childnode>
        <childnode refid="928" relation="include">
        </childnode>
        <childnode refid="929" relation="include">
        </childnode>
        <childnode refid="930" relation="include">
        </childnode>
        <childnode refid="931" relation="include">
        </childnode>
        <childnode refid="925" relation="include">
        </childnode>
        <childnode refid="932" relation="include">
        </childnode>
        <childnode refid="934" relation="include">
        </childnode>
      </node>
      <node id="936">
        <label>./serialization/variant.h</label>
      </node>
      <node id="940">
        <label>algorithm</label>
      </node>
      <node id="929">
        <label>memory</label>
      </node>
    </incdepgraph>
    <invincdepgraph>
      <node id="948">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/classification_opt.h</label>
        <link refid="classification__opt_8h"/>
        <childnode refid="949" relation="include">
        </childnode>
        <childnode refid="952" relation="include">
        </childnode>
      </node>
      <node id="951">
        <label>/Users/classner/git/forpy/include/forpy/forpy.h</label>
        <link refid="forpy_8h"/>
      </node>
      <node id="949">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/fastclassopt.h</label>
        <link refid="fastclassopt_8h"/>
        <childnode refid="950" relation="include">
        </childnode>
        <childnode refid="952" relation="include">
        </childnode>
      </node>
      <node id="952">
        <label>/Users/classner/git/forpy/include/forpy/threshold_optimizers/threshold_optimizers.h</label>
        <link refid="threshold__optimizers_8h"/>
        <childnode refid="951" relation="include">
        </childnode>
      </node>
      <node id="950">
        <label>/Users/classner/git/forpy/include/forpy/forest.h</label>
        <link refid="forest_8h"/>
        <childnode refid="951" relation="include">
        </childnode>
      </node>
    </invincdepgraph>
    <innerclass refid="classforpy_1_1_classification_opt" prot="public">forpy::ClassificationOpt</innerclass>
    <innernamespace refid="namespaceforpy">forpy</innernamespace>
      <sectiondef kind="define">
      <memberdef kind="define" id="classification__opt_8h_1ab80352e956d94cf04b1725248feccee0" prot="public" static="no">
        <name>FORPY_THRESHOLD_OPTIMIZERS_CLASSIFICATION_OPT_H_</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/threshold_optimizers/classification_opt.h" line="4" column="9" bodyfile="/Users/classner/git/forpy/include/forpy/threshold_optimizers/classification_opt.h" bodystart="4" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="func">
      <memberdef kind="function" id="classification__opt_8h_1a85bd8b6af7abb2922677540ddf6a4e9e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>CEREAL_REGISTER_TYPE</definition>
        <argsstring>(forpy::ClassificationOpt)</argsstring>
        <name>CEREAL_REGISTER_TYPE</name>
        <param>
          <type><ref refid="classforpy_1_1_classification_opt" kindref="compound">forpy::ClassificationOpt</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/threshold_optimizers/classification_opt.h" line="139" column="1"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
    </briefdescription>
    <detaileddescription>
    </detaileddescription>
    <programlisting>
<codeline lineno="1"><highlight class="comment">/*<sp/>Author:<sp/>Christoph<sp/>Lassner.<sp/>*/</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="2"><highlight class="normal"></highlight><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="3"><highlight class="normal"></highlight><highlight class="preprocessor">#ifndef<sp/>FORPY_THRESHOLD_OPTIMIZERS_CLASSIFICATION_OPT_H_</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="4" refid="classification__opt_8h_1ab80352e956d94cf04b1725248feccee0" refkind="member"><highlight class="normal"></highlight><highlight class="preprocessor">#define<sp/>FORPY_THRESHOLD_OPTIMIZERS_CLASSIFICATION_OPT_H_</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="5"><highlight class="normal"></highlight></codeline>
<codeline lineno="6"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;../global.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="7"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;../util/serialization/basics.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="8"><highlight class="normal"></highlight></codeline>
<codeline lineno="9"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;../impurities/ientropyfunction.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;../impurities/inducedentropy.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="11"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;../types.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="12"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;../util/desk.h&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="13"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;<ref refid="ithreshopt_8h" kindref="compound">./ithreshopt.h</ref>&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="14"><highlight class="normal"></highlight></codeline>
<codeline lineno="15"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceforpy" kindref="compound">forpy</ref><sp/>{</highlight></codeline>
<codeline lineno="16"><highlight class="normal"></highlight></codeline>
<codeline lineno="17"><highlight class="normal"></highlight><highlight class="preprocessor">#pragma<sp/>clang<sp/>diagnostic<sp/>push</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="18"><highlight class="normal"></highlight><highlight class="preprocessor">#pragma<sp/>clang<sp/>diagnostic<sp/>ignored<sp/>&quot;-Wunused-variable&quot;</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="19"><highlight class="normal"></highlight></codeline>
<codeline lineno="20"><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1a570822bfa7d5bfd0a4003501fe8fef46" kindref="member">DLOG_COPT_V</ref><sp/>=<sp/>100;</highlight></codeline>
<codeline lineno="22" refid="namespaceforpy_1a3561534fe91c5f227293abb336d61de5" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1a3561534fe91c5f227293abb336d61de5" kindref="member">LOG_COPT_NID</ref><sp/>=<sp/>0;</highlight></codeline>
<codeline lineno="23" refid="namespaceforpy_1ab2daa38185b47a0488eff864ac1beaee" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ab2daa38185b47a0488eff864ac1beaee" kindref="member">LOG_COPT_ALLN</ref><sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="25"></codeline>
<codeline lineno="35"><highlight class="preprocessor">#ifdef<sp/>FORPY_SKLEARN_COMPAT</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="36"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ad88f878406edc080e84ad4afb30fd910" kindref="member">CLASSOPT_EPS</ref><sp/>=<sp/>1E-7;</highlight></codeline>
<codeline lineno="37"><highlight class="normal"></highlight><highlight class="preprocessor">#else</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="38" refid="namespaceforpy_1ad88f878406edc080e84ad4afb30fd910" refkind="member"><highlight class="normal"></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ad88f878406edc080e84ad4afb30fd910" kindref="member">CLASSOPT_EPS</ref><sp/>=<sp/>1E-7f;</highlight></codeline>
<codeline lineno="39"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="40"><highlight class="normal"></highlight><highlight class="preprocessor">#pragma<sp/>clang<sp/>diagnostic<sp/>pop</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="41"><highlight class="normal"></highlight></codeline>
<codeline lineno="55" refid="classforpy_1_1_classification_opt" refkind="compound"><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classforpy_1_1_classification_opt" kindref="compound">ClassificationOpt</ref><sp/>:<sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_i_thresh_opt" kindref="compound">IThreshOpt</ref><sp/>{</highlight></codeline>
<codeline lineno="56"><highlight class="normal"><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="66"><highlight class="normal"><sp/><sp/><ref refid="classforpy_1_1_classification_opt_1ac0fe8413db473f7dee448770f71b5ac0" kindref="member">ClassificationOpt</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>&amp;<ref refid="classforpy_1_1_classification_opt_1a4ba5dfcedc849ef5272022f9209e1cc2" kindref="member">n_thresholds</ref><sp/>=<sp/>0,</highlight></codeline>
<codeline lineno="67"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/>&amp;<ref refid="classforpy_1_1_classification_opt_1a7bdc7080f6ddf3716439fcb5c15ee4be" kindref="member">gain_threshold</ref><sp/>=<sp/>1E-7f,</highlight></codeline>
<codeline lineno="68"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;IEntropyFunction&gt;<sp/>&amp;entropy_function<sp/>=</highlight></codeline>
<codeline lineno="69"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::make_shared&lt;InducedEntropy&gt;(2));</highlight></codeline>
<codeline lineno="70"><highlight class="normal"></highlight></codeline>
<codeline lineno="72"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;IThreshOpt&gt;<sp/><ref refid="classforpy_1_1_classification_opt_1a45d1b3e24b9a084d5a36e006a2241c9f" kindref="member">create_duplicate</ref>(</highlight></codeline>
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref><sp/>&amp;<sp/></highlight><highlight class="comment">/*random_seed*/</highlight><highlight class="normal">)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::make_shared&lt;ClassificationOpt&gt;(<ref refid="classforpy_1_1_classification_opt_1a4ba5dfcedc849ef5272022f9209e1cc2" kindref="member">n_thresholds</ref>,<sp/><ref refid="classforpy_1_1_classification_opt_1a7bdc7080f6ddf3716439fcb5c15ee4be" kindref="member">gain_threshold</ref>,</highlight></codeline>
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classforpy_1_1_classification_opt_1a9d30c5f1c58cd7ec5344f1392419bbca" kindref="member">entropy_func</ref>);</highlight></codeline>
<codeline lineno="77"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="78"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a1d02f8d4123e1e40a1526c256ea23b71" kindref="member">check_annotations</ref>(<ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref><sp/>*dprov);</highlight></codeline>
<codeline lineno="79" refid="classforpy_1_1_classification_opt_1a0057b992bfb58f5396a0459b7b8a894b" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a0057b992bfb58f5396a0459b7b8a894b" kindref="member">transfer_or_run_check</ref>(<ref refid="classforpy_1_1_i_thresh_opt" kindref="compound">IThreshOpt</ref><sp/>*other,<sp/><ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref><sp/>*dprov)<sp/>{</highlight></codeline>
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>*copt_ot<sp/>=<sp/></highlight><highlight class="keyword">dynamic_cast&lt;</highlight><highlight class="normal"><ref refid="classforpy_1_1_classification_opt" kindref="compound">ClassificationOpt</ref><sp/>*</highlight><highlight class="keyword">&gt;</highlight><highlight class="normal">(other);</highlight></codeline>
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(copt_ot<sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="82"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>copt_ot-&gt;<ref refid="classforpy_1_1_classification_opt_1a3340a581f6a2e9e4fe1a12d8922166ec" kindref="member">n_classes</ref><sp/>=<sp/><ref refid="classforpy_1_1_classification_opt_1a3340a581f6a2e9e4fe1a12d8922166ec" kindref="member">n_classes</ref>;</highlight></codeline>
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>copt_ot-&gt;true_max<sp/>=<sp/><ref refid="classforpy_1_1_classification_opt_1ac1e6f29725993bbc58bed4fa2bc5520e" kindref="member">true_max</ref>;</highlight></codeline>
<codeline lineno="84"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>copt_ot-&gt;class_transl_ptr<sp/>=<sp/><ref refid="classforpy_1_1_classification_opt_1aa080a3ed5f8f7f65fa15840a6054b3f6" kindref="member">class_transl_ptr</ref>;</highlight></codeline>
<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/>}<sp/></highlight><highlight class="keywordflow">else</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="86"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/>other-&gt;<ref refid="classforpy_1_1_i_thresh_opt_1ab3766a1229f2862994b827469e7ac2dc" kindref="member">check_annotations</ref>(dprov);</highlight></codeline>
<codeline lineno="87"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="88"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1ac7ecb5aeedab659bacc8c386441f2ff8" kindref="member">full_entropy</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref><sp/>&amp;dprov,<sp/><ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref><sp/>*)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="89"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">virtual</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1acba5e4cd4a2d9f181d1143fd26310554" kindref="member">optimize</ref>(<ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref><sp/>*)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="90" refid="classforpy_1_1_classification_opt_1ade8863f16f9a5b843144663c1ea53f62" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1ade8863f16f9a5b843144663c1ea53f62" kindref="member">get_gain_threshold_for</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/>&amp;<sp/></highlight><highlight class="comment">/*node_id*/</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="91"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a7bdc7080f6ddf3716439fcb5c15ee4be" kindref="member">gain_threshold</ref>;</highlight></codeline>
<codeline lineno="92"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="94"></codeline>
<codeline lineno="96" refid="classforpy_1_1_classification_opt_1a9d83eb0f86b21b59393371d388a3d15a" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a9d83eb0f86b21b59393371d388a3d15a" kindref="member">get_n_classes</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a3340a581f6a2e9e4fe1a12d8922166ec" kindref="member">n_classes</ref>;<sp/>};</highlight></codeline>
<codeline lineno="97"><highlight class="normal"></highlight></codeline>
<codeline lineno="98" refid="classforpy_1_1_classification_opt_1ac19aef370db773584d6667629257aca5" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/>std::shared_ptr&lt;std::vector&lt;uint&gt;&gt;<sp/><ref refid="classforpy_1_1_classification_opt_1ac19aef370db773584d6667629257aca5" kindref="member">get_class_translation</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1aa080a3ed5f8f7f65fa15840a6054b3f6" kindref="member">class_transl_ptr</ref>;</highlight></codeline>
<codeline lineno="100"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="101"><highlight class="normal"></highlight></codeline>
<codeline lineno="102" refid="classforpy_1_1_classification_opt_1aec6169baf8d50a19740106f0ef60e66f" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref><sp/><ref refid="classforpy_1_1_classification_opt_1aec6169baf8d50a19740106f0ef60e66f" kindref="member">get_true_max_class</ref>()</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{<sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1ac1e6f29725993bbc58bed4fa2bc5520e" kindref="member">true_max</ref>;<sp/>};</highlight></codeline>
<codeline lineno="103"><highlight class="normal"></highlight></codeline>
<codeline lineno="104" refid="classforpy_1_1_classification_opt_1a10dcc5175898829b1a0c4f71e59e76f3" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">friend</highlight><highlight class="normal"><sp/>std::ostream<sp/>&amp;<ref refid="classforpy_1_1_classification_opt_1a10dcc5175898829b1a0c4f71e59e76f3" kindref="member">operator&lt;&lt;</ref>(std::ostream<sp/>&amp;stream,</highlight></codeline>
<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt" kindref="compound">ClassificationOpt</ref><sp/>&amp;<sp/></highlight><highlight class="comment">/*self*/</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/>stream<sp/>&lt;&lt;<sp/></highlight><highlight class="stringliteral">&quot;forpy::ClassificationOpt&quot;</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>stream;</highlight></codeline>
<codeline lineno="108"><highlight class="normal"><sp/><sp/>};</highlight></codeline>
<codeline lineno="109"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1aa8a81b507f7eaf7317d37b71cb4f99ee" kindref="member">operator==</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_i_thresh_opt" kindref="compound">IThreshOpt</ref><sp/>&amp;rhs)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="110"><highlight class="normal"></highlight></codeline>
<codeline lineno="111"><highlight class="normal"><sp/></highlight><highlight class="keyword">protected</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="112" refid="classforpy_1_1_classification_opt_1a4ba5dfcedc849ef5272022f9209e1cc2" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a4ba5dfcedc849ef5272022f9209e1cc2" kindref="member">n_thresholds</ref>;</highlight></codeline>
<codeline lineno="113" refid="classforpy_1_1_classification_opt_1a3340a581f6a2e9e4fe1a12d8922166ec" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">size_t</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a3340a581f6a2e9e4fe1a12d8922166ec" kindref="member">n_classes</ref>;</highlight></codeline>
<codeline lineno="114" refid="classforpy_1_1_classification_opt_1a7bdc7080f6ddf3716439fcb5c15ee4be" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">float</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a7bdc7080f6ddf3716439fcb5c15ee4be" kindref="member">gain_threshold</ref>;</highlight></codeline>
<codeline lineno="115" refid="classforpy_1_1_classification_opt_1a9d30c5f1c58cd7ec5344f1392419bbca" refkind="member"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;IEntropyFunction&gt;<sp/><ref refid="classforpy_1_1_classification_opt_1a9d30c5f1c58cd7ec5344f1392419bbca" kindref="member">entropy_func</ref>;</highlight></codeline>
<codeline lineno="116" refid="classforpy_1_1_classification_opt_1aa080a3ed5f8f7f65fa15840a6054b3f6" refkind="member"><highlight class="normal"><sp/><sp/>std::shared_ptr&lt;std::vector&lt;uint&gt;&gt;<sp/><ref refid="classforpy_1_1_classification_opt_1aa080a3ed5f8f7f65fa15840a6054b3f6" kindref="member">class_transl_ptr</ref>;</highlight></codeline>
<codeline lineno="117" refid="classforpy_1_1_classification_opt_1ac1e6f29725993bbc58bed4fa2bc5520e" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">int</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1ac1e6f29725993bbc58bed4fa2bc5520e" kindref="member">true_max</ref>;</highlight></codeline>
<codeline lineno="118"><highlight class="normal"></highlight></codeline>
<codeline lineno="119"><highlight class="normal"><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:</highlight></codeline>
<codeline lineno="120"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>IT&gt;</highlight></codeline>
<codeline lineno="121"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/><ref refid="structforpy_1_1_split_opt_res" kindref="compound">SplitOptRes&lt;IT&gt;</ref><sp/>&amp;<ref refid="classforpy_1_1_classification_opt_1ab50a78a3c67ff7caa4c1f651fd8a0818" kindref="member">optimize__setup</ref>(<ref refid="structforpy_1_1_decider_desk" kindref="compound">DeciderDesk</ref><sp/>&amp;d)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="122"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>IT&gt;</highlight></codeline>
<codeline lineno="123"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a4fda61b0efb0bfdd80575d5f8db03248" kindref="member">optimize__sort</ref>(<ref refid="structforpy_1_1_decider_desk" kindref="compound">DeciderDesk</ref><sp/>&amp;d)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="124"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>IT&gt;</highlight></codeline>
<codeline lineno="125"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/>std::unique_ptr&lt;std::vector&lt;IT&gt;&gt;<sp/><ref refid="classforpy_1_1_classification_opt_1a3c46173c11a746b0a7d1d3067a0d4f33" kindref="member">optimize__thresholds</ref>(<ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref><sp/>*d)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal">;</highlight></codeline>
<codeline lineno="126" refid="classforpy_1_1_classification_opt_1ab2f44cbb59a08132f4c843e5225bba0e" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">friend</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classforpy_1_1_classification_opt_1ab2f44cbb59a08132f4c843e5225bba0e" kindref="member">cereal::access</ref>;</highlight></codeline>
<codeline lineno="127"><highlight class="normal"><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/>&lt;</highlight><highlight class="keyword">class</highlight><highlight class="normal"><sp/>Archive&gt;</highlight></codeline>
<codeline lineno="128" refid="classforpy_1_1_classification_opt_1a354954f07ee097c25c72a2dca080e460" refkind="member"><highlight class="normal"><sp/><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="classforpy_1_1_classification_opt_1a354954f07ee097c25c72a2dca080e460" kindref="member">serialize</ref>(Archive<sp/>&amp;ar,<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref><sp/>&amp;)<sp/>{</highlight></codeline>
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/>ar(cereal::make_nvp(</highlight><highlight class="stringliteral">&quot;base&quot;</highlight><highlight class="normal">,<sp/>cereal::base_class&lt;IThreshOpt&gt;(</highlight><highlight class="keyword">this</highlight><highlight class="normal">)),</highlight></codeline>
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CEREAL_NVP(<ref refid="classforpy_1_1_classification_opt_1a4ba5dfcedc849ef5272022f9209e1cc2" kindref="member">n_thresholds</ref>),<sp/>CEREAL_NVP(<ref refid="classforpy_1_1_classification_opt_1a3340a581f6a2e9e4fe1a12d8922166ec" kindref="member">n_classes</ref>),</highlight></codeline>
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CEREAL_NVP(<ref refid="classforpy_1_1_classification_opt_1a7bdc7080f6ddf3716439fcb5c15ee4be" kindref="member">gain_threshold</ref>),<sp/>CEREAL_NVP(<ref refid="classforpy_1_1_classification_opt_1a9d30c5f1c58cd7ec5344f1392419bbca" kindref="member">entropy_func</ref>),</highlight></codeline>
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/>CEREAL_NVP(<ref refid="classforpy_1_1_classification_opt_1aa080a3ed5f8f7f65fa15840a6054b3f6" kindref="member">class_transl_ptr</ref>),<sp/>CEREAL_NVP(<ref refid="classforpy_1_1_classification_opt_1ac1e6f29725993bbc58bed4fa2bc5520e" kindref="member">true_max</ref>));</highlight></codeline>
<codeline lineno="133"><highlight class="normal"><sp/><sp/>}</highlight></codeline>
<codeline lineno="134"><highlight class="normal"></highlight></codeline>
<codeline lineno="135"><highlight class="normal"><sp/><sp/><ref refid="classforpy_1_1_classification_opt_1aaed84b5295a77d3b6b571156393af617" kindref="member">DISALLOW_COPY_AND_ASSIGN</ref>(<ref refid="classforpy_1_1_classification_opt" kindref="compound">ClassificationOpt</ref>);</highlight></codeline>
<codeline lineno="136"><highlight class="normal">};</highlight></codeline>
<codeline lineno="137"><highlight class="normal">}<sp/><sp/></highlight><highlight class="comment">//<sp/>namespace<sp/>forpy</highlight><highlight class="normal"></highlight></codeline>
<codeline lineno="138"><highlight class="normal"></highlight></codeline>
<codeline lineno="139"><highlight class="normal"><ref refid="classification__opt_8h_1a85bd8b6af7abb2922677540ddf6a4e9e" kindref="member">CEREAL_REGISTER_TYPE</ref>(<ref refid="classforpy_1_1_classification_opt" kindref="compound">forpy::ClassificationOpt</ref>);</highlight></codeline>
<codeline lineno="140"><highlight class="normal"></highlight><highlight class="preprocessor">#endif<sp/><sp/>//<sp/>FORPY_THRESHOLD_OPTIMIZERS_CLASSIFICATION_OPT_H_</highlight></codeline>
    </programlisting>
    <location file="/Users/classner/git/forpy/include/forpy/threshold_optimizers/classification_opt.h"/>
  </compounddef>
</doxygen>
