• Stars
    star
    110
  • Rank 314,942 (Top 7 %)
  • Language
    Python
  • License
    Other
  • Created over 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Score card model for Credit Scoring System.

ScoreCardModel

Description

a simple tool for score card model

keywords:math,finance

Feature

  • Serializable
  • mutil classifier model support
  • ks-curve support

Change

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

Example

>>> from sklearn import datasets
>>> import pandas as pd
>>> from ScoreCardModel.binning.discretization import Discretization
>>> from ScoreCardModel.weight_of_evidence import WeightOfEvidence
>>> from ScoreCardModel.models.logistic_regression_model import LogisticRegressionModel
>>> from ScoreCardModel.score_card import ScoreCardModel
>>>
>>> class MyLR(LogisticRegressionModel):
>>>     def predict(self, x):
>>>          x = self.pre_trade(x)
>>>          return self._predict_proba(x)
>>>      
>>>     def pre_trade(self, x):
>>>         import numpy as np
>>>         result = []
>>>         for i,v in x.items():
>>>             t = self.ds[i].transform([v])[0]
>>>             r = self.woes[i].transform([t])[0]
>>>             result.append(r)
>>>         return np.array(result)
>>>
>>>     def _pre_trade_batch_row(self,row,Y,bins):
>>>         d = Discretization(bins)
>>>         d_row = d.transform(row)
>>>         woe = WeightOfEvidence()
>>>         woe.fit(d_row,Y)
>>>         return d,woe,woe.transform(d_row)
>>>     
>>>     def pre_trade_batch(self, X,Y):
>>>         self.ds = {}
>>>         self.woes = {}
>>>         self.table = {}
>>>         self.ds["sepal length (cm)"],self.woes["sepal length (cm)"],self.table["sepal length (cm)"]= self._pre_trade_batch_row(
>>>             X["sepal length (cm)"],Y,[0,2,5,8])
>>>         self.ds['sepal width (cm)'],self.woes['sepal width (cm)'],self.table['sepal width (cm)'] = self._pre_trade_batch_row(
>>>             X['sepal width (cm)'],Y,[0,2,2.5,3,3.5,5])
>>>         self.ds['petal length (cm)'],self.woes['petal length (cm)'],self.table['petal length (cm)'] = self._pre_trade_batch_row(
>>>             X['petal length (cm)'],Y,[0,1,2,3,4,5,7])
>>>         self.ds['petal width (cm)'],self.woes['petal width (cm)'],self.table['petal width (cm)'] = self._pre_trade_batch_row(
>>>             X['petal width (cm)'],Y,[0,1,2,3])
>>>         return pd.DataFrame(self.table)
>>>
>>> iris = datasets.load_iris()
>>> y = iris.target
>>> z = (y==0)
>>> l = pd.DataFrame(iris.data,columns=iris.feature_names)
>>> lr = MyLR()
>>> lr.train(l,z)
>>> lr.predict(l.loc[0].to_dict())
array([[ 0.46315882,  0.53684118]])
>>> sc = ScoreCardModel(lr)
>>> sc.predict(sc.pre_trade(l.loc[0].to_dict()))
104.3
>>> scs = []
>>> for i in range(len(l)):
>>>    score = sc.predict(sc.pre_trade(l.loc[i].to_dict()))
>>>    scs.append(score)
>>> print(ScoreCardWithKSModel.Threshold_to_score(scs, 0.5))
1.0
>>> print(ScoreCardWithKSModel.Score_to_threshold(scs, score=70))
1.0
             precision    recall  f1-score   support

      False       1.00      1.00      1.00        29
       True       1.00      1.00      1.00        16

avg / total       1.00      1.00      1.00        45
>>> print(ScoreCardWithKSModel.Score_to_threshold(scs, y=z, score=100))
0.3467
>>> print(ScoreCardWithKSModel.Get_ks(scs, y=z, threshold=0.4).ks)
0.9
>>> # ScoreCardWithKSModel.Drawks(scs, y=z)
>>> scsc = [l.loc[i].to_dict() for i in range(len(l))]
>>> scks = ScoreCardWithKSModel.From_scorecard(sc)
>>> print(scks.threshold_to_score(scsc, 0.5))
1.0
>>> print(scks.score_to_threshold(scsc, score=70))
1.0
             precision    recall  f1-score   support

      False       1.00      1.00      1.00        29
       True       1.00      1.00      1.00        16

avg / total       1.00      1.00      1.00        45
>>> print(scks.score_to_threshold(scsc, y=z, score=100))
0.3467
>>> print(scks.get_ks(scsc, y=z, threshold=0.4).ks)
0.9
>>> scks.drawks(scsc, y=z)

Install

python -m pip install ScoreCardModel

Documentation

Documentation on github page https://data-science-tools.github.io/ScoreCardModel/