update docs
This commit is contained in:
parent
2cc2237165
commit
195552ef55
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -369,7 +369,6 @@
|
|||
<h1>All modules for which code is available</h1>
|
||||
<ul><li><a href="quapy/classification/calibration.html">quapy.classification.calibration</a></li>
|
||||
<li><a href="quapy/classification/methods.html">quapy.classification.methods</a></li>
|
||||
<li><a href="quapy/classification/neural.html">quapy.classification.neural</a></li>
|
||||
<li><a href="quapy/classification/svmperf.html">quapy.classification.svmperf</a></li>
|
||||
<li><a href="quapy/data/base.html">quapy.data.base</a></li>
|
||||
<li><a href="quapy/data/datasets.html">quapy.data.datasets</a></li>
|
||||
|
|
@ -379,7 +378,6 @@
|
|||
<li><a href="quapy/evaluation.html">quapy.evaluation</a></li>
|
||||
<li><a href="quapy/functional.html">quapy.functional</a></li>
|
||||
<li><a href="quapy/method/_kdey.html">quapy.method._kdey</a></li>
|
||||
<li><a href="quapy/method/_neural.html">quapy.method._neural</a></li>
|
||||
<li><a href="quapy/method/_threshold_optim.html">quapy.method._threshold_optim</a></li>
|
||||
<li><a href="quapy/method/aggregative.html">quapy.method.aggregative</a></li>
|
||||
<li><a href="quapy/method/base.html">quapy.method.base</a></li>
|
||||
|
|
@ -390,7 +388,6 @@
|
|||
<li><a href="quapy/plot.html">quapy.plot</a></li>
|
||||
<li><a href="quapy/protocol.html">quapy.protocol</a></li>
|
||||
<li><a href="quapy/util.html">quapy.util</a></li>
|
||||
<li><a href="sklearn/utils/_metadata_requests.html">sklearn.utils._metadata_requests</a></li>
|
||||
</ul>
|
||||
|
||||
</article>
|
||||
|
|
@ -420,8 +417,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -455,7 +452,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -370,13 +370,13 @@
|
|||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for quapy.classification.calibration</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">deepcopy</span>
|
||||
<span></span><span class="kn">from</span><span class="w"> </span><span class="nn">copy</span><span class="w"> </span><span class="kn">import</span> <span class="n">deepcopy</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">sklearn.base</span> <span class="kn">import</span> <span class="n">BaseEstimator</span><span class="p">,</span> <span class="n">clone</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="kn">import</span> <span class="n">cross_val_predict</span><span class="p">,</span> <span class="n">train_test_split</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="kn">import</span> <span class="n">LabelEncoder</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.utils.validation</span> <span class="kn">import</span> <span class="n">check_X_y</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseEstimator</span><span class="p">,</span> <span class="n">clone</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.model_selection</span><span class="w"> </span><span class="kn">import</span> <span class="n">cross_val_predict</span><span class="p">,</span> <span class="n">train_test_split</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.preprocessing</span><span class="w"> </span><span class="kn">import</span> <span class="n">LabelEncoder</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.utils.validation</span><span class="w"> </span><span class="kn">import</span> <span class="n">check_X_y</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
|
||||
|
||||
|
||||
<span class="c1"># Wrappers of calibration defined by Alexandari et al. in paper <http://proceedings.mlr.press/v119/alexandari20a.html></span>
|
||||
|
|
@ -384,20 +384,20 @@
|
|||
<span class="c1"># see https://github.com/kundajelab/abstention</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_require_abstention_calibration</span><span class="p">():</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_require_abstention_calibration</span><span class="p">():</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">abstention.calibration</span> <span class="kn">import</span> <span class="n">NoBiasVectorScaling</span><span class="p">,</span> <span class="n">TempScaling</span><span class="p">,</span> <span class="n">VectorScaling</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">abstention.calibration</span><span class="w"> </span><span class="kn">import</span> <span class="n">NoBiasVectorScaling</span><span class="p">,</span> <span class="n">TempScaling</span><span class="p">,</span> <span class="n">VectorScaling</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span>
|
||||
<span class="s2">"Calibration methods in quapy.classification.calibration require the optional "</span>
|
||||
<span class="s2">"'abstention' package."</span>
|
||||
<span class="p">)</span> <span class="kn">from</span> <span class="nn">exc</span>
|
||||
<span class="p">)</span> <span class="kn">from</span><span class="w"> </span><span class="nn">exc</span>
|
||||
<span class="k">return</span> <span class="n">NoBiasVectorScaling</span><span class="p">,</span> <span class="n">TempScaling</span><span class="p">,</span> <span class="n">VectorScaling</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="RecalibratedProbabilisticClassifier">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.RecalibratedProbabilisticClassifier">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">RecalibratedProbabilisticClassifier</span><span class="p">:</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">RecalibratedProbabilisticClassifier</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Abstract class for (re)calibration method from `abstention.calibration`, as defined in</span>
|
||||
<span class="sd"> `Alexandari, A., Kundaje, A., & Shrikumar, A. (2020, November). Maximum likelihood with bias-corrected calibration</span>
|
||||
|
|
@ -410,7 +410,7 @@
|
|||
|
||||
<div class="viewcode-block" id="RecalibratedProbabilisticClassifierBase">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.RecalibratedProbabilisticClassifierBase">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">RecalibratedProbabilisticClassifierBase</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">,</span> <span class="n">RecalibratedProbabilisticClassifier</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">RecalibratedProbabilisticClassifierBase</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">,</span> <span class="n">RecalibratedProbabilisticClassifier</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Applies a (re)calibration method from `abstention.calibration`, as defined in</span>
|
||||
<span class="sd"> `Alexandari et al. paper <http://proceedings.mlr.press/v119/alexandari20a.html>`_.</span>
|
||||
|
|
@ -426,7 +426,7 @@
|
|||
<span class="sd"> :param verbose: whether or not to display information in the standard output</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">calibrator</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">calibrator</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">classifier</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">calibrator</span> <span class="o">=</span> <span class="n">calibrator</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">val_split</span> <span class="o">=</span> <span class="n">val_split</span>
|
||||
|
|
@ -435,7 +435,7 @@
|
|||
|
||||
<div class="viewcode-block" id="RecalibratedProbabilisticClassifierBase.fit">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.RecalibratedProbabilisticClassifierBase.fit">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Fits the calibration for the probabilistic classifier.</span>
|
||||
|
||||
|
|
@ -456,7 +456,7 @@
|
|||
|
||||
<div class="viewcode-block" id="RecalibratedProbabilisticClassifierBase.fit_cv">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.RecalibratedProbabilisticClassifierBase.fit_cv">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">fit_cv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">fit_cv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Fits the calibration in a cross-validation manner, i.e., it generates posterior probabilities for all</span>
|
||||
<span class="sd"> training instances via cross-validation, and then retrains the classifier on all training instances.</span>
|
||||
|
|
@ -477,7 +477,7 @@
|
|||
|
||||
<div class="viewcode-block" id="RecalibratedProbabilisticClassifierBase.fit_tr_val">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.RecalibratedProbabilisticClassifierBase.fit_tr_val">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">fit_tr_val</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">fit_tr_val</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Fits the calibration in a train/val-split manner, i.e.t, it partitions the training instances into a</span>
|
||||
<span class="sd"> training and a validation set, and then uses the training samples to learn classifier which is then used</span>
|
||||
|
|
@ -498,7 +498,7 @@
|
|||
|
||||
<div class="viewcode-block" id="RecalibratedProbabilisticClassifierBase.predict">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.RecalibratedProbabilisticClassifierBase.predict">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Predicts class labels for the data instances in `X`</span>
|
||||
|
||||
|
|
@ -510,7 +510,7 @@
|
|||
|
||||
<div class="viewcode-block" id="RecalibratedProbabilisticClassifierBase.predict_proba">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.RecalibratedProbabilisticClassifierBase.predict_proba">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Generates posterior probabilities for the data instances in `X`</span>
|
||||
|
||||
|
|
@ -522,7 +522,7 @@
|
|||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">classes_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">classes_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns the classes on which the classifier has been trained on</span>
|
||||
|
||||
|
|
@ -534,7 +534,7 @@
|
|||
|
||||
<div class="viewcode-block" id="NBVSCalibration">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.NBVSCalibration">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">NBVSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">NBVSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Applies the No-Bias Vector Scaling (NBVS) calibration method from `abstention.calibration`, as defined in</span>
|
||||
<span class="sd"> `Alexandari et al. paper <http://proceedings.mlr.press/v119/alexandari20a.html>`_:</span>
|
||||
|
|
@ -548,7 +548,7 @@
|
|||
<span class="sd"> :param verbose: whether or not to display information in the standard output</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">NoBiasVectorScaling</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">_require_abstention_calibration</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">classifier</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">calibrator</span> <span class="o">=</span> <span class="n">NoBiasVectorScaling</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span>
|
||||
|
|
@ -560,7 +560,7 @@
|
|||
|
||||
<div class="viewcode-block" id="BCTSCalibration">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.BCTSCalibration">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">BCTSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">BCTSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Applies the Bias-Corrected Temperature Scaling (BCTS) calibration method from `abstention.calibration`, as defined in</span>
|
||||
<span class="sd"> `Alexandari et al. paper <http://proceedings.mlr.press/v119/alexandari20a.html>`_:</span>
|
||||
|
|
@ -574,7 +574,7 @@
|
|||
<span class="sd"> :param verbose: whether or not to display information in the standard output</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">_</span><span class="p">,</span> <span class="n">TempScaling</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">_require_abstention_calibration</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">classifier</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">calibrator</span> <span class="o">=</span> <span class="n">TempScaling</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">,</span> <span class="n">bias_positions</span><span class="o">=</span><span class="s1">'all'</span><span class="p">)</span>
|
||||
|
|
@ -586,7 +586,7 @@
|
|||
|
||||
<div class="viewcode-block" id="TSCalibration">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.TSCalibration">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">TSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">TSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Applies the Temperature Scaling (TS) calibration method from `abstention.calibration`, as defined in</span>
|
||||
<span class="sd"> `Alexandari et al. paper <http://proceedings.mlr.press/v119/alexandari20a.html>`_:</span>
|
||||
|
|
@ -600,7 +600,7 @@
|
|||
<span class="sd"> :param verbose: whether or not to display information in the standard output</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">_</span><span class="p">,</span> <span class="n">TempScaling</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">_require_abstention_calibration</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">classifier</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">calibrator</span> <span class="o">=</span> <span class="n">TempScaling</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span>
|
||||
|
|
@ -612,7 +612,7 @@
|
|||
|
||||
<div class="viewcode-block" id="VSCalibration">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.VSCalibration">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">VSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">VSCalibration</span><span class="p">(</span><span class="n">RecalibratedProbabilisticClassifierBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Applies the Vector Scaling (VS) calibration method from `abstention.calibration`, as defined in</span>
|
||||
<span class="sd"> `Alexandari et al. paper <http://proceedings.mlr.press/v119/alexandari20a.html>`_:</span>
|
||||
|
|
@ -626,7 +626,7 @@
|
|||
<span class="sd"> :param verbose: whether or not to display information in the standard output</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">VectorScaling</span> <span class="o">=</span> <span class="n">_require_abstention_calibration</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">classifier</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">calibrator</span> <span class="o">=</span> <span class="n">VectorScaling</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span>
|
||||
|
|
@ -638,7 +638,7 @@
|
|||
|
||||
<div class="viewcode-block" id="TemperatureScalingFromLogits">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.TemperatureScalingFromLogits">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">TemperatureScalingFromLogits</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">TemperatureScalingFromLogits</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Calibrates a matrix of logits by learning a temperature-scaling mapping</span>
|
||||
<span class="sd"> with the calibration methods from `abstention.calibration`.</span>
|
||||
|
|
@ -653,13 +653,13 @@
|
|||
<span class="sd"> information</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bias_corrected</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bias_corrected</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bias_corrected</span> <span class="o">=</span> <span class="n">bias_corrected</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verbose</span> <span class="o">=</span> <span class="n">verbose</span>
|
||||
|
||||
<div class="viewcode-block" id="TemperatureScalingFromLogits.fit">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.TemperatureScalingFromLogits.fit">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Fits the logits calibrator.</span>
|
||||
|
||||
|
|
@ -694,7 +694,7 @@
|
|||
|
||||
<div class="viewcode-block" id="TemperatureScalingFromLogits.predict_proba">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.TemperatureScalingFromLogits.predict_proba">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Converts logits into calibrated posterior probabilities.</span>
|
||||
|
||||
|
|
@ -708,7 +708,7 @@
|
|||
|
||||
<div class="viewcode-block" id="TemperatureScalingFromLogits.predict">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.calibration.TemperatureScalingFromLogits.predict">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Predicts class labels after calibration.</span>
|
||||
|
||||
|
|
@ -750,8 +750,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -785,7 +785,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -370,15 +370,15 @@
|
|||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for quapy.classification.methods</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.base</span> <span class="kn">import</span> <span class="n">BaseEstimator</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.decomposition</span> <span class="kn">import</span> <span class="n">TruncatedSVD</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.linear_model</span> <span class="kn">import</span> <span class="n">LogisticRegression</span>
|
||||
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseEstimator</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.decomposition</span><span class="w"> </span><span class="kn">import</span> <span class="n">TruncatedSVD</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.linear_model</span><span class="w"> </span><span class="kn">import</span> <span class="n">LogisticRegression</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="LowRankLogisticRegression">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.LowRankLogisticRegression">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">LowRankLogisticRegression</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">LowRankLogisticRegression</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> An example of a classification method (i.e., an object that implements `fit`, `predict`, and `predict_proba`)</span>
|
||||
<span class="sd"> that also generates embedded inputs (i.e., that implements `transform`), as those required for</span>
|
||||
|
|
@ -392,13 +392,13 @@
|
|||
<span class="sd"> `Logistic Regression <https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html>`__ classifier</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n_components</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n_components</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">n_components</span> <span class="o">=</span> <span class="n">n_components</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classifier</span> <span class="o">=</span> <span class="n">LogisticRegression</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="LowRankLogisticRegression.get_params">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.LowRankLogisticRegression.get_params">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">get_params</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_params</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Get hyper-parameters for this estimator.</span>
|
||||
|
||||
|
|
@ -411,7 +411,7 @@
|
|||
|
||||
<div class="viewcode-block" id="LowRankLogisticRegression.set_params">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.LowRankLogisticRegression.set_params">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">set_params</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">set_params</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">params</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Set the parameters of this estimator.</span>
|
||||
|
||||
|
|
@ -428,7 +428,7 @@
|
|||
|
||||
<div class="viewcode-block" id="LowRankLogisticRegression.fit">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.LowRankLogisticRegression.fit">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Fit the model according to the given training data. The fit consists of</span>
|
||||
<span class="sd"> fitting `TruncatedSVD` and then `LogisticRegression` on the low-rank representation.</span>
|
||||
|
|
@ -449,7 +449,7 @@
|
|||
|
||||
<div class="viewcode-block" id="LowRankLogisticRegression.predict">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.LowRankLogisticRegression.predict">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Predicts labels for the instances `X` embedded into the low-rank space.</span>
|
||||
|
||||
|
|
@ -463,7 +463,7 @@
|
|||
|
||||
<div class="viewcode-block" id="LowRankLogisticRegression.predict_proba">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.LowRankLogisticRegression.predict_proba">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Predicts posterior probabilities for the instances `X` embedded into the low-rank space.</span>
|
||||
|
||||
|
|
@ -476,7 +476,7 @@
|
|||
|
||||
<div class="viewcode-block" id="LowRankLogisticRegression.transform">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.LowRankLogisticRegression.transform">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns the low-rank approximation of `X` with `n_components` dimensions, or `X` unaltered if</span>
|
||||
<span class="sd"> `n_components` >= `X.shape[1]`.</span>
|
||||
|
|
@ -493,7 +493,7 @@
|
|||
|
||||
<div class="viewcode-block" id="MockClassifierFromPosteriors">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.MockClassifierFromPosteriors">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">MockClassifierFromPosteriors</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">MockClassifierFromPosteriors</span><span class="p">(</span><span class="n">BaseEstimator</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Mock classifier that bypasses classifier training when the input instances</span>
|
||||
<span class="sd"> are already posterior probabilities produced by a pretrained probabilistic</span>
|
||||
|
|
@ -504,20 +504,20 @@
|
|||
|
||||
<div class="viewcode-block" id="MockClassifierFromPosteriors.fit">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.MockClassifierFromPosteriors.fit">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classes_</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">unique</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MockClassifierFromPosteriors.predict">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.MockClassifierFromPosteriors.predict">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MockClassifierFromPosteriors.predict_proba">
|
||||
<a class="viewcode-back" href="../../../quapy.classification.html#quapy.classification.methods.MockClassifierFromPosteriors.predict_proba">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">predict_proba</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">X</span></div>
|
||||
</div>
|
||||
|
||||
|
|
@ -550,8 +550,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -585,7 +585,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -554,8 +554,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -589,7 +589,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -1062,8 +1062,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -1097,7 +1097,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -1585,8 +1585,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -1620,7 +1620,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -543,8 +543,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -578,7 +578,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -372,14 +372,14 @@
|
|||
<h1>Source code for quapy.error</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""Implementation of error measures used for quantification"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="kn">import</span> <span class="n">f1_score</span>
|
||||
<span class="kn">import</span> <span class="nn">quapy</span> <span class="k">as</span> <span class="nn">qp</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.metrics</span><span class="w"> </span><span class="kn">import</span> <span class="n">f1_score</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">quapy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">qp</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="from_name">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.from_name">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">from_name</span><span class="p">(</span><span class="n">err_name</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">from_name</span><span class="p">(</span><span class="n">err_name</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Gets an error function from its name. E.g., `from_name("mae")`</span>
|
||||
<span class="sd"> will return function :meth:`quapy.error.mae`</span>
|
||||
|
||||
|
|
@ -394,7 +394,7 @@
|
|||
|
||||
<div class="viewcode-block" id="f1e">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.f1e">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">f1e</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">f1e</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""F1 error: simply computes the error in terms of macro :math:`F_1`, i.e.,</span>
|
||||
<span class="sd"> :math:`1-F_1^M`, where :math:`F_1` is the harmonic mean of precision and recall,</span>
|
||||
<span class="sd"> defined as :math:`\\frac{2tp}{2tp+fp+fn}`, with `tp`, `fp`, and `fn` standing</span>
|
||||
|
|
@ -412,7 +412,7 @@
|
|||
|
||||
<div class="viewcode-block" id="acce">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.acce">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">acce</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">acce</span><span class="p">(</span><span class="n">y_true</span><span class="p">,</span> <span class="n">y_pred</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the error in terms of 1-accuracy. The accuracy is computed as</span>
|
||||
<span class="sd"> :math:`\\frac{tp+tn}{tp+fp+fn+tn}`, with `tp`, `fp`, `fn`, and `tn` standing</span>
|
||||
<span class="sd"> for true positives, false positives, false negatives, and true negatives,</span>
|
||||
|
|
@ -428,7 +428,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the mean absolute error (see :meth:`quapy.error.ae`) across the sample pairs.</span>
|
||||
|
||||
<span class="sd"> :param prevs_true: array-like of shape `(n_samples, n_classes,)` with the true prevalence values</span>
|
||||
|
|
@ -442,7 +442,7 @@
|
|||
|
||||
<div class="viewcode-block" id="ae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.ae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">ae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">ae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the absolute error between the two prevalence vectors.</span>
|
||||
<span class="sd"> Absolute error between two prevalence vectors :math:`p` and :math:`\\hat{p}` is computed as</span>
|
||||
<span class="sd"> :math:`AE(p,\\hat{p})=\\frac{1}{|\\mathcal{Y}|}\\sum_{y\\in \\mathcal{Y}}|\\hat{p}(y)-p(y)|`,</span>
|
||||
|
|
@ -461,7 +461,7 @@
|
|||
|
||||
<div class="viewcode-block" id="nae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.nae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">nae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">nae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the normalized absolute error between the two prevalence vectors.</span>
|
||||
<span class="sd"> Normalized absolute error between two prevalence vectors :math:`p` and :math:`\\hat{p}` is computed as</span>
|
||||
<span class="sd"> :math:`NAE(p,\\hat{p})=\\frac{AE(p,\\hat{p})}{z_{AE}}`,</span>
|
||||
|
|
@ -481,7 +481,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mnae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mnae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mnae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mnae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the mean normalized absolute error (see :meth:`quapy.error.nae`) across the sample pairs.</span>
|
||||
|
||||
<span class="sd"> :param prevs_true: array-like of shape `(n_samples, n_classes,)` with the true prevalence values</span>
|
||||
|
|
@ -495,7 +495,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mse">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mse">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mse</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mse</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the mean squared error (see :meth:`quapy.error.se`) across the sample pairs.</span>
|
||||
|
||||
<span class="sd"> :param prevs_true: array-like of shape `(n_samples, n_classes,)` with the</span>
|
||||
|
|
@ -510,7 +510,7 @@
|
|||
|
||||
<div class="viewcode-block" id="se">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.se">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">se</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">se</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the squared error between the two prevalence vectors.</span>
|
||||
<span class="sd"> Squared error between two prevalence vectors :math:`p` and :math:`\\hat{p}` is computed as</span>
|
||||
<span class="sd"> :math:`SE(p,\\hat{p})=\\frac{1}{|\\mathcal{Y}|}\\sum_{y\\in \\mathcal{Y}}(\\hat{p}(y)-p(y))^2`,</span>
|
||||
|
|
@ -529,7 +529,7 @@
|
|||
|
||||
<div class="viewcode-block" id="sre">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.sre">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">sre</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">prevs_train</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="mf">0.</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">sre</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">prevs_train</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="mf">0.</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the squared ratio error between two prevalence vectors.</span>
|
||||
<span class="sd"> The squared ratio error between prevalence vectors :math:`p` and</span>
|
||||
|
|
@ -565,7 +565,7 @@
|
|||
|
||||
<div class="viewcode-block" id="msre">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.msre">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">msre</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">prevs_train</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="mf">0.</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">msre</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">prevs_train</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="mf">0.</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the mean squared ratio error (see :meth:`quapy.error.sre`) across the sample pairs.</span>
|
||||
|
||||
|
|
@ -581,7 +581,7 @@
|
|||
|
||||
<div class="viewcode-block" id="aitchisondist">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.aitchisondist">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">aitchisondist</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">aitchisondist</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the Aitchison distance between two prevalence vectors.</span>
|
||||
<span class="sd"> The Aitchison distance between prevalence vectors :math:`p` and</span>
|
||||
|
|
@ -594,7 +594,7 @@
|
|||
<span class="sd"> :param prevs_hat: array-like with the predicted prevalence values</span>
|
||||
<span class="sd"> :return: Aitchison distance</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">from</span> <span class="nn">quapy.functional</span> <span class="kn">import</span> <span class="n">CLRtransformation</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">quapy.functional</span><span class="w"> </span><span class="kn">import</span> <span class="n">CLRtransformation</span>
|
||||
|
||||
<span class="n">clr</span> <span class="o">=</span> <span class="n">CLRtransformation</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">norm</span><span class="p">(</span><span class="n">clr</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">)</span> <span class="o">-</span> <span class="n">clr</span><span class="p">(</span><span class="n">prevs_hat</span><span class="p">),</span> <span class="n">axis</span><span class="o">=-</span><span class="mi">1</span><span class="p">)</span></div>
|
||||
|
|
@ -603,7 +603,7 @@
|
|||
|
||||
<div class="viewcode-block" id="maitchisondist">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.maitchisondist">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">maitchisondist</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">maitchisondist</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the mean Aitchison distance (see :meth:`quapy.error.aitchisondist`)</span>
|
||||
<span class="sd"> across the sample pairs, i.e.,</span>
|
||||
|
|
@ -620,7 +620,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mkld">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mkld">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mkld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mkld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the mean Kullback-Leibler divergence (see :meth:`quapy.error.kld`) across the</span>
|
||||
<span class="sd"> sample pairs. The distributions are smoothed using the `eps` factor</span>
|
||||
<span class="sd"> (see :meth:`quapy.error.smooth`).</span>
|
||||
|
|
@ -641,7 +641,7 @@
|
|||
|
||||
<div class="viewcode-block" id="kld">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.kld">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">kld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">kld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the Kullback-Leibler divergence between the two prevalence distributions.</span>
|
||||
<span class="sd"> Kullback-Leibler divergence between two prevalence distributions :math:`p` and :math:`\\hat{p}`</span>
|
||||
<span class="sd"> is computed as</span>
|
||||
|
|
@ -667,7 +667,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mnkld">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mnkld">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mnkld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mnkld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the mean Normalized Kullback-Leibler divergence (see :meth:`quapy.error.nkld`)</span>
|
||||
<span class="sd"> across the sample pairs. The distributions are smoothed using the `eps` factor</span>
|
||||
<span class="sd"> (see :meth:`quapy.error.smooth`).</span>
|
||||
|
|
@ -687,7 +687,7 @@
|
|||
|
||||
<div class="viewcode-block" id="nkld">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.nkld">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">nkld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">nkld</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the Normalized Kullback-Leibler divergence between the two prevalence distributions.</span>
|
||||
<span class="sd"> Normalized Kullback-Leibler divergence between two prevalence distributions :math:`p` and</span>
|
||||
<span class="sd"> :math:`\\hat{p}` is computed as</span>
|
||||
|
|
@ -711,7 +711,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mrae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mrae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mrae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mrae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the mean relative absolute error (see :meth:`quapy.error.rae`) across</span>
|
||||
<span class="sd"> the sample pairs. The distributions are smoothed using the `eps` factor (see</span>
|
||||
<span class="sd"> :meth:`quapy.error.smooth`).</span>
|
||||
|
|
@ -732,7 +732,7 @@
|
|||
|
||||
<div class="viewcode-block" id="rae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.rae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">rae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">rae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the absolute relative error between the two prevalence vectors.</span>
|
||||
<span class="sd"> Relative absolute error between two prevalence vectors :math:`p` and :math:`\\hat{p}`</span>
|
||||
<span class="sd"> is computed as</span>
|
||||
|
|
@ -758,7 +758,7 @@
|
|||
|
||||
<div class="viewcode-block" id="nrae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.nrae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">nrae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">nrae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the normalized absolute relative error between the two prevalence vectors.</span>
|
||||
<span class="sd"> Relative absolute error between two prevalence vectors :math:`p` and :math:`\\hat{p}`</span>
|
||||
<span class="sd"> is computed as</span>
|
||||
|
|
@ -786,7 +786,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mnrae">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mnrae">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mnrae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mnrae</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Computes the mean normalized relative absolute error (see :meth:`quapy.error.nrae`) across</span>
|
||||
<span class="sd"> the sample pairs. The distributions are smoothed using the `eps` factor (see</span>
|
||||
<span class="sd"> :meth:`quapy.error.smooth`).</span>
|
||||
|
|
@ -807,7 +807,7 @@
|
|||
|
||||
<div class="viewcode-block" id="nmd">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.nmd">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">nmd</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">nmd</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the Normalized Match Distance; which is the Normalized Distance multiplied by the factor</span>
|
||||
<span class="sd"> `1/(n-1)` to guarantee the measure ranges between 0 (best prediction) and 1 (worst prediction).</span>
|
||||
|
|
@ -825,7 +825,7 @@
|
|||
|
||||
<div class="viewcode-block" id="bias_binary">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.bias_binary">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">bias_binary</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">bias_binary</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the (positive) bias in a binary problem. The bias is simply the difference between the</span>
|
||||
<span class="sd"> predicted positive value and the true positive value, so that a positive such value indicates the</span>
|
||||
|
|
@ -845,7 +845,7 @@
|
|||
|
||||
<div class="viewcode-block" id="mean_bias_binary">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.mean_bias_binary">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">mean_bias_binary</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">mean_bias_binary</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the mean of the (positive) bias in a binary problem.</span>
|
||||
<span class="sd"> :param prevs_true: array-like of shape `(n_classes,)` with the true prevalence values</span>
|
||||
|
|
@ -858,7 +858,7 @@
|
|||
|
||||
<div class="viewcode-block" id="md">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.md">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">md</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">ERROR_TOL</span><span class="o">=</span><span class="mf">1E-3</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">md</span><span class="p">(</span><span class="n">prevs_true</span><span class="p">,</span> <span class="n">prevs_hat</span><span class="p">,</span> <span class="n">ERROR_TOL</span><span class="o">=</span><span class="mf">1E-3</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Computes the Match Distance, under the assumption that the cost in mistaking class i with class i+1 is 1 in</span>
|
||||
<span class="sd"> all cases.</span>
|
||||
|
|
@ -878,7 +878,7 @@
|
|||
|
||||
<div class="viewcode-block" id="smooth">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.error.smooth">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">smooth</span><span class="p">(</span><span class="n">prevs</span><span class="p">,</span> <span class="n">eps</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">smooth</span><span class="p">(</span><span class="n">prevs</span><span class="p">,</span> <span class="n">eps</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">""" Smooths a prevalence distribution with :math:`\\epsilon` (`eps`) as:</span>
|
||||
<span class="sd"> :math:`\\underline{p}(y)=\\frac{\\epsilon+p(y)}{\\epsilon|\\mathcal{Y}|+</span>
|
||||
<span class="sd"> \\displaystyle\\sum_{y\\in \\mathcal{Y}}p(y)}`</span>
|
||||
|
|
@ -893,7 +893,7 @@
|
|||
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">__check_eps</span><span class="p">(</span><span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">__check_eps</span><span class="p">(</span><span class="n">eps</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">eps</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">sample_size</span> <span class="o">=</span> <span class="n">qp</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'SAMPLE_SIZE'</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">sample_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
|
|
@ -957,8 +957,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -992,7 +992,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -1299,8 +1299,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -1334,7 +1334,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=a746c00c" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -370,22 +370,22 @@
|
|||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for quapy.method._kdey</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">numbers</span> <span class="kn">import</span> <span class="n">Real</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.base</span> <span class="kn">import</span> <span class="n">BaseEstimator</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.neighbors</span> <span class="kn">import</span> <span class="n">KernelDensity</span>
|
||||
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">numbers</span><span class="w"> </span><span class="kn">import</span> <span class="n">Real</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.base</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseEstimator</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.neighbors</span><span class="w"> </span><span class="kn">import</span> <span class="n">KernelDensity</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">quapy</span> <span class="k">as</span> <span class="nn">qp</span>
|
||||
<span class="kn">from</span> <span class="nn">quapy.method._helper</span> <span class="kn">import</span> <span class="n">_labels_to_indices</span>
|
||||
<span class="kn">from</span> <span class="nn">quapy.method.aggregative</span> <span class="kn">import</span> <span class="n">AggregativeSoftQuantifier</span>
|
||||
<span class="kn">import</span> <span class="nn">quapy.functional</span> <span class="k">as</span> <span class="nn">F</span>
|
||||
<span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">logsumexp</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.metrics.pairwise</span> <span class="kn">import</span> <span class="n">rbf_kernel</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">quapy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">qp</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">quapy.method._helper</span><span class="w"> </span><span class="kn">import</span> <span class="n">_labels_to_indices</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">quapy.method.aggregative</span><span class="w"> </span><span class="kn">import</span> <span class="n">AggregativeSoftQuantifier</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">quapy.functional</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">F</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">scipy.special</span><span class="w"> </span><span class="kn">import</span> <span class="n">logsumexp</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.metrics.pairwise</span><span class="w"> </span><span class="kn">import</span> <span class="n">rbf_kernel</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="KDEBase">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">KDEBase</span><span class="p">:</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">KDEBase</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Common ancestor for KDE-based methods. Implements some common routines.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
|
@ -394,7 +394,7 @@
|
|||
<span class="n">KERNELS</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'gaussian'</span><span class="p">,</span> <span class="s1">'aitchison'</span><span class="p">,</span> <span class="s1">'ilr'</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">_check_bandwidth</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_check_bandwidth</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Checks that the bandwidth parameter is correct</span>
|
||||
|
||||
|
|
@ -408,13 +408,13 @@
|
|||
<span class="k">return</span> <span class="n">bandwidth</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">_check_kernel</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_check_kernel</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">assert</span> <span class="n">kernel</span> <span class="ow">in</span> <span class="n">KDEBase</span><span class="o">.</span><span class="n">KERNELS</span><span class="p">,</span> <span class="sa">f</span><span class="s1">'unknown </span><span class="si">{</span><span class="n">kernel</span><span class="si">=}</span><span class="s1">'</span>
|
||||
<span class="k">return</span> <span class="n">kernel</span>
|
||||
|
||||
<div class="viewcode-block" id="KDEBase.get_kde_function">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.get_kde_function">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">get_kde_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_kde_function</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Wraps the KDE function from scikit-learn.</span>
|
||||
|
||||
|
|
@ -430,7 +430,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEBase.pdf">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.pdf">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">pdf</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kde</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">kernel</span><span class="p">,</span> <span class="n">log_densities</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">pdf</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kde</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">kernel</span><span class="p">,</span> <span class="n">log_densities</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Wraps the density evalution of scikit-learn's KDE. Scikit-learn returns log-scores (s), so this</span>
|
||||
<span class="sd"> function returns :math:`e^{s}`</span>
|
||||
|
|
@ -449,7 +449,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEBase.get_mixture_components">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.get_mixture_components">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">get_mixture_components</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">classes</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_mixture_components</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">classes</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Returns an array containing the mixture components, i.e., the KDE functions for each class.</span>
|
||||
|
||||
|
|
@ -471,7 +471,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEBase.transform_posteriors">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.transform_posteriors">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">transform_posteriors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">transform_posteriors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">kernel</span> <span class="ow">in</span> <span class="p">{</span><span class="s1">'aitchison'</span><span class="p">,</span> <span class="s1">'ilr'</span><span class="p">}:</span>
|
||||
<span class="n">X</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">shrink_posteriors</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">kernel</span> <span class="o">==</span> <span class="s1">'aitchison'</span><span class="p">:</span>
|
||||
|
|
@ -483,7 +483,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEBase.shrink_posteriors">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.shrink_posteriors">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">shrink_posteriors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">shrink_posteriors</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="n">shrinkage</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">'shrinkage'</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">shrinkage</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">X</span>
|
||||
|
|
@ -495,7 +495,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEBase.effective_bandwidth">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.effective_bandwidth">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">effective_bandwidth</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">effective_bandwidth</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">):</span>
|
||||
<span class="n">shrinkage</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">'shrinkage'</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">shrinkage</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">kernel</span> <span class="ow">in</span> <span class="p">{</span><span class="s1">'aitchison'</span><span class="p">,</span> <span class="s1">'ilr'</span><span class="p">}</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">bandwidth</span><span class="p">,</span> <span class="n">Real</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="mf">1.0</span> <span class="o">-</span> <span class="n">shrinkage</span><span class="p">)</span> <span class="o">*</span> <span class="nb">float</span><span class="p">(</span><span class="n">bandwidth</span><span class="p">)</span>
|
||||
|
|
@ -504,7 +504,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEBase.clr_transform">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.clr_transform">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">clr_transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">clr_transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">'clr'</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">clr</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">CLRtransformation</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">clr</span><span class="p">(</span><span class="n">X</span><span class="p">)</span></div>
|
||||
|
|
@ -512,7 +512,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEBase.ilr_transform">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEBase.ilr_transform">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">ilr_transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">ilr_transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">'ilr'</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ilr</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">ILRtransformation</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ilr</span><span class="p">(</span><span class="n">X</span><span class="p">)</span></div>
|
||||
|
|
@ -522,7 +522,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyML">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyML">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">KDEyML</span><span class="p">(</span><span class="n">AggregativeSoftQuantifier</span><span class="p">,</span> <span class="n">KDEBase</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">KDEyML</span><span class="p">(</span><span class="n">AggregativeSoftQuantifier</span><span class="p">,</span> <span class="n">KDEBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Kernel Density Estimation model for quantification (KDEy) relying on the Kullback-Leibler divergence (KLD) as</span>
|
||||
<span class="sd"> the divergence measure to be minimized. This method was first proposed in the paper</span>
|
||||
|
|
@ -564,7 +564,7 @@
|
|||
<span class="sd"> :param random_state: a seed to be set before fitting any base quantifier (default None)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">:</span> <span class="n">BaseEstimator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">bandwidth</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">:</span> <span class="n">BaseEstimator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">bandwidth</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span>
|
||||
<span class="n">kernel</span><span class="o">=</span><span class="s1">'gaussian'</span><span class="p">,</span> <span class="n">shrinkage</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">classifier</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bandwidth</span> <span class="o">=</span> <span class="n">KDEBase</span><span class="o">.</span><span class="n">_check_bandwidth</span><span class="p">(</span><span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="p">)</span>
|
||||
|
|
@ -577,7 +577,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyML.aggregation_fit">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyML.aggregation_fit">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">aggregation_fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">aggregation_fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mix_densities</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_mixture_components</span><span class="p">(</span>
|
||||
<span class="n">classif_predictions</span><span class="p">,</span>
|
||||
<span class="n">labels</span><span class="p">,</span>
|
||||
|
|
@ -590,7 +590,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyML.aggregate">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyML.aggregate">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">aggregate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">posteriors</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">aggregate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">posteriors</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Searches for the mixture model parameter (the sought prevalence values) that maximizes the likelihood</span>
|
||||
<span class="sd"> of the data (i.e., that minimizes the negative log-likelihood)</span>
|
||||
|
|
@ -607,14 +607,14 @@
|
|||
<span class="k">for</span> <span class="n">kde_i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mix_densities</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">neg_loglikelihood</span><span class="p">(</span><span class="n">prev</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">neg_loglikelihood</span><span class="p">(</span><span class="n">prev</span><span class="p">):</span>
|
||||
<span class="n">prev</span> <span class="o">=</span> <span class="n">qp</span><span class="o">.</span><span class="n">error</span><span class="o">.</span><span class="n">smooth</span><span class="p">(</span><span class="n">prev</span><span class="p">,</span> <span class="n">eps</span><span class="o">=</span><span class="n">epsilon</span><span class="p">)</span>
|
||||
<span class="n">test_loglikelihood</span> <span class="o">=</span> <span class="n">logsumexp</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">prev</span><span class="p">)[:,</span> <span class="kc">None</span><span class="p">]</span> <span class="o">+</span> <span class="n">test_log_densities</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">test_loglikelihood</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">test_densities</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">pdf</span><span class="p">(</span><span class="n">kde_i</span><span class="p">,</span> <span class="n">posteriors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">kernel</span><span class="p">)</span> <span class="k">for</span> <span class="n">kde_i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">mix_densities</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">neg_loglikelihood</span><span class="p">(</span><span class="n">prev</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">neg_loglikelihood</span><span class="p">(</span><span class="n">prev</span><span class="p">):</span>
|
||||
<span class="n">test_mixture_likelihood</span> <span class="o">=</span> <span class="n">prev</span> <span class="o">@</span> <span class="n">test_densities</span>
|
||||
<span class="n">test_loglikelihood</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">test_mixture_likelihood</span> <span class="o">+</span> <span class="n">epsilon</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">test_loglikelihood</span><span class="p">)</span>
|
||||
|
|
@ -626,7 +626,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyHD">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyHD">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">KDEyHD</span><span class="p">(</span><span class="n">AggregativeSoftQuantifier</span><span class="p">,</span> <span class="n">KDEBase</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">KDEyHD</span><span class="p">(</span><span class="n">AggregativeSoftQuantifier</span><span class="p">,</span> <span class="n">KDEBase</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Kernel Density Estimation model for quantification (KDEy) relying on the squared Hellinger Disntace (HD) as</span>
|
||||
<span class="sd"> the divergence measure to be minimized. This method was first proposed in the paper</span>
|
||||
|
|
@ -671,7 +671,7 @@
|
|||
<span class="sd"> :param montecarlo_trials: number of Monte Carlo trials (default 10000)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">:</span> <span class="n">BaseEstimator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">divergence</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">'HD'</span><span class="p">,</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">:</span> <span class="n">BaseEstimator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">divergence</span><span class="p">:</span> <span class="nb">str</span><span class="o">=</span><span class="s1">'HD'</span><span class="p">,</span>
|
||||
<span class="n">bandwidth</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">montecarlo_trials</span><span class="o">=</span><span class="mi">10000</span><span class="p">):</span>
|
||||
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">classifier</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="p">)</span>
|
||||
|
|
@ -682,7 +682,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyHD.aggregation_fit">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyHD.aggregation_fit">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">aggregation_fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">aggregation_fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mix_densities</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_mixture_components</span><span class="p">(</span>
|
||||
<span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">classes_</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bandwidth</span><span class="p">,</span> <span class="s1">'gaussian'</span>
|
||||
<span class="p">)</span>
|
||||
|
|
@ -701,7 +701,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyHD.aggregate">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyHD.aggregate">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">aggregate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">posteriors</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">aggregate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">posteriors</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
|
||||
<span class="c1"># we retain all n*N examples (sampled from a mixture with uniform parameter), and then</span>
|
||||
<span class="c1"># apply importance sampling (IS). In this version we compute D(p_alpha||q) with IS</span>
|
||||
<span class="n">n_classes</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">mix_densities</span><span class="p">)</span>
|
||||
|
|
@ -709,7 +709,7 @@
|
|||
<span class="n">test_kde</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_kde_function</span><span class="p">(</span><span class="n">posteriors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">bandwidth</span><span class="p">,</span> <span class="s1">'gaussian'</span><span class="p">)</span>
|
||||
<span class="n">test_densities</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pdf</span><span class="p">(</span><span class="n">test_kde</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">reference_samples</span><span class="p">,</span> <span class="s1">'gaussian'</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">f_squared_hellinger</span><span class="p">(</span><span class="n">u</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">f_squared_hellinger</span><span class="p">(</span><span class="n">u</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">u</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span>
|
||||
|
||||
<span class="c1"># todo: this will fail when self.divergence is a callable, and is not the right place to do it anyway</span>
|
||||
|
|
@ -725,7 +725,7 @@
|
|||
<span class="n">p_class</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">reference_classwise_densities</span> <span class="o">+</span> <span class="n">epsilon</span>
|
||||
<span class="n">fracs</span> <span class="o">=</span> <span class="n">p_class</span><span class="o">/</span><span class="n">qs</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">divergence</span><span class="p">(</span><span class="n">prev</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">divergence</span><span class="p">(</span><span class="n">prev</span><span class="p">):</span>
|
||||
<span class="c1"># ps / qs = (prev @ p_class) / qs = prev @ (p_class / qs) = prev @ fracs</span>
|
||||
<span class="n">ps_div_qs</span> <span class="o">=</span> <span class="n">prev</span> <span class="o">@</span> <span class="n">fracs</span>
|
||||
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span> <span class="n">f</span><span class="p">(</span><span class="n">ps_div_qs</span><span class="p">)</span> <span class="o">*</span> <span class="n">iw</span> <span class="p">)</span>
|
||||
|
|
@ -737,7 +737,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyCS">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyCS">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">KDEyCS</span><span class="p">(</span><span class="n">AggregativeSoftQuantifier</span><span class="p">):</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">KDEyCS</span><span class="p">(</span><span class="n">AggregativeSoftQuantifier</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Kernel Density Estimation model for quantification (KDEy) relying on the Cauchy-Schwarz divergence (CS) as</span>
|
||||
<span class="sd"> the divergence measure to be minimized. This method was first proposed in the paper</span>
|
||||
|
|
@ -774,13 +774,13 @@
|
|||
<span class="sd"> :param bandwidth: float, the bandwidth of the Kernel</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">:</span> <span class="n">BaseEstimator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">bandwidth</span><span class="o">=</span><span class="mf">0.1</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classifier</span><span class="p">:</span> <span class="n">BaseEstimator</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">val_split</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">bandwidth</span><span class="o">=</span><span class="mf">0.1</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">classifier</span><span class="p">,</span> <span class="n">fit_classifier</span><span class="p">,</span> <span class="n">val_split</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bandwidth</span> <span class="o">=</span> <span class="n">KDEBase</span><span class="o">.</span><span class="n">_check_bandwidth</span><span class="p">(</span><span class="n">bandwidth</span><span class="p">,</span> <span class="n">kernel</span><span class="o">=</span><span class="s1">'gaussian'</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="KDEyCS.gram_matrix_mix_sum">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyCS.gram_matrix_mix_sum">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">gram_matrix_mix_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">gram_matrix_mix_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">Y</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="c1"># this adapts the output of the rbf_kernel function (pairwise evaluations of Gaussian kernels k(x,y))</span>
|
||||
<span class="c1"># to contain pairwise evaluations of N(x|mu,Sigma1+Sigma2) with mu=y and Sigma1 and Sigma2 are </span>
|
||||
<span class="c1"># two "scalar matrices" (h^2)*I each, so Sigma1+Sigma2 has scalar 2(h^2) (h is the bandwidth)</span>
|
||||
|
|
@ -795,7 +795,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyCS.aggregation_fit">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyCS.aggregation_fit">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">aggregation_fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">aggregation_fit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span><span class="p">):</span>
|
||||
|
||||
<span class="n">P</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">classif_predictions</span><span class="p">,</span> <span class="n">labels</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">classes_</span><span class="p">)</span>
|
||||
|
|
@ -827,7 +827,7 @@
|
|||
|
||||
<div class="viewcode-block" id="KDEyCS.aggregate">
|
||||
<a class="viewcode-back" href="../../../quapy.method.html#quapy.method._kdey.KDEyCS.aggregate">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">aggregate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">posteriors</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">aggregate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">posteriors</span><span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">):</span>
|
||||
<span class="n">Ptr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Ptr</span>
|
||||
<span class="n">Pte</span> <span class="o">=</span> <span class="n">posteriors</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ytr</span>
|
||||
|
|
@ -847,7 +847,7 @@
|
|||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
|
||||
<span class="n">tr_te_sums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">gram_matrix_mix_sum</span><span class="p">(</span><span class="n">Ptr</span><span class="p">[</span><span class="n">y</span><span class="o">==</span><span class="n">i</span><span class="p">],</span> <span class="n">Pte</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">divergence</span><span class="p">(</span><span class="n">alpha</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">divergence</span><span class="p">(</span><span class="n">alpha</span><span class="p">):</span>
|
||||
<span class="c1"># called \overline{r} in the paper</span>
|
||||
<span class="n">alpha_ratio</span> <span class="o">=</span> <span class="n">alpha</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">counts_inv</span>
|
||||
|
||||
|
|
@ -888,8 +888,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -923,7 +923,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -736,8 +736,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -771,7 +771,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -2453,8 +2453,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -2488,7 +2488,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -550,8 +550,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -585,7 +585,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -1178,8 +1178,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -1213,7 +1213,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -850,8 +850,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -885,7 +885,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -861,8 +861,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -896,7 +896,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -1274,8 +1274,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -1309,7 +1309,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -1074,8 +1074,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -1109,7 +1109,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -26,18 +26,18 @@
|
|||
</noscript>
|
||||
|
||||
<!-- Loaded before other Sphinx assets -->
|
||||
<link href="../../_static/styles/theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=a95f357e85573c9b56d5" rel="stylesheet" />
|
||||
<link href="../../_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=a746c00c" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=8f2a1f02" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/sphinx-design.min.css?v=95c83b7e" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/custom.css?v=9f2a2228" />
|
||||
|
||||
<!-- So that users can add custom icons -->
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<!-- Pre-loaded scripts that we'll load fully later -->
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
|
||||
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
|
||||
|
||||
<script src="../../_static/documentation_options.js?v=37f418d5"></script>
|
||||
<script src="../../_static/doctools.js?v=fd6eb6e6"></script>
|
||||
|
|
@ -370,26 +370,26 @@
|
|||
<article class="bd-article">
|
||||
|
||||
<h1>Source code for quapy.util</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">contextlib</span>
|
||||
<span class="kn">import</span> <span class="nn">itertools</span>
|
||||
<span class="kn">import</span> <span class="nn">multiprocessing</span>
|
||||
<span class="kn">import</span> <span class="nn">os</span>
|
||||
<span class="kn">import</span> <span class="nn">pickle</span>
|
||||
<span class="kn">import</span> <span class="nn">urllib</span>
|
||||
<span class="kn">from</span> <span class="nn">pathlib</span> <span class="kn">import</span> <span class="n">Path</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">ExitStack</span>
|
||||
<span></span><span class="kn">import</span><span class="w"> </span><span class="nn">contextlib</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">itertools</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">multiprocessing</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">pickle</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">urllib</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">contextlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">ExitStack</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">quapy</span> <span class="k">as</span> <span class="nn">qp</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">quapy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">qp</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">from</span> <span class="nn">joblib</span> <span class="kn">import</span> <span class="n">Parallel</span><span class="p">,</span> <span class="n">delayed</span>
|
||||
<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">time</span>
|
||||
<span class="kn">import</span> <span class="nn">signal</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">joblib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Parallel</span><span class="p">,</span> <span class="n">delayed</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">time</span><span class="w"> </span><span class="kn">import</span> <span class="n">time</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">signal</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_parallel_slices</span><span class="p">(</span><span class="n">n_tasks</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_get_parallel_slices</span><span class="p">(</span><span class="n">n_tasks</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">n_jobs</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">n_jobs</span> <span class="o">=</span> <span class="n">multiprocessing</span><span class="o">.</span><span class="n">cpu_count</span><span class="p">()</span>
|
||||
<span class="n">batch</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">n_tasks</span> <span class="o">/</span> <span class="n">n_jobs</span><span class="p">)</span>
|
||||
|
|
@ -399,7 +399,7 @@
|
|||
|
||||
<div class="viewcode-block" id="map_parallel">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.map_parallel">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">map_parallel</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">map_parallel</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Applies func to n_jobs slices of args. E.g., if args is an array of 99 items and n_jobs=2, then</span>
|
||||
<span class="sd"> func is applied in two parallel processes to args[0:50] and to args[50:99]. func is a function</span>
|
||||
|
|
@ -420,7 +420,7 @@
|
|||
|
||||
<div class="viewcode-block" id="parallel">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.parallel">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">parallel</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">,</span> <span class="n">seed</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">asarray</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">backend</span><span class="o">=</span><span class="s1">'loky'</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">parallel</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">,</span> <span class="n">seed</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">asarray</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">backend</span><span class="o">=</span><span class="s1">'loky'</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> A wrapper of multiprocessing:</span>
|
||||
|
||||
|
|
@ -438,7 +438,7 @@
|
|||
<span class="sd"> :param backend: indicates the backend used for handling parallel works</span>
|
||||
<span class="sd"> :param open_args: if True, then the delayed function is called on *args_i, instead of on args_i</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">func_dec</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">seed</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">func_dec</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">seed</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="n">qp</span><span class="o">.</span><span class="n">environ</span> <span class="o">=</span> <span class="n">environ</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
<span class="n">qp</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'N_JOBS'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="c1">#set a context with a temporal seed to ensure results are reproducibles in parallel</span>
|
||||
|
|
@ -458,7 +458,7 @@
|
|||
|
||||
<div class="viewcode-block" id="parallel_unpack">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.parallel_unpack">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">parallel_unpack</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">,</span> <span class="n">seed</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">asarray</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">backend</span><span class="o">=</span><span class="s1">'loky'</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">parallel_unpack</span><span class="p">(</span><span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">n_jobs</span><span class="p">,</span> <span class="n">seed</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">asarray</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">backend</span><span class="o">=</span><span class="s1">'loky'</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> A wrapper of multiprocessing:</span>
|
||||
|
||||
|
|
@ -476,7 +476,7 @@
|
|||
<span class="sd"> :param backend: indicates the backend used for handling parallel works</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">func_dec</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">seed</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">func_dec</span><span class="p">(</span><span class="n">environ</span><span class="p">,</span> <span class="n">seed</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="n">qp</span><span class="o">.</span><span class="n">environ</span> <span class="o">=</span> <span class="n">environ</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
<span class="n">qp</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'N_JOBS'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="c1"># set a context with a temporal seed to ensure results are reproducibles in parallel</span>
|
||||
|
|
@ -496,7 +496,7 @@
|
|||
<div class="viewcode-block" id="temp_seed">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.temp_seed">[docs]</a>
|
||||
<span class="nd">@contextlib</span><span class="o">.</span><span class="n">contextmanager</span>
|
||||
<span class="k">def</span> <span class="nf">temp_seed</span><span class="p">(</span><span class="n">random_state</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">temp_seed</span><span class="p">(</span><span class="n">random_state</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Can be used in a "with" context to set a temporal seed without modifying the outer numpy's current state. E.g.:</span>
|
||||
|
||||
|
|
@ -520,14 +520,14 @@
|
|||
|
||||
<div class="viewcode-block" id="download_file">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.download_file">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">download_file</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">archive_filename</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">download_file</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">archive_filename</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Downloads a file from a url</span>
|
||||
|
||||
<span class="sd"> :param url: the url</span>
|
||||
<span class="sd"> :param archive_filename: destination filename</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">progress</span><span class="p">(</span><span class="n">blocknum</span><span class="p">,</span> <span class="n">bs</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">progress</span><span class="p">(</span><span class="n">blocknum</span><span class="p">,</span> <span class="n">bs</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="n">total_sz_mb</span> <span class="o">=</span> <span class="s1">'</span><span class="si">%.2f</span><span class="s1"> MB'</span> <span class="o">%</span> <span class="p">(</span><span class="n">size</span> <span class="o">/</span> <span class="mf">1e6</span><span class="p">)</span>
|
||||
<span class="n">current_sz_mb</span> <span class="o">=</span> <span class="s1">'</span><span class="si">%.2f</span><span class="s1"> MB'</span> <span class="o">%</span> <span class="p">((</span><span class="n">blocknum</span> <span class="o">*</span> <span class="n">bs</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1e6</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\r</span><span class="s1">downloaded </span><span class="si">%s</span><span class="s1"> / </span><span class="si">%s</span><span class="s1">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">current_sz_mb</span><span class="p">,</span> <span class="n">total_sz_mb</span><span class="p">),</span> <span class="n">end</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span>
|
||||
|
|
@ -539,7 +539,7 @@
|
|||
|
||||
<div class="viewcode-block" id="download_file_if_not_exists">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.download_file_if_not_exists">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">download_file_if_not_exists</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">archive_filename</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">download_file_if_not_exists</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">archive_filename</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Downloads a file (using :meth:`download_file`) if the file does not exist.</span>
|
||||
|
||||
|
|
@ -555,7 +555,7 @@
|
|||
|
||||
<div class="viewcode-block" id="create_if_not_exist">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.create_if_not_exist">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">create_if_not_exist</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">create_if_not_exist</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> An alias to `os.makedirs(path, exist_ok=True)` that also returns the path. This is useful in cases like, e.g.:</span>
|
||||
|
||||
|
|
@ -571,7 +571,7 @@
|
|||
|
||||
<div class="viewcode-block" id="get_quapy_home">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.get_quapy_home">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">get_quapy_home</span><span class="p">():</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">get_quapy_home</span><span class="p">():</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Gets the home directory of QuaPy, i.e., the directory where QuaPy saves permanent data, such as dowloaded datasets.</span>
|
||||
<span class="sd"> This directory is `~/quapy_data`</span>
|
||||
|
|
@ -586,7 +586,7 @@
|
|||
|
||||
<div class="viewcode-block" id="create_parent_dir">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.create_parent_dir">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">create_parent_dir</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">create_parent_dir</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Creates the parent dir (if any) of a given path, if not exists. E.g., for `./path/to/file.txt`, the path `./path/to`</span>
|
||||
<span class="sd"> is created.</span>
|
||||
|
|
@ -601,7 +601,7 @@
|
|||
|
||||
<div class="viewcode-block" id="save_text_file">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.save_text_file">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">save_text_file</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">save_text_file</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">text</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Saves a text file to disk, given its full path, and creates the parent directory if missing.</span>
|
||||
|
||||
|
|
@ -616,7 +616,7 @@
|
|||
|
||||
<div class="viewcode-block" id="pickled_resource">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.pickled_resource">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">pickled_resource</span><span class="p">(</span><span class="n">pickle_path</span><span class="p">:</span><span class="nb">str</span><span class="p">,</span> <span class="n">generation_func</span><span class="p">:</span><span class="nb">callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">pickled_resource</span><span class="p">(</span><span class="n">pickle_path</span><span class="p">:</span><span class="nb">str</span><span class="p">,</span> <span class="n">generation_func</span><span class="p">:</span><span class="nb">callable</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Allows for fast reuse of resources that are generated only once by calling generation_func(\\*args). The next times</span>
|
||||
<span class="sd"> this function is invoked, it loads the pickled resource. Example:</span>
|
||||
|
|
@ -646,7 +646,7 @@
|
|||
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_check_sample_size</span><span class="p">(</span><span class="n">sample_size</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">_check_sample_size</span><span class="p">(</span><span class="n">sample_size</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">sample_size</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">assert</span> <span class="n">qp</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">'SAMPLE_SIZE'</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">,</span> \
|
||||
<span class="s1">'error: sample_size set to None, and cannot be resolved from the environment'</span>
|
||||
|
|
@ -658,8 +658,8 @@
|
|||
|
||||
<div class="viewcode-block" id="load_report">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.load_report">[docs]</a>
|
||||
<span class="k">def</span> <span class="nf">load_report</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">str2prev_arr</span><span class="p">(</span><span class="n">strprev</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">load_report</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">as_dict</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">str2prev_arr</span><span class="p">(</span><span class="n">strprev</span><span class="p">):</span>
|
||||
<span class="n">within</span> <span class="o">=</span> <span class="n">strprev</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s1">'[]'</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
|
||||
<span class="n">float_list</span> <span class="o">=</span> <span class="p">[</span><span class="nb">float</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">within</span><span class="p">]</span>
|
||||
<span class="n">float_list</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.</span> <span class="o">-</span> <span class="nb">sum</span><span class="p">(</span><span class="n">float_list</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
|
@ -683,7 +683,7 @@
|
|||
|
||||
<div class="viewcode-block" id="EarlyStop">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.EarlyStop">[docs]</a>
|
||||
<span class="k">class</span> <span class="nc">EarlyStop</span><span class="p">:</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">EarlyStop</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> A class implementing the early-stopping condition typically used for training neural networks.</span>
|
||||
|
||||
|
|
@ -708,7 +708,7 @@
|
|||
<span class="sd"> :ivar IMPROVED: flag (boolean) indicating whether there was an improvement in the last call</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">patience</span><span class="p">,</span> <span class="n">lower_is_better</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">patience</span><span class="p">,</span> <span class="n">lower_is_better</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">PATIENCE_LIMIT</span> <span class="o">=</span> <span class="n">patience</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">better</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">:</span> <span class="n">a</span><span class="o"><</span><span class="n">b</span> <span class="k">if</span> <span class="n">lower_is_better</span> <span class="k">else</span> <span class="n">a</span><span class="o">></span><span class="n">b</span>
|
||||
|
|
@ -718,7 +718,7 @@
|
|||
<span class="bp">self</span><span class="o">.</span><span class="n">STOP</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">IMPROVED</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">watch_score</span><span class="p">,</span> <span class="n">epoch</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">watch_score</span><span class="p">,</span> <span class="n">epoch</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Commits the new score found in epoch `epoch`. If the score improves over the best score found so far, then</span>
|
||||
<span class="sd"> the patiente counter gets reset. If otherwise, the patience counter is decreased, and in case it reachs 0,</span>
|
||||
|
|
@ -742,7 +742,7 @@
|
|||
<div class="viewcode-block" id="timeout">
|
||||
<a class="viewcode-back" href="../../quapy.html#quapy.util.timeout">[docs]</a>
|
||||
<span class="nd">@contextlib</span><span class="o">.</span><span class="n">contextmanager</span>
|
||||
<span class="k">def</span> <span class="nf">timeout</span><span class="p">(</span><span class="n">seconds</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">timeout</span><span class="p">(</span><span class="n">seconds</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Opens a context that will launch an exception if not closed after a given number of seconds</span>
|
||||
|
||||
|
|
@ -761,7 +761,7 @@
|
|||
<span class="sd"> :param seconds: number of seconds, set to <=0 to ignore the timer</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">seconds</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="nf">handler</span><span class="p">(</span><span class="n">signum</span><span class="p">,</span> <span class="n">frame</span><span class="p">):</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">handler</span><span class="p">(</span><span class="n">signum</span><span class="p">,</span> <span class="n">frame</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">TimeoutError</span><span class="p">()</span>
|
||||
|
||||
<span class="n">signal</span><span class="o">.</span><span class="n">signal</span><span class="p">(</span><span class="n">signal</span><span class="o">.</span><span class="n">SIGALRM</span><span class="p">,</span> <span class="n">handler</span><span class="p">)</span>
|
||||
|
|
@ -802,8 +802,8 @@
|
|||
</div>
|
||||
|
||||
<!-- Scripts loaded after <body> so the DOM is not blocked -->
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=a95f357e85573c9b56d5"></script>
|
||||
<script defer src="../../_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
|
||||
<script defer src="../../_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
|
||||
|
||||
<footer class="bd-footer">
|
||||
<div class="bd-footer__inner bd-page-width">
|
||||
|
|
@ -837,7 +837,7 @@
|
|||
<div class="footer-item">
|
||||
<p class="theme-version">
|
||||
<!-- # L10n: Setting the PST URL as an argument as this does not need to be localized -->
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.19.0.
|
||||
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.20.0.
|
||||
</p></div>
|
||||
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -141,14 +141,13 @@ w_i=\frac{p_i}{p^{tr}_i}
|
|||
|
||||
Implemented as `sre` and `msre`.
|
||||
|
||||
Aitchison distance and its mean version:
|
||||
The Aitchison Quantification Error (AQE) and its mean version (MAQE) are implemented as `aqe` and `maqe` using the
|
||||
Aitchison Distance (available in `qp.functional.AitchisonDistance`, here denoted `d_A`):
|
||||
|
||||
```{math}
|
||||
d_A(p,\hat{p}) = \|\mathrm{clr}(p)-\mathrm{clr}(\hat{p})\|_2
|
||||
```
|
||||
|
||||
Implemented as `aitchisondist` and `maitchisondist`.
|
||||
|
||||
### Additional measures
|
||||
|
||||
Match distance computes the cumulative-distribution discrepancy under the
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ large and exhaustive grids become impractical.
|
|||
and is here given a different name simply to allow both implementations coexist in QuaPy. "UPP" is not a
|
||||
proper accademic name, and practitioners should rather refer to it as APP.
|
||||
|
||||
## Natural-Prevalence Protocol
|
||||
## NPP: Natural-Prevalence Protocol
|
||||
|
||||
The "natural-prevalence protocol" (NPP) comes down to generating samples drawn
|
||||
uniformly at random from the original labelled collection. This protocol has
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
import numpy as np
|
||||
from sklearn.metrics import f1_score
|
||||
import quapy as qp
|
||||
from functional import AitchisonDistance
|
||||
|
||||
|
||||
def from_name(err_name):
|
||||
|
|
@ -174,7 +175,7 @@ def msre(prevs_true, prevs_hat, prevs_train, eps=0.):
|
|||
return np.mean(sre(prevs_true, prevs_hat, prevs_train, eps))
|
||||
|
||||
|
||||
def aitchisondist(prevs_true, prevs_hat):
|
||||
def aqe(prevs_true, prevs_hat):
|
||||
"""
|
||||
Computes the Aitchison distance between two prevalence vectors.
|
||||
The Aitchison distance between prevalence vectors :math:`p` and
|
||||
|
|
@ -187,13 +188,10 @@ def aitchisondist(prevs_true, prevs_hat):
|
|||
:param prevs_hat: array-like with the predicted prevalence values
|
||||
:return: Aitchison distance
|
||||
"""
|
||||
from quapy.functional import CLRtransformation
|
||||
|
||||
clr = CLRtransformation()
|
||||
return np.linalg.norm(clr(prevs_true) - clr(prevs_hat), axis=-1)
|
||||
return AitchisonDistance(prevs_true, prevs_hat)
|
||||
|
||||
|
||||
def maitchisondist(prevs_true, prevs_hat):
|
||||
def maqe(prevs_true, prevs_hat):
|
||||
"""
|
||||
Computes the mean Aitchison distance (see :meth:`quapy.error.aitchisondist`)
|
||||
across the sample pairs, i.e.,
|
||||
|
|
@ -204,7 +202,7 @@ def maitchisondist(prevs_true, prevs_hat):
|
|||
:param prevs_hat: array-like with the predicted prevalence values
|
||||
:return: mean Aitchison distance
|
||||
"""
|
||||
return np.mean(aitchisondist(prevs_true, prevs_hat))
|
||||
return np.mean(aqe(prevs_true, prevs_hat))
|
||||
|
||||
|
||||
def mkld(prevs_true, prevs_hat, eps=None):
|
||||
|
|
@ -453,8 +451,8 @@ def __check_eps(eps=None):
|
|||
|
||||
|
||||
CLASSIFICATION_ERROR = {f1e, acce}
|
||||
QUANTIFICATION_ERROR = {mae, mnae, mrae, mnrae, mse, mkld, mnkld, msre, maitchisondist}
|
||||
QUANTIFICATION_ERROR_SINGLE = {ae, nae, rae, nrae, se, kld, nkld, sre, aitchisondist}
|
||||
QUANTIFICATION_ERROR = {mae, mnae, mrae, mnrae, mse, mkld, mnkld, msre, maqe}
|
||||
QUANTIFICATION_ERROR_SINGLE = {ae, nae, rae, nrae, se, kld, nkld, sre, aqe}
|
||||
QUANTIFICATION_ERROR_SMOOTH = {kld, nkld, rae, nrae, mkld, mnkld, mrae}
|
||||
CLASSIFICATION_ERROR_NAMES = {func.__name__ for func in CLASSIFICATION_ERROR}
|
||||
QUANTIFICATION_ERROR_NAMES = {func.__name__ for func in QUANTIFICATION_ERROR}
|
||||
|
|
@ -467,8 +465,8 @@ f1_error = f1e
|
|||
acc_error = acce
|
||||
mean_absolute_error = mae
|
||||
squared_ratio_error = sre
|
||||
dist_aitchison = aitchisondist
|
||||
mean_dist_aitchison = maitchisondist
|
||||
dist_aitchison = aqe
|
||||
mean_dist_aitchison = maqe
|
||||
absolute_error = ae
|
||||
mean_relative_absolute_error = mrae
|
||||
relative_absolute_error = rae
|
||||
|
|
|
|||
|
|
@ -393,6 +393,23 @@ def TopsoeDistance(P: np.ndarray, Q: np.ndarray, epsilon: float=1e-20):
|
|||
return np.sum(P*np.log((2*P+epsilon)/(P+Q+epsilon)) + Q*np.log((2*Q+epsilon)/(P+Q+epsilon)))
|
||||
|
||||
|
||||
def AitchisonDistance(prevs_true, prevs_hat):
|
||||
"""
|
||||
Computes the Aitchison distance between two prevalence vectors.
|
||||
The Aitchison distance between prevalence vectors :math:`p` and
|
||||
:math:`\\hat{p}` is computed as
|
||||
:math:`d_A(p,\\hat{p})=\\|\\mathrm{clr}(p)-\\mathrm{clr}(\\hat{p})\\|_2`,
|
||||
where :math:`\\mathrm{clr}(p)_i=\\log p_i-\\frac{1}{|\\mathcal{Y}|}
|
||||
\\sum_{j \\in \\mathcal{Y}} \\log p_j`.
|
||||
|
||||
:param prevs_true: array-like with the true prevalence values
|
||||
:param prevs_hat: array-like with the predicted prevalence values
|
||||
:return: Aitchison distance
|
||||
"""
|
||||
clr = CLRtransformation()
|
||||
return np.linalg.norm(clr(prevs_true) - clr(prevs_hat), axis=-1)
|
||||
|
||||
|
||||
def get_divergence(divergence: Union[str, Callable]):
|
||||
"""
|
||||
Guarantees that the divergence received as argument is a function. That is, if this argument is already
|
||||
|
|
@ -407,6 +424,8 @@ def get_divergence(divergence: Union[str, Callable]):
|
|||
return HellingerDistance
|
||||
elif divergence=='topsoe':
|
||||
return TopsoeDistance
|
||||
elif divergence=='aitchison':
|
||||
return AitchisonDistance
|
||||
else:
|
||||
raise ValueError(f'unknown divergence {divergence}')
|
||||
elif callable(divergence):
|
||||
|
|
|
|||
Loading…
Reference in New Issue