值差异度量#

class imblearn.metrics.pairwise.ValueDifferenceMetric(*, n_categories='auto', k=1, r=2)[source]#

实现值差异度量的类。

该指标计算仅包含分类特征的样本之间的距离。两个样本的特征值之间的距离定义为:

\[\delta(x, y) = \sum_{c=1}^{C} |p(c|x_{f}) - p(c|y_{f})|^{k} \ ,\]

其中 \(x\)\(y\) 是两个样本,\(f\) 是一个给定的特征,\(C\) 是类别数量,\(p(c|x_{f})\) 是在特征值 \(f\)\(x\) 时输出类别为 \(c\) 的条件概率,\(k\) 是一个通常定义为1或2的指数。

特征向量 \(X\)\(Y\) 的距离随后定义为:

\[\Delta(X, Y) = \sum_{f=1}^{F} \delta(X_{f}, Y_{f})^{r} \ ,\]

其中 \(F\) 是特征的数量,\(r\) 是一个通常定义为1或2的指数。

这个距离的定义在[1]中被提出。

用户指南中阅读更多内容。

在版本0.8中添加。

Parameters:
n_categories“auto” or array-like of shape (n_features,), default=”auto”

每个特征中唯一类别的数量。如果"auto",类别数量将在fit时从X中计算。否则,您可以提供一个类似数组的计数以避免计算。您可以使用OrdinalEncoder的拟合属性categories_来推导这些计数。

kint, default=1

用于计算特征值之间距离的指数。

rint, default=2

用于计算特征向量之间距离的指数。

Attributes:
n_categories_ndarray of shape (n_features,)

每个特征的类别数量。

proba_per_class_list of ndarray of shape (n_categories, n_classes)

长度为 n_features 的列表,包含给定类别的每个类别的条件概率。

n_features_in_int

输入数据集中的特征数量。

在版本0.10中添加。

feature_names_in_ndarray of shape (n_features_in_,)

fit期间看到的特征名称。仅在X具有全部为字符串的特征名称时定义。

在版本0.10中添加。

另请参阅

sklearn.neighbors.DistanceMetric

用于快速指标计算的接口。

注释

输入数据 X 预期由 OrdinalEncoder 编码,并且使用的数据类型应为 np.int32。如果提供了其他数据类型,X 将被转换为 np.int32

参考文献

[1]

斯坦菲尔,克雷格,和大卫·沃尔茨。“迈向基于记忆的推理。” ACM通讯 29.12 (1986): 1213-1228.

示例

>>> import numpy as np
>>> X = np.array(["green"] * 10 + ["red"] * 10 + ["blue"] * 10).reshape(-1, 1)
>>> y = [1] * 8 + [0] * 5 + [1] * 7 + [0] * 9 + [1]
>>> from sklearn.preprocessing import OrdinalEncoder
>>> encoder = OrdinalEncoder(dtype=np.int32)
>>> X_encoded = encoder.fit_transform(X)
>>> from imblearn.metrics.pairwise import ValueDifferenceMetric
>>> vdm = ValueDifferenceMetric().fit(X_encoded, y)
>>> pairwise_distance = vdm.pairwise(X_encoded)
>>> pairwise_distance.shape
(30, 30)
>>> X_test = np.array(["green", "red", "blue"]).reshape(-1, 1)
>>> X_test_encoded = encoder.transform(X_test)
>>> vdm.pairwise(X_test_encoded)
array([[0.  ,  0.04,  1.96],
       [0.04,  0.  ,  1.44],
       [1.96,  1.44,  0.  ]])

方法

fit(X, y)

从训练集中计算必要的统计量。

get_metadata_routing()

获取此对象的元数据路由。

get_params([deep])

获取此估计器的参数。

pairwise(X[, Y])

计算VDM距离的成对值。

set_params(**params)

设置此估计器的参数。

fit(X, y)[source]#

从训练集中计算必要的统计量。

Parameters:
Xndarray of shape (n_samples, n_features), dtype=np.int32

输入数据。数据预期使用OrdinalEncoder进行编码。

yndarray of shape (n_features,)

目标。

Returns:
selfobject

返回实例本身。

get_metadata_routing()[source]#

获取此对象的元数据路由。

请查看用户指南了解路由机制的工作原理。

Returns:
routingMetadataRequest

一个封装路由信息的MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

Parameters:
deepbool, default=True

如果为True,将返回此估计器及其包含的子对象的参数。

Returns:
paramsdict

参数名称映射到它们的值。

pairwise(X, Y=None)[source]#

计算VDM距离的成对值。

Parameters:
Xndarray of shape (n_samples, n_features), dtype=np.int32

输入数据。数据预期使用OrdinalEncoder进行编码。

Yndarray of shape (n_samples, n_features), dtype=np.int32

输入数据。数据预期使用OrdinalEncoder进行编码。

Returns:
distance_matrixndarray of shape (n_samples, n_samples)

VDM 成对距离。

set_params(**params)[source]#

设置此估计器的参数。

该方法适用于简单的估计器以及嵌套对象(如Pipeline)。后者具有__形式的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。