Skip to content

Commit 0121670

Browse files
committed
improve graph documentation
1 parent dcb8672 commit 0121670

File tree

9 files changed

+659
-12
lines changed

9 files changed

+659
-12
lines changed

coverage.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ tests/test_threshold_stats.py . [100%]
1919
Name Stmts Miss Cover
2020
--------------------------------------
2121
wvpy/__init__.py 3 0 100%
22-
wvpy/util.py 305 135 56%
22+
wvpy/util.py 307 137 55%
2323
--------------------------------------
24-
TOTAL 308 135 56%
24+
TOTAL 310 137 56%
2525

2626

27-
============================== 13 passed in 5.65s ==============================
27+
============================== 13 passed in 5.59s ==============================

pkg/Examples/example_graphs.ipynb

Lines changed: 386 additions & 0 deletions
Large diffs are not rendered by default.

pkg/build/lib/wvpy/util.py

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,9 +382,23 @@ def dual_density_plot_proba1(
382382
:param xlabel=x axis label
383383
:param show: logical, if True call matplotlib.pyplot.show()
384384
:return: None
385+
386+
Example:
387+
388+
d = pandas.DataFrame({
389+
'x': [.1, .2, .3, .4, .5],
390+
'y': [False, False, True, True, False]
391+
})
392+
d['x0'] = 1 - d['x']
393+
pmat = numpy.asarray(d.loc[:, ['x0', 'x']])
394+
395+
wvpy.util.dual_density_plot_proba1(
396+
probs=pmat,
397+
istrue=d['y'],
398+
)
385399
"""
386-
# TODO: vectorize
387400
istrue = numpy.asarray(istrue)
401+
probs = numpy.asarray(probs)
388402
matplotlib.pyplot.gcf().clear()
389403
preds_on_positive = [
390404
probs[i, 1] for i in range(len(probs)) if istrue[i] == truth_target
@@ -410,9 +424,23 @@ def dual_hist_plot_proba1(probs, istrue, *, show=True):
410424
:param istrue: vector of ground truth to condition on
411425
:param show: logical, if True call matplotlib.pyplot.show()
412426
:return: None
427+
428+
Example:
429+
430+
d = pandas.DataFrame({
431+
'x': [.1, .2, .3, .4, .5],
432+
'y': [False, False, True, True, False]
433+
})
434+
d['x0'] = 1 - d['x']
435+
pmat = numpy.asarray(d.loc[:, ['x0', 'x']])
436+
437+
wvpy.util.dual_hist_plot_proba1(
438+
probs=pmat,
439+
istrue=d['y'],
440+
)
413441
"""
414-
# TODO: vectorize
415442
istrue = numpy.asarray(istrue)
443+
probs = numpy.asarray(probs)
416444
matplotlib.pyplot.gcf().clear()
417445
pf = pandas.DataFrame(
418446
{"prob": [probs[i, 1] for i in range(probs.shape[0])], "istrue": istrue}
@@ -433,6 +461,18 @@ def gain_curve_plot(prediction, outcome, title="Gain curve plot", *, show=True):
433461
:param title: plot title
434462
:param show: logical, if True call matplotlib.pyplot.show()
435463
:return: None
464+
465+
Example:
466+
467+
d = pandas.DataFrame({
468+
'x': [.1, .2, .3, .4, .5],
469+
'y': [0, 0, 1, 1, 0]
470+
})
471+
472+
wvpy.util.gain_curve_plot(
473+
prediction=d['x'],
474+
outcome=d['y'],
475+
)
436476
"""
437477

438478
df = pandas.DataFrame(
@@ -494,6 +534,18 @@ def lift_curve_plot(prediction, outcome, title="Lift curve plot", *, show=True):
494534
:param title: plot title
495535
:param show: logical, if True call matplotlib.pyplot.show()
496536
:return: None
537+
538+
Example:
539+
540+
d = pandas.DataFrame({
541+
'x': [.1, .2, .3, .4, .5],
542+
'y': [0, 0, 1, 1, 0]
543+
})
544+
545+
wvpy.util.lift_curve_plot(
546+
prediction=d['x'],
547+
outcome=d['y'],
548+
)
497549
"""
498550

499551
df = pandas.DataFrame(
84 Bytes
Binary file not shown.

pkg/dist/wvpy-0.2.8.tar.gz

136 KB
Binary file not shown.

pkg/docs/search.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/docs/wvpy/util.html

Lines changed: 160 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -498,9 +498,23 @@ <h1 class="modulename">
498498
<span class="sd"> :param xlabel=x axis label</span>
499499
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
500500
<span class="sd"> :return: None</span>
501+
502+
<span class="sd"> Example:</span>
503+
504+
<span class="sd"> d = pandas.DataFrame({</span>
505+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
506+
<span class="sd"> &#39;y&#39;: [False, False, True, True, False]</span>
507+
<span class="sd"> })</span>
508+
<span class="sd"> d[&#39;x0&#39;] = 1 - d[&#39;x&#39;]</span>
509+
<span class="sd"> pmat = numpy.asarray(d.loc[:, [&#39;x0&#39;, &#39;x&#39;]])</span>
510+
511+
<span class="sd"> wvpy.util.dual_density_plot_proba1(</span>
512+
<span class="sd"> probs=pmat,</span>
513+
<span class="sd"> istrue=d[&#39;y&#39;],</span>
514+
<span class="sd"> )</span>
501515
<span class="sd"> &quot;&quot;&quot;</span>
502-
<span class="c1"># TODO: vectorize</span>
503516
<span class="n">istrue</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">istrue</span><span class="p">)</span>
517+
<span class="n">probs</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">probs</span><span class="p">)</span>
504518
<span class="n">matplotlib</span><span class="o">.</span><span class="n">pyplot</span><span class="o">.</span><span class="n">gcf</span><span class="p">()</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
505519
<span class="n">preds_on_positive</span> <span class="o">=</span> <span class="p">[</span>
506520
<span class="n">probs</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <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="nb">len</span><span class="p">(</span><span class="n">probs</span><span class="p">))</span> <span class="k">if</span> <span class="n">istrue</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">truth_target</span>
@@ -526,9 +540,23 @@ <h1 class="modulename">
526540
<span class="sd"> :param istrue: vector of ground truth to condition on</span>
527541
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
528542
<span class="sd"> :return: None</span>
543+
544+
<span class="sd"> Example:</span>
545+
546+
<span class="sd"> d = pandas.DataFrame({</span>
547+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
548+
<span class="sd"> &#39;y&#39;: [False, False, True, True, False]</span>
549+
<span class="sd"> })</span>
550+
<span class="sd"> d[&#39;x0&#39;] = 1 - d[&#39;x&#39;]</span>
551+
<span class="sd"> pmat = numpy.asarray(d.loc[:, [&#39;x0&#39;, &#39;x&#39;]])</span>
552+
553+
<span class="sd"> wvpy.util.dual_hist_plot_proba1(</span>
554+
<span class="sd"> probs=pmat,</span>
555+
<span class="sd"> istrue=d[&#39;y&#39;],</span>
556+
<span class="sd"> )</span>
529557
<span class="sd"> &quot;&quot;&quot;</span>
530-
<span class="c1"># TODO: vectorize</span>
531558
<span class="n">istrue</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">istrue</span><span class="p">)</span>
559+
<span class="n">probs</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">probs</span><span class="p">)</span>
532560
<span class="n">matplotlib</span><span class="o">.</span><span class="n">pyplot</span><span class="o">.</span><span class="n">gcf</span><span class="p">()</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
533561
<span class="n">pf</span> <span class="o">=</span> <span class="n">pandas</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
534562
<span class="p">{</span><span class="s2">&quot;prob&quot;</span><span class="p">:</span> <span class="p">[</span><span class="n">probs</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <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">probs</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">])],</span> <span class="s2">&quot;istrue&quot;</span><span class="p">:</span> <span class="n">istrue</span><span class="p">}</span>
@@ -549,6 +577,18 @@ <h1 class="modulename">
549577
<span class="sd"> :param title: plot title</span>
550578
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
551579
<span class="sd"> :return: None</span>
580+
581+
<span class="sd"> Example:</span>
582+
583+
<span class="sd"> d = pandas.DataFrame({</span>
584+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
585+
<span class="sd"> &#39;y&#39;: [0, 0, 1, 1, 0]</span>
586+
<span class="sd"> })</span>
587+
588+
<span class="sd"> wvpy.util.gain_curve_plot(</span>
589+
<span class="sd"> prediction=d[&#39;x&#39;],</span>
590+
<span class="sd"> outcome=d[&#39;y&#39;],</span>
591+
<span class="sd"> )</span>
552592
<span class="sd"> &quot;&quot;&quot;</span>
553593

554594
<span class="n">df</span> <span class="o">=</span> <span class="n">pandas</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
@@ -610,6 +650,18 @@ <h1 class="modulename">
610650
<span class="sd"> :param title: plot title</span>
611651
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
612652
<span class="sd"> :return: None</span>
653+
654+
<span class="sd"> Example:</span>
655+
656+
<span class="sd"> d = pandas.DataFrame({</span>
657+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
658+
<span class="sd"> &#39;y&#39;: [0, 0, 1, 1, 0]</span>
659+
<span class="sd"> })</span>
660+
661+
<span class="sd"> wvpy.util.lift_curve_plot(</span>
662+
<span class="sd"> prediction=d[&#39;x&#39;],</span>
663+
<span class="sd"> outcome=d[&#39;y&#39;],</span>
664+
<span class="sd"> )</span>
613665
<span class="sd"> &quot;&quot;&quot;</span>
614666

615667
<span class="n">df</span> <span class="o">=</span> <span class="n">pandas</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
@@ -1691,9 +1743,23 @@ <h1 class="modulename">
16911743
<span class="sd"> :param xlabel=x axis label</span>
16921744
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
16931745
<span class="sd"> :return: None</span>
1746+
1747+
<span class="sd"> Example:</span>
1748+
1749+
<span class="sd"> d = pandas.DataFrame({</span>
1750+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
1751+
<span class="sd"> &#39;y&#39;: [False, False, True, True, False]</span>
1752+
<span class="sd"> })</span>
1753+
<span class="sd"> d[&#39;x0&#39;] = 1 - d[&#39;x&#39;]</span>
1754+
<span class="sd"> pmat = numpy.asarray(d.loc[:, [&#39;x0&#39;, &#39;x&#39;]])</span>
1755+
1756+
<span class="sd"> wvpy.util.dual_density_plot_proba1(</span>
1757+
<span class="sd"> probs=pmat,</span>
1758+
<span class="sd"> istrue=d[&#39;y&#39;],</span>
1759+
<span class="sd"> )</span>
16941760
<span class="sd"> &quot;&quot;&quot;</span>
1695-
<span class="c1"># TODO: vectorize</span>
16961761
<span class="n">istrue</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">istrue</span><span class="p">)</span>
1762+
<span class="n">probs</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">probs</span><span class="p">)</span>
16971763
<span class="n">matplotlib</span><span class="o">.</span><span class="n">pyplot</span><span class="o">.</span><span class="n">gcf</span><span class="p">()</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
16981764
<span class="n">preds_on_positive</span> <span class="o">=</span> <span class="p">[</span>
16991765
<span class="n">probs</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <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="nb">len</span><span class="p">(</span><span class="n">probs</span><span class="p">))</span> <span class="k">if</span> <span class="n">istrue</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">==</span> <span class="n">truth_target</span>
@@ -1725,6 +1791,20 @@ <h1 class="modulename">
17251791
:param xlabel=x axis label
17261792
:param show: logical, if True call matplotlib.pyplot.show()
17271793
:return: None</p>
1794+
1795+
<p>Example:</p>
1796+
1797+
<p>d = pandas.DataFrame({
1798+
'x': [.1, .2, .3, .4, .5],
1799+
'y': [False, False, True, True, False]
1800+
})
1801+
d['x0'] = 1 - d['x']
1802+
pmat = numpy.asarray(d.loc[:, ['x0', 'x']])</p>
1803+
1804+
<p><a href="#dual_density_plot_proba1">wvpy.util.dual_density_plot_proba1</a>(
1805+
probs=pmat,
1806+
istrue=d['y'],
1807+
)</p>
17281808
</div>
17291809

17301810

@@ -1747,9 +1827,23 @@ <h1 class="modulename">
17471827
<span class="sd"> :param istrue: vector of ground truth to condition on</span>
17481828
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
17491829
<span class="sd"> :return: None</span>
1830+
1831+
<span class="sd"> Example:</span>
1832+
1833+
<span class="sd"> d = pandas.DataFrame({</span>
1834+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
1835+
<span class="sd"> &#39;y&#39;: [False, False, True, True, False]</span>
1836+
<span class="sd"> })</span>
1837+
<span class="sd"> d[&#39;x0&#39;] = 1 - d[&#39;x&#39;]</span>
1838+
<span class="sd"> pmat = numpy.asarray(d.loc[:, [&#39;x0&#39;, &#39;x&#39;]])</span>
1839+
1840+
<span class="sd"> wvpy.util.dual_hist_plot_proba1(</span>
1841+
<span class="sd"> probs=pmat,</span>
1842+
<span class="sd"> istrue=d[&#39;y&#39;],</span>
1843+
<span class="sd"> )</span>
17501844
<span class="sd"> &quot;&quot;&quot;</span>
1751-
<span class="c1"># TODO: vectorize</span>
17521845
<span class="n">istrue</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">istrue</span><span class="p">)</span>
1846+
<span class="n">probs</span> <span class="o">=</span> <span class="n">numpy</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">probs</span><span class="p">)</span>
17531847
<span class="n">matplotlib</span><span class="o">.</span><span class="n">pyplot</span><span class="o">.</span><span class="n">gcf</span><span class="p">()</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
17541848
<span class="n">pf</span> <span class="o">=</span> <span class="n">pandas</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
17551849
<span class="p">{</span><span class="s2">&quot;prob&quot;</span><span class="p">:</span> <span class="p">[</span><span class="n">probs</span><span class="p">[</span><span class="n">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <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">probs</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">0</span><span class="p">])],</span> <span class="s2">&quot;istrue&quot;</span><span class="p">:</span> <span class="n">istrue</span><span class="p">}</span>
@@ -1769,6 +1863,20 @@ <h1 class="modulename">
17691863
:param istrue: vector of ground truth to condition on
17701864
:param show: logical, if True call matplotlib.pyplot.show()
17711865
:return: None</p>
1866+
1867+
<p>Example:</p>
1868+
1869+
<p>d = pandas.DataFrame({
1870+
'x': [.1, .2, .3, .4, .5],
1871+
'y': [False, False, True, True, False]
1872+
})
1873+
d['x0'] = 1 - d['x']
1874+
pmat = numpy.asarray(d.loc[:, ['x0', 'x']])</p>
1875+
1876+
<p><a href="#dual_hist_plot_proba1">wvpy.util.dual_hist_plot_proba1</a>(
1877+
probs=pmat,
1878+
istrue=d['y'],
1879+
)</p>
17721880
</div>
17731881

17741882

@@ -1792,6 +1900,18 @@ <h1 class="modulename">
17921900
<span class="sd"> :param title: plot title</span>
17931901
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
17941902
<span class="sd"> :return: None</span>
1903+
1904+
<span class="sd"> Example:</span>
1905+
1906+
<span class="sd"> d = pandas.DataFrame({</span>
1907+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
1908+
<span class="sd"> &#39;y&#39;: [0, 0, 1, 1, 0]</span>
1909+
<span class="sd"> })</span>
1910+
1911+
<span class="sd"> wvpy.util.gain_curve_plot(</span>
1912+
<span class="sd"> prediction=d[&#39;x&#39;],</span>
1913+
<span class="sd"> outcome=d[&#39;y&#39;],</span>
1914+
<span class="sd"> )</span>
17951915
<span class="sd"> &quot;&quot;&quot;</span>
17961916

17971917
<span class="n">df</span> <span class="o">=</span> <span class="n">pandas</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
@@ -1853,6 +1973,18 @@ <h1 class="modulename">
18531973
:param title: plot title
18541974
:param show: logical, if True call matplotlib.pyplot.show()
18551975
:return: None</p>
1976+
1977+
<p>Example:</p>
1978+
1979+
<p>d = pandas.DataFrame({
1980+
'x': [.1, .2, .3, .4, .5],
1981+
'y': [0, 0, 1, 1, 0]
1982+
})</p>
1983+
1984+
<p><a href="#gain_curve_plot">wvpy.util.gain_curve_plot</a>(
1985+
prediction=d['x'],
1986+
outcome=d['y'],
1987+
)</p>
18561988
</div>
18571989

18581990

@@ -1876,6 +2008,18 @@ <h1 class="modulename">
18762008
<span class="sd"> :param title: plot title</span>
18772009
<span class="sd"> :param show: logical, if True call matplotlib.pyplot.show()</span>
18782010
<span class="sd"> :return: None</span>
2011+
2012+
<span class="sd"> Example:</span>
2013+
2014+
<span class="sd"> d = pandas.DataFrame({</span>
2015+
<span class="sd"> &#39;x&#39;: [.1, .2, .3, .4, .5],</span>
2016+
<span class="sd"> &#39;y&#39;: [0, 0, 1, 1, 0]</span>
2017+
<span class="sd"> })</span>
2018+
2019+
<span class="sd"> wvpy.util.lift_curve_plot(</span>
2020+
<span class="sd"> prediction=d[&#39;x&#39;],</span>
2021+
<span class="sd"> outcome=d[&#39;y&#39;],</span>
2022+
<span class="sd"> )</span>
18792023
<span class="sd"> &quot;&quot;&quot;</span>
18802024

18812025
<span class="n">df</span> <span class="o">=</span> <span class="n">pandas</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span>
@@ -1915,6 +2059,18 @@ <h1 class="modulename">
19152059
:param title: plot title
19162060
:param show: logical, if True call matplotlib.pyplot.show()
19172061
:return: None</p>
2062+
2063+
<p>Example:</p>
2064+
2065+
<p>d = pandas.DataFrame({
2066+
'x': [.1, .2, .3, .4, .5],
2067+
'y': [0, 0, 1, 1, 0]
2068+
})</p>
2069+
2070+
<p><a href="#lift_curve_plot">wvpy.util.lift_curve_plot</a>(
2071+
prediction=d['x'],
2072+
outcome=d['y'],
2073+
)</p>
19182074
</div>
19192075

19202076

pkg/wvpy.egg-info/SOURCES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ MANIFEST.in
33
README.txt
44
setup.py
55
Doc/documentation.txt
6+
examples/example_graphs.ipynb
67
wvpy/__init__.py
78
wvpy/util.py
89
wvpy.egg-info/PKG-INFO

0 commit comments

Comments
 (0)