您当前的位置:首页 >> 家居百科

机器学习的基础——embedding词嵌入&相似性&聚类解法介绍

2023-04-21 12:16:26

点)。相似于度是方向上中间的相距,L1

A 和 B 中间的相距(即 L1)以及 A 和 C 中间的相距(即 L2)。A 和 B 比 A 和 C 更为相比之下,因为 L1

在实践之中,等价化允许我们量度它们中间的相距(即相似于度),我们成立一个二维直角座标,直角座标便是一个等价内部空间。每个点在这个二维直角座标之中,就有了座标,每个点的座标形成一个等价。

也就是说点从 (0, 0) 开始,可以将它们转化为等价

AB中间的相距是在方向上中间传递的等价的长度,称作阿基米德相距。恒等式如下

阿基米德相似于度是方向上中间的相距

在 Python 之中,阿基米德相似于度的量度分析方法是应用于 Numpy 始创两个等价。然后相减取norm即可

import numpy

import math

A = numpy.array([2, 3])

B = numpy.array([4, 1])

A_B = A - B

dist = numpy.linalg.norm(A_B)

sum_of_squared_distances = numpy.dot(A_B, A_B)

euclidean_dist_manuel = math.sqrt(sum_of_squared_distances)

断定相似于度的另一种分析方法是变换相似于度,它具体来说等价中间的角度,而不是它们末端中间的相距。A 点更为侧重于侦探小说,B 点更为侧重于 Life-Journey——即使它们在阿基米德内部空间之中彼此相比之下,但是它们的术语与特征截然相同。

变换相似于度是两个等价中间的直角,我们在简述transformer数学模型时也有提示相似的术语,当2个等价中间的直角越小,说明在某个的点上最相似于,直角越大,说明在某个的点相似于性最小,比如里面多维的2本前言,若AB中间的直角越小,说明在某个图前言并不一定上有一定的相似于性,若直角正数90度,那2本前言在图前言并不一定上来讲,就未任何相似于性了。

量度变换相似于度分数的恒等式

在 Python 之中,变换相似于度是通过应用于 Numpy 始创两个等价并应用于 Scipy 看见两者中间的变换来量度的。

from scipy import spatial

import math

# ;还有 应用于API量度;还有

cosine_dist_easy = spatial.distance.cosine(A, B)

# ;还有 应用于恒等式手动量度 ;还有

product_AB = numpy.dot(A, B)

book_A_length = numpy.linalg.norm(A,2)

book_B_length = numpy.linalg.norm(B,2)

cosine_dist_manuel = 1 - (product_AB / (book_A_length * book_B_length))

我们可以同时应用于阿基米德相似于度和变换相似于度,看见自己信息集之中符合要求的解法。

聚类Clustering

聚类是一种试图我们在信息之中看见相似于聚类组成员的高效率。还根据我们读前言的案例,控制系统根据编者害羞选读的小团体/多种类型中选一新前言。直观地说,一个聚类组成员由相似于的取向组成员成。聚类护航是断定哪些点最相似于,以及如何将它们组成员合成尽量比例的聚类组成员。聚类分析方法应用于相似于度恒等式来评估点中间相似于度;我们通过应用于点中间的阿基米德相似于性并相结合最相比之下的点来始创图表之中的两个组成员。对这两组成员的相比较,我们的主要选读概要包括教科前言和科幻

通过看见一般来说的点对可以始创两个聚类组成员

聚类组成员的比例是一个激参数,这这样一来度量它的不是量度机高效率,而是事先度量的常量。可选择应该比例的战略性(即聚类组成员)至关重要。图表用一个、两个和四个聚类分析信息,以显示变量大写英楔形文字母的严重影响。

通过向信息添加 1、2 、3、 4 个战略性备有的信息

一个战略性询问我们,编者害羞前言籍,这似乎对我们正在自制一个关于分析前言籍偏好的应用程序未实在大试图。四个战略性向我们演示了编者害羞 A、B、C 和 D 多种类型的前言,但对中选同一组成员之中的一新前言贡献不大。两个战略性更为适合这种情况,因为它们备有的信息说明教科前言和恐怖电影前言籍是选读最多的前言籍。

上一个一般来说之中的四个战略性实在多,无法提取有效率信息。在此一般来说之中,未必需要四个战略性才能应该理解信息。未极致的战略性比例,它都是特定于应用程序的。

往往用于聚类的两种分析方法是k-means 聚类和hierarchical聚类。

K-means 聚类

K-means 聚类之中的“K”度量了聚类的比例。K=2 坚称需在信息之中看见两个簇,K=4 坚称需在信息之中看见四个簇。“百分比”度量了每个战略性如何沦为其组成员的百分比,将其置于其组成员的之该中心。

一个簇通过在同一内部空间之中放到一个一新点来坚称信息的一部分。一新点现在可以都有这部分信息。

将战略性作为都有信息部分的一新信息点放到到内部空间之中

K-means 的最终目标是为每个战略性看见最佳前面。放到一个战略性未必像里面那样简单,每个战略性都座落在彩色圆盘的之该中心。

vec_a = [2, 3]

vec_b = [3, 1]

vec_c = [7, 5]

vec_d = [8, 7]

vec_e = [3, 8]

vec_f = [4, 9]

vec_g = [9, 2]

vec_h = [10, 1.8]

data_points = [vec_a, vec_b, vec_c, vec_d, vec_e, vec_f, vec_g, vec_h]

寻找 K 簇的第一步是将 K个 点随机放到内部空间之中。应用于随机点似乎似乎违犯直觉,因为为什么不将它们等距放到在内部空间之中呢?主要原因是所有信息似乎都不一样,这往往会导致等直角的点未摆放在实际上组成员的之该中心。如果一切顺利,实际上组成员是我们渴望在信息之中看见的组成员。K-means 聚类未必能保障我们看见似乎的最佳聚类,只能保障我们看见东边放到点的最佳聚类。随机点未必能保障较佳的坚称,但是如果多次执言道,在某个点随机放到点很有似乎会造成了较佳的结果。

战略性的相同算起前面会造成了相同的结果

因此,我们将随机点放到座标内部空间之中。未理由将它们摆放在原有信息点的测量误差和极值正因如此,所以介于两者中间。

随机生成的聚类点在原有点的只能限于生成

import random

import numpy

x_coor = [data_point[0] for data_point in data_points]

range_x = (min(x_coor), max(x_coor))

y_coor = [data_point[1] for data_point in data_points]

range_y = (min(y_coor), max(y_coor))

print(f"range X: {range_x}")

print(f"range Y: {range_y}")

ranges = [range_x, range_y]

n_clusters = 2

n_dimensions = len(ranges)

random_cluster_points = numpy.random.rand(n_dimensions, n_clusters)

for index, cluster_point in enumerate(random_cluster_points):

range_diff = ranges[index][1] - ranges[index][0]

random_cluster_points[index] = cluster_point*range_diff + ranges[index][0]

print(f"Clusters: {clusters}")

下一步是在战略性中间均等每个原始信息点。信息点不属于最能都有它的战略性。很好的坚称是与信息点最相似于的战略性,并应用于相似于性分析方法进言道精确测量。在这个案例之中,我们将应用于阿基米德。

通过量度到每个点的相距并可选择最相比之下的一个来断定每个点与哪个战略性最相似于

import numpy

cluster_data_points = [[] for _ in clusters]

for data_point in data_points:

distance_to_clusters = [dist_func(cluster, numpy.transpose(data_point)) for cluster in clusters]

closest_cluster_index = distance_to_clusters.index(min(distance_to_clusters))

cluster_data_points[closest_cluster_index] += [data_point]

量度每个信息点最相比之下哪个战略性

在地理分布信息点之后是 K-means 聚类的“均值”部分。“百分比”是指一个战略性应该如何沦为它所都有的信息点的百分比。聚相似乎不是地理分布后的百分比,因为它们只能都有最左右的信息点。因此,有必要回转每个战略性,将其前面更为改为其信息点的百分比。

每个战略性都更为一新为最相比之下它的信息点的“百分比”

量度战略性 j 的百分比的恒等式,其之中包含最相比之下它的点。

import numpy

cluster_mean = [numpy.mean(cluster_data_points, axis=0) for cluster_data_points in clusters_data_points]

字符串量度每个战略性的一新前面作为最相比之下它的信息点的百分比。

一个簇似乎更为东边其一新前面的其他信息点。旋即量度地理分布对于保障每个战略性都有应该的信息点是必要的。

重一新量度哪个点不属于哪个战略性并将战略性回转到它们的一新均值

while True

clusters_data_points = split_data_points_between_clusters(clusters, data_points, Similarity.Euclidean)

new_clusters = calc_mean_clusters(clusters_data_points)

if clusters == new_clusters:

break

clusters = new_clusters

print(f"Clusters: {clusters}")

K-means 聚类是一个子程序全过程。这这样一来我们无法在一次量度之中看见每个战略性的极致前面。它未必需要我们多次量度。这个子程序全过程一直持续到战略性不回转或直到它高于持续性。持续性保障该全过程不会暂停地继续。

为了方便使用量度,SK-Learn 披露了一个强大的 K-means 聚类实现:

from sklearn import cluster

clusters = cluster.KMeans(n_clusters=n_clusters).fit(data_points).cluster_centers_

print(clusters)

宝宝消化不良的症状是什么
儿童咽炎可以用再林阿莫西林颗粒吗
江中多元维生素片
经常看手机眼睛干涩滴什么眼药水
老人一直拉肚子怎么办
相关阅读
友情链接