度量学习

1.1 输入数据

为了训练一个模型,feature_x应该为 n×m的2D数组,其中n为样本的个数,m为数据的维数。y为大小为n的一维数组,该数组包含X中每个数据的类别标签(回归问题是为实数,例如度量学习核回归MLKR)。

下面给出用于度量学习的数据例子,数据中包含两种类别:狗与猫。

import numpy as np

X = np.array([[2.3, 3.6], [0.2, 0.5], [6.7, 2.1]])

y = np.array(['dog', 'cat', 'dog'])

1.2 Fit, transform以及其它

有监督度量学习算法的目标是为了将数据转换到新空间中,在该空间中,同类别的两个数据点的距离会非常小,而不同类别的两个数据的距离则很大。为了得到这个转换矩阵,我们需要利用训练数据来fit度量学习器(例子:最近邻成分分析NCA)。

>>> from metric_learn import NCA

>>> nca = NCA(random_state=42)

>>> nca.fit(X, y)

NCA(init=None, max_iter=100, n_components=None, num_dims='deprecated',

preprocessor=None, random_state=42, tol=None, verbose=False)

首先,我们可以利用transform将数据转换到新的状态空间。下面给出转换两个数据到嵌入空间的例子:

>>> X_new = np.array([[9.4, 4.1], [2.1, 4.4]])

>>> nca.transform(X_new)

array([[ 5.91884732, 10.25406973], [ 3.1545886 , 6.80350083]])

通过以上步骤,我们的度量学习器已经学到了数据点之间的距离,我们有以下两种使用它的途径:

我们可以利用score_pairs返回两个数据点之间的距离:

>>> nca.score_pairs([[[3.5, 3.6], [5.6, 2.4]], [[1.2, 4.2], [2.1, 6.4]]])

array([0.49627072, 3.65287282])

也可以利用get_metric函数返回两个数据点之间的距离:

>>> metric_fun = nca.get_metric()

>>> metric_fun([3.5, 3.6], [5.6, 2.4]) 0.4962707194621285

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值