def __init__(self, model, label, data=[]):
""" Returns a new Model calibrated on the given data,
which is a set of (vector, label)-tuples.
"""
self._model = model
self._label = label
# Isotonic regression:
y = ((model.predict(v)[label], label == x) for v, x in data)
y = sorted(y) # monotonic
y = zip(*y)
y = list(y or ((),()))
x = list(y[0])
y = list(y[1])
y = pav(y)
x = [0] + x + [1]
y = [0] + y + [1]
f = {}
i = 0
# Linear interpolation:
for p in range(100 + 1):
p *= 0.01
while x[i] < p:
i += 1
f[p] = (y[i-1] * (x[i] - p) + y[i] * (p - x[i-1])) / (x[i] - x[i-1])
self._f = f
评论列表
文章目录