kwcoco.metrics.sklearn_alts module¶
Faster pure-python versions of sklearn functions that avoid expensive checks and label rectifications. It is assumed that all labels are consecutive non-negative integers.
- kwcoco.metrics.sklearn_alts.confusion_matrix(y_true, y_pred, n_labels=None, labels=None, sample_weight=None)[source]¶
faster version of sklearn confusion matrix that avoids the expensive checks and label rectification
Runs in about 0.7ms
- Returns
matrix where rows represent real and cols represent pred
- Return type
ndarray
Example
>>> y_true = np.array([0, 0, 0, 0, 1, 1, 1, 0, 0, 1]) >>> y_pred = np.array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1]) >>> confusion_matrix(y_true, y_pred, 2) array([[4, 2], [3, 1]]) >>> confusion_matrix(y_true, y_pred, 2).ravel() array([4, 2, 3, 1])
Benchmark
>>> # xdoctest: +SKIP >>> import ubelt as ub >>> y_true = np.random.randint(0, 2, 10000) >>> y_pred = np.random.randint(0, 2, 10000) >>> n = 1000 >>> for timer in ub.Timerit(n, bestof=10, label='py-time'): >>> sample_weight = [1] * len(y_true) >>> confusion_matrix(y_true, y_pred, 2, sample_weight=sample_weight) >>> for timer in ub.Timerit(n, bestof=10, label='np-time'): >>> sample_weight = np.ones(len(y_true), dtype=int) >>> confusion_matrix(y_true, y_pred, 2, sample_weight=sample_weight)