度量学习的应用基本可以涵盖各种领域,最近需要当作工具使用,用的语言是python,网上直接有工具包metric-learn,可以直接使用pip install metric-learn
的方法来安装,或者根据前面github上的网址下载源码之后python setup.py install
.
安装好之后就可以使用包中带的一些度量学习的方法了,以下的例子均摘自此处
Covariance metric(baseline method)
from metric_learn import Covariance
from sklearn.datasets import load_iris
iris = load_iris()['data']
cov = Covariance().fit(iris)
x = cov.transform(iris)
Large Margin Nearest Neighbor (LMNN)
import numpy as np
from metric_learn import LMNN
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
lmnn = LMNN(k=5, learn_rate=1e-6)
lmnn.fit(X, Y, verbose=False)
Information Theoretic Metric Learning (ITML)
from metric_learn import ITML_Supervised
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
itml = ITML_Supervised(num_constraints=200)
itml.fit(X, Y)
Sparse Determinant Metric Learning (SDML)
from metric_learn import SDML_Supervised
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
sdml = SDML_Supervised(num_constraints=200)
sdml.fit(X, Y)
Least Squares Metric Learning (LSML)
from metric_learn import LSML_Supervised
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
lsml = LSML_Supervised(num_constraints=200)
lsml.fit(X, Y)
Neighborhood Components Analysis (NCA)
import numpy as np
from metric_learn import NCA
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
nca = NCA(max_iter=1000, learning_rate=0.01)
nca.fit(X, Y)
Local Fisher Discriminant Analysis (LFDA)
import numpy as np
from metric_learn import LFDA
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
lfda = LFDA(k=2, dim=2)
lfda.fit(X, Y)
Relative Components Analysis (RCA)
from metric_learn import RCA_Supervised
from sklearn.datasets import load_iris
iris_data = load_iris()
X = iris_data['data']
Y = iris_data['target']
rca = RCA_Supervised(num_chunks=30, chunk_size=2)
rca.fit(X, Y)