值差异度量#
- 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_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 成对距离。