Skip to content

Commit

Permalink
Tue Nov 14 16:28:14 2017
Browse files Browse the repository at this point in the history
  • Loading branch information
hsz1273327 committed Nov 14, 2017
1 parent 7b5aaab commit c186adc
Show file tree
Hide file tree
Showing 18 changed files with 72 additions and 17 deletions.
2 changes: 1 addition & 1 deletion .pmfprc
@@ -1 +1 @@
{"meta": {"project_name": "ScoreCardModel", "license": "MIT", "version": "1.1.1", "status": "dev", "url": "https://github.com/data-science-tools/ScoreCardModel"}, "author": {"author": "hsz", "author_email": "hsz1273327@gmail.com"}, "desc": {"keywords": ["math", "finance"], "description": "simple tools for score card model"}, "form": {"env": "conda", "compiler": "python", "project_type": "model", "template": "math", "install_remote": null, "upload_remote": null}, "with_test": false, "with_docs": true, "with_dockerfile": false}
{"meta": {"project_name": "ScoreCardModel", "license": "MIT", "version": "1.1.2", "status": "dev", "url": "https://github.com/data-science-tools/ScoreCardModel"}, "author": {"author": "hsz", "author_email": "hsz1273327@gmail.com"}, "desc": {"keywords": ["math", "finance"], "description": "simple tools for score card model"}, "form": {"env": "conda", "compiler": "python", "project_type": "model", "template": "math", "install_remote": null, "upload_remote": null}, "with_test": false, "with_docs": true, "with_dockerfile": false}
6 changes: 5 additions & 1 deletion README.md
@@ -1,7 +1,7 @@

# ScoreCardModel

+ version: 1.1.1
+ version: 1.1.2
+ status: dev
+ author: hsz
+ email: hsz1273327@gmail.com
Expand All @@ -19,6 +19,10 @@ keywords:math,finance
+ mutil classifier model support
+ ks-curve support

## Change

+ scorecard now can set a threshold value to return a bool result


## Example

Expand Down
6 changes: 5 additions & 1 deletion README.rst
Expand Up @@ -2,7 +2,7 @@
ScoreCardModel
===============================

* version: 1.1.1
* version: 1.1.2

* status: dev

Expand All @@ -26,6 +26,10 @@ Feature
* mutil classifier model support
* ks-curve support

Change
-------------------------

* scorecard now can set a threshold value to return a bool result

Example
-------------------------------
Expand Down
11 changes: 9 additions & 2 deletions ScoreCardModel/score_card.py
Expand Up @@ -65,14 +65,16 @@ class ScoreCardModel(SerializeMixin):
o (int): - 用于计算偏置量
p (int): - 用于计算偏置量和因数项
round_ (int): - 精度
threshold (float): - 阈值,可选
"""

def __init__(self, model, b=100, o=1, p=20, round_=1):
def __init__(self, model, b=100, o=1, p=20, round_=1,threshold=None):
self._model = model
self.b = b
self.o = o
self.p = p
self.threshold = threshold
self.round_ = round_

def pre_trade(self, x):
Expand All @@ -89,14 +91,19 @@ def predict(self, x):
Returns:
float: - 预测出来的分数
bool: - 预测的分数超过阈值则返回True,否则False
"""
proba = self._model._predict_proba([x])
factor = self.p / np.log(2)
offset = self.b - self.p * (np.log(self.o) / np.log(2))
p_f, p_t = proba[0]
odds = p_t / p_f
return round(factor * np.log(odds) + offset, self.round_)
score = round(factor * np.log(odds) + offset, self.round_)
if self.threshold:
return True if score > self.threshold else False
else:
return score


class KS:
Expand Down
Binary file modified docs/.doctrees/ScoreCardModel.doctree
Binary file not shown.
Binary file modified docs/.doctrees/environment.pickle
Binary file not shown.
Binary file modified docs/.doctrees/index.doctree
Binary file not shown.
14 changes: 12 additions & 2 deletions docs/ScoreCardModel.html
Expand Up @@ -242,7 +242,7 @@ <h4>KS 曲线:<a class="headerlink" href="#ks" title="Permalink to this headline

<dl class="class">
<dt id="ScoreCardModel.score_card.ScoreCardModel">
<em class="property">class </em><code class="descclassname">ScoreCardModel.score_card.</code><code class="descname">ScoreCardModel</code><span class="sig-paren">(</span><em>model</em>, <em>b=100</em>, <em>o=1</em>, <em>p=20</em>, <em>round_=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ScoreCardModel/score_card.html#ScoreCardModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ScoreCardModel.score_card.ScoreCardModel" title="Permalink to this definition"></a></dt>
<em class="property">class </em><code class="descclassname">ScoreCardModel.score_card.</code><code class="descname">ScoreCardModel</code><span class="sig-paren">(</span><em>model</em>, <em>b=100</em>, <em>o=1</em>, <em>p=20</em>, <em>round_=1</em>, <em>threshold=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ScoreCardModel/score_card.html#ScoreCardModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ScoreCardModel.score_card.ScoreCardModel" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="ScoreCardModel.mixins.html#ScoreCardModel.mixins.serialize_mixin.SerializeMixin" title="ScoreCardModel.mixins.serialize_mixin.SerializeMixin"><code class="xref py py-class docutils literal"><span class="pre">ScoreCardModel.mixins.serialize_mixin.SerializeMixin</span></code></a></p>
<p>本模型需要使用一个已经训练好的分类器来初始化,预测,计算评分也都是依赖于它.</p>
<dl class="attribute">
Expand Down Expand Up @@ -290,6 +290,15 @@ <h4>KS 曲线:<a class="headerlink" href="#ks" title="Permalink to this headline
</ul>
</dd></dl>

<dl class="attribute">
<dt id="ScoreCardModel.score_card.ScoreCardModel.threshold">
<code class="descname">threshold</code><a class="headerlink" href="#ScoreCardModel.score_card.ScoreCardModel.threshold" title="Permalink to this definition"></a></dt>
<dd><p><em>float</em></p>
<ul class="simple">
<li>阈值,可选</li>
</ul>
</dd></dl>

<dl class="method">
<dt id="ScoreCardModel.score_card.ScoreCardModel.pre_trade">
<code class="descname">pre_trade</code><span class="sig-paren">(</span><em>x</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ScoreCardModel/score_card.html#ScoreCardModel.pre_trade"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ScoreCardModel.score_card.ScoreCardModel.pre_trade" title="Permalink to this definition"></a></dt>
Expand All @@ -312,6 +321,7 @@ <h4>KS 曲线:<a class="headerlink" href="#ks" title="Permalink to this headline
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><ul class="simple">
<li>预测出来的分数</li>
</ul>
<p>bool: - 预测的分数超过阈值则返回True,否则False</p>
</td>
</tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body">float</td>
Expand All @@ -324,7 +334,7 @@ <h4>KS 曲线:<a class="headerlink" href="#ks" title="Permalink to this headline

<dl class="class">
<dt id="ScoreCardModel.score_card.ScoreCardWithKSModel">
<em class="property">class </em><code class="descclassname">ScoreCardModel.score_card.</code><code class="descname">ScoreCardWithKSModel</code><span class="sig-paren">(</span><em>model</em>, <em>b=100</em>, <em>o=1</em>, <em>p=20</em>, <em>round_=1</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ScoreCardModel/score_card.html#ScoreCardWithKSModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ScoreCardModel.score_card.ScoreCardWithKSModel" title="Permalink to this definition"></a></dt>
<em class="property">class </em><code class="descclassname">ScoreCardModel.score_card.</code><code class="descname">ScoreCardWithKSModel</code><span class="sig-paren">(</span><em>model</em>, <em>b=100</em>, <em>o=1</em>, <em>p=20</em>, <em>round_=1</em>, <em>threshold=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ScoreCardModel/score_card.html#ScoreCardWithKSModel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#ScoreCardModel.score_card.ScoreCardWithKSModel" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#ScoreCardModel.score_card.ScoreCardModel" title="ScoreCardModel.score_card.ScoreCardModel"><code class="xref py py-class docutils literal"><span class="pre">ScoreCardModel.score_card.ScoreCardModel</span></code></a></p>
<p>本模型需要使用一个已经训练好的分类器来初始化.预测,计算评分也都是依赖于它.
它是ScoreCardModel的子类,并且可以用ScoreCardModel或者它的子类实例化.
Expand Down
11 changes: 9 additions & 2 deletions docs/_modules/ScoreCardModel/score_card.html
Expand Up @@ -107,14 +107,16 @@ <h1>Source code for ScoreCardModel.score_card</h1><div class="highlight"><pre>
<span class="sd"> o (int): - 用于计算偏置量</span>
<span class="sd"> p (int): - 用于计算偏置量和因数项</span>
<span class="sd"> round_ (int): - 精度</span>
<span class="sd"> threshold (float): - 阈值,可选</span>

<span class="sd"> &quot;&quot;&quot;</span>

<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">o</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">p</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">round_</span><span class="o">=</span><span class="mi">1</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">o</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">p</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">round_</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">threshold</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_model</span> <span class="o">=</span> <span class="n">model</span>
<span class="bp">self</span><span class="o">.</span><span class="n">b</span> <span class="o">=</span> <span class="n">b</span>
<span class="bp">self</span><span class="o">.</span><span class="n">o</span> <span class="o">=</span> <span class="n">o</span>
<span class="bp">self</span><span class="o">.</span><span class="n">p</span> <span class="o">=</span> <span class="n">p</span>
<span class="bp">self</span><span class="o">.</span><span class="n">threshold</span> <span class="o">=</span> <span class="n">threshold</span>
<span class="bp">self</span><span class="o">.</span><span class="n">round_</span> <span class="o">=</span> <span class="n">round_</span>

<div class="viewcode-block" id="ScoreCardModel.pre_trade"><a class="viewcode-back" href="../../ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardModel.pre_trade">[docs]</a> <span class="k">def</span> <span class="nf">pre_trade</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
Expand All @@ -131,14 +133,19 @@ <h1>Source code for ScoreCardModel.score_card</h1><div class="highlight"><pre>
<span class="sd"> Returns:</span>

<span class="sd"> float: - 预测出来的分数</span>
<span class="sd"> bool: - 预测的分数超过阈值则返回True,否则False</span>

<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">proba</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_model</span><span class="o">.</span><span class="n">_predict_proba</span><span class="p">([</span><span class="n">x</span><span class="p">])</span>
<span class="n">factor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">p</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="mi">2</span><span class="p">)</span>
<span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">b</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">p</span> <span class="o">*</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="bp">self</span><span class="o">.</span><span class="n">o</span><span class="p">)</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="mi">2</span><span class="p">))</span>
<span class="n">p_f</span><span class="p">,</span> <span class="n">p_t</span> <span class="o">=</span> <span class="n">proba</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">odds</span> <span class="o">=</span> <span class="n">p_t</span> <span class="o">/</span> <span class="n">p_f</span>
<span class="k">return</span> <span class="nb">round</span><span class="p">(</span><span class="n">factor</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">odds</span><span class="p">)</span> <span class="o">+</span> <span class="n">offset</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">round_</span><span class="p">)</span></div></div>
<span class="n">score</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">factor</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">odds</span><span class="p">)</span> <span class="o">+</span> <span class="n">offset</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">round_</span><span class="p">)</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">threshold</span><span class="p">:</span>
<span class="k">return</span> <span class="kc">True</span> <span class="k">if</span> <span class="n">score</span> <span class="o">&gt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">threshold</span> <span class="k">else</span> <span class="kc">False</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="n">score</span></div></div>


<div class="viewcode-block" id="KS"><a class="viewcode-back" href="../../ScoreCardModel.html#ScoreCardModel.score_card.KS">[docs]</a><span class="k">class</span> <span class="nc">KS</span><span class="p">:</span>
Expand Down
2 changes: 1 addition & 1 deletion docs/_modules/ScoreCardModel/weight_of_evidence.html
Expand Up @@ -138,7 +138,7 @@ <h1>Source code for ScoreCardModel.weight_of_evidence</h1><div class="highlight"
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">type_of_target</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;binary&#39;</span><span class="p">]:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;tag must be a binary array&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">type_of_target</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;continuous&#39;</span><span class="p">]:</span>
<span class="k">if</span> <span class="n">type_of_target</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;continuous&#39;</span><span class="p">]:</span>
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s2">&quot;input array must not continuous&quot;</span><span class="p">)</span>
<span class="n">tag</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
Expand Down
8 changes: 7 additions & 1 deletion docs/_sources/index.rst.txt
Expand Up @@ -6,7 +6,7 @@
Welcome to ScoreCardModel's documentation!
==========================================

* version: 1.1.0
* version: 1.1.2

* status: dev

Expand All @@ -31,6 +31,12 @@ Feature
* ks-curve support


Change
-------------------------

* scorecard now can set a threshold value to return a bool result


Example
-------------------------------

Expand Down
6 changes: 5 additions & 1 deletion docs/genindex.html
Expand Up @@ -280,8 +280,12 @@ <h2 id="S">S</h2>
<h2 id="T">T</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">threshold (ScoreCardModel.score_card.ScoreCardWithKSModel attribute)</a>, <a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">[1]</a>, <a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">[2]</a>, <a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">[3]</a>
<li><a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardModel.threshold">threshold (ScoreCardModel.score_card.ScoreCardModel attribute)</a>

<ul>
<li><a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">(ScoreCardModel.score_card.ScoreCardWithKSModel attribute)</a>, <a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">[1]</a>, <a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">[2]</a>, <a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold">[3]</a>
</li>
</ul></li>
<li><a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold_score">threshold_score (ScoreCardModel.score_card.ScoreCardWithKSModel attribute)</a>, <a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.threshold_score">[1]</a>
</li>
<li><a href="ScoreCardModel.html#ScoreCardModel.score_card.ScoreCardWithKSModel.Threshold_to_score">Threshold_to_score() (ScoreCardModel.score_card.ScoreCardWithKSModel class method)</a>
Expand Down
9 changes: 8 additions & 1 deletion docs/index.html
Expand Up @@ -43,7 +43,7 @@
<div class="section" id="welcome-to-scorecardmodel-s-documentation">
<h1>Welcome to ScoreCardModel’s documentation!<a class="headerlink" href="#welcome-to-scorecardmodel-s-documentation" title="Permalink to this headline"></a></h1>
<ul class="simple">
<li>version: 1.1.0</li>
<li>version: 1.1.2</li>
<li>status: dev</li>
<li>author: hsz</li>
<li>email: <a class="reference external" href="mailto:hsz1273327&#37;&#52;&#48;gmail&#46;com">hsz1273327<span>&#64;</span>gmail<span>&#46;</span>com</a></li>
Expand All @@ -61,6 +61,12 @@ <h2>Feature<a class="headerlink" href="#feature" title="Permalink to this headli
<li>ks-curve support</li>
</ul>
</div>
<div class="section" id="change">
<h2>Change<a class="headerlink" href="#change" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>scorecard now can set a threshold value to return a bool result</li>
</ul>
</div>
<div class="section" id="example">
<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline"></a></h2>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">sklearn</span> <span class="k">import</span> <span class="n">datasets</span>
Expand Down Expand Up @@ -232,6 +238,7 @@ <h3><a href="#">Table Of Contents</a></h3>
<li><a class="reference internal" href="#">Welcome to ScoreCardModel’s documentation!</a><ul>
<li><a class="reference internal" href="#desc">Desc</a></li>
<li><a class="reference internal" href="#feature">Feature</a></li>
<li><a class="reference internal" href="#change">Change</a></li>
<li><a class="reference internal" href="#example">Example</a></li>
<li><a class="reference internal" href="#install">Install</a></li>
</ul>
Expand Down
Binary file modified docs/objects.inv
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/searchindex.js

Large diffs are not rendered by default.

0 comments on commit c186adc

Please sign in to comment.