Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _check_model(model):
if not isinstance(model, CatBoost):
raise CatBoostError("Model should be CatBoost")
Returns
-------
threshold : double
"""
if data is not None:
if curve is not None:
raise CatBoostError('Only one of the parameters data and curve should be set.')
if model is None:
raise CatBoostError('model and data parameters should be set when curve parameter is None.')
if type(data) == Pool:
data = [data]
if not isinstance(data, list):
raise CatBoostError('data must be a catboost.Pool or list of pools.')
for pool in data:
if not isinstance(pool, Pool):
raise CatBoostError('one of data pools is not catboost.Pool')
return _select_threshold(model._object, data, None, FPR, FNR, thread_count)
elif curve is not None:
if not (isinstance(curve, list) or isinstance(curve, tuple)) or len(curve) != 3:
raise CatBoostError('curve must be list or tuple of three arrays (fpr, tpr, thresholds).')
return _select_threshold(None, None, curve, FPR, FNR, thread_count)
else:
raise CatBoostError('One of the parameters data and curve should be set.')
thread_count : int (default=-1)
Number of threads to work with.
If -1, then the number of threads is set to the number of CPU cores.
plot : bool, optional (default=False)
If True, draw curve.
Returns
-------
curve points : tuple of three arrays (fpr, tpr, thresholds)
"""
if type(data) == Pool:
data = [data]
if not isinstance(data, list):
raise CatBoostError('data must be a catboost.Pool or list of pools.')
for pool in data:
if not isinstance(pool, Pool):
raise CatBoostError('one of data pools is not catboost.Pool')
roc_curve = _get_roc_curve(model._object, data, thread_count)
if plot:
with _import_matplotlib() as plt:
_draw(plt, roc_curve[0], roc_curve[1], 'False Positive Rate', 'True Positive Rate', 'ROC Curve')
return roc_curve
FNR : desired false-negative rate (only one of FPR and FNR should be chosen)
thread_count : int (default=-1)
Number of threads to work with.
If -1, then the number of threads is set to the number of CPU cores.
Returns
-------
threshold : double
"""
if data is not None:
if curve is not None:
raise CatBoostError('Only one of the parameters data and curve should be set.')
if model is None:
raise CatBoostError('model and data parameters should be set when curve parameter is None.')
if type(data) == Pool:
data = [data]
if not isinstance(data, list):
raise CatBoostError('data must be a catboost.Pool or list of pools.')
for pool in data:
if not isinstance(pool, Pool):
raise CatBoostError('one of data pools is not catboost.Pool')
return _select_threshold(model._object, data, None, FPR, FNR, thread_count)
elif curve is not None:
if not (isinstance(curve, list) or isinstance(curve, tuple)) or len(curve) != 3:
raise CatBoostError('curve must be list or tuple of three arrays (fpr, tpr, thresholds).')
return _select_threshold(None, None, curve, FPR, FNR, thread_count)
else:
raise CatBoostError('One of the parameters data and curve should be set.')
plot : bool, optional (default=False)
If True, draw curve.
Returns
-------
curve points : tuple of two arrays (thresholds, fnr)
"""
if curve is not None:
if data is not None:
raise CatBoostError('Only one of the parameters data and curve should be set.')
if not (isinstance(curve, list) or isinstance(curve, tuple)) or len(curve) != 3:
raise CatBoostError('curve must be list or tuple of three arrays (fpr, tpr, thresholds).')
tpr, thresholds = curve[1], curve[2][:]
else:
if model is None or data is None:
raise CatBoostError('model and data parameters should be set when curve parameter is None.')
_, tpr, thresholds = get_roc_curve(model, data, thread_count)
fnr = np.array([1 - x for x in tpr])
if plot:
with _import_matplotlib() as plt:
_draw(plt, thresholds, fnr, 'Thresholds', 'False Negative Rate', 'FNR Curve')
return thresholds, fnr
if model is None:
raise CatBoostError('model and data parameters should be set when curve parameter is None.')
if type(data) == Pool:
data = [data]
if not isinstance(data, list):
raise CatBoostError('data must be a catboost.Pool or list of pools.')
for pool in data:
if not isinstance(pool, Pool):
raise CatBoostError('one of data pools is not catboost.Pool')
return _select_threshold(model._object, data, None, FPR, FNR, thread_count)
elif curve is not None:
if not (isinstance(curve, list) or isinstance(curve, tuple)) or len(curve) != 3:
raise CatBoostError('curve must be list or tuple of three arrays (fpr, tpr, thresholds).')
return _select_threshold(None, None, curve, FPR, FNR, thread_count)
else:
raise CatBoostError('One of the parameters data and curve should be set.')
Number of threads to work with.
If -1, then the number of threads is set to the number of CPU cores.
Returns
-------
threshold : double
"""
if data is not None:
if curve is not None:
raise CatBoostError('Only one of the parameters data and curve should be set.')
if model is None:
raise CatBoostError('model and data parameters should be set when curve parameter is None.')
if type(data) == Pool:
data = [data]
if not isinstance(data, list):
raise CatBoostError('data must be a catboost.Pool or list of pools.')
for pool in data:
if not isinstance(pool, Pool):
raise CatBoostError('one of data pools is not catboost.Pool')
return _select_threshold(model._object, data, None, FPR, FNR, thread_count)
elif curve is not None:
if not (isinstance(curve, list) or isinstance(curve, tuple)) or len(curve) != 3:
raise CatBoostError('curve must be list or tuple of three arrays (fpr, tpr, thresholds).')
return _select_threshold(None, None, curve, FPR, FNR, thread_count)
else:
raise CatBoostError('One of the parameters data and curve should be set.')
If -1, then the number of threads is set to the number of CPU cores.
plot : bool, optional (default=False)
If True, draw curve.
Returns
-------
curve points : tuple of three arrays (fpr, tpr, thresholds)
"""
if type(data) == Pool:
data = [data]
if not isinstance(data, list):
raise CatBoostError('data must be a catboost.Pool or list of pools.')
for pool in data:
if not isinstance(pool, Pool):
raise CatBoostError('one of data pools is not catboost.Pool')
roc_curve = _get_roc_curve(model._object, data, thread_count)
if plot:
with _import_matplotlib() as plt:
_draw(plt, roc_curve[0], roc_curve[1], 'False Positive Rate', 'True Positive Rate', 'ROC Curve')
return roc_curve