在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 人工智能無(wú)監(jiān)督學(xué)習(xí):聚類
人工智能開發(fā)環(huán)境配置
計(jì)算機(jī)視覺
啟發(fā)式搜索
人工智能監(jiān)督學(xué)習(xí)(回歸)
賭勝負(fù)
強(qiáng)化學(xué)習(xí)
人工智能無(wú)監(jiān)督學(xué)習(xí):聚類
人工智能入門概念
深度學(xué)習(xí)
NLTK包
人工智能(Python)教程
神經(jīng)網(wǎng)絡(luò)
自然語(yǔ)言處理
人工智能邏輯編程
遺傳算法
人工智能監(jiān)督學(xué)習(xí)(分類)
人工智能數(shù)據(jù)準(zhǔn)備
人工智能機(jī)器學(xué)習(xí)
語(yǔ)音識(shí)別
分析時(shí)間序列數(shù)據(jù)

人工智能無(wú)監(jiān)督學(xué)習(xí):聚類

無(wú)監(jiān)督機(jī)器學(xué)習(xí)算法沒有任何監(jiān)督者提供任何指導(dǎo)。 這就是為什么它們與真正的人工智能緊密結(jié)合的原因。

在無(wú)人監(jiān)督的學(xué)習(xí)中,沒有正確的答案,也沒有監(jiān)督者指導(dǎo)。 算法需要發(fā)現(xiàn)用于學(xué)習(xí)的有趣數(shù)據(jù)模式。

什么是聚類?

基本上,它是一種無(wú)監(jiān)督學(xué)習(xí)方法,也是用于許多領(lǐng)域的統(tǒng)計(jì)數(shù)據(jù)分析的常用技術(shù)。 聚類主要是將觀測(cè)集合劃分為子集(稱為聚類)的任務(wù),以同一聚類中的觀測(cè)在一種意義上相似并且與其他聚類中的觀測(cè)不相似的方式。 簡(jiǎn)而言之,可以說聚類的主要目標(biāo)是根據(jù)相似性和不相似性對(duì)數(shù)據(jù)進(jìn)行分組。

例如,下圖顯示了不同群集中的類似數(shù)據(jù) -

數(shù)據(jù)聚類算法

以下是數(shù)據(jù)聚類的幾種常用算法 -

K-Means算法
K均值聚類算法是眾所周知的數(shù)據(jù)聚類算法之一。 我們需要假設(shè)簇的數(shù)量已經(jīng)是已知的。 這也被稱為平面聚類。 它是一種迭代聚類算法。 該算法需要遵循以下步驟 -

第1步 - 需要指定所需的K個(gè)子組的數(shù)量。
第2步 - 修復(fù)群集數(shù)量并將每個(gè)數(shù)據(jù)點(diǎn)隨機(jī)分配到群集。 換句話說,我們需要根據(jù)群集數(shù)量對(duì)數(shù)據(jù)進(jìn)行分類。

在這一步中,計(jì)算聚類質(zhì)心。

由于這是一種迭代算法,因此需要在每次迭代中更新K個(gè)質(zhì)心的位置,直到找到全局最優(yōu)值或換句話說質(zhì)心到達(dá)其最佳位置。

以下代碼將有助于在Python中實(shí)現(xiàn)K-means聚類算法。 我們將使用Scikit-learn模塊。

導(dǎo)入必需的軟件包 -

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
from sklearn.cluster import KMeans

以下代碼行將通過使用sklearn.dataset包中的make_blob來(lái)生成包含四個(gè)blob的二維數(shù)據(jù)集。

from sklearn.datasets.samples_generator import make_blobs

X, y_true = make_blobs(n_samples = 500, centers = 4,
            cluster_std = 0.40, random_state = 0)

可以使用下面的代碼可視化數(shù)據(jù)集 -

plt.scatter(X[:, 0], X[:, 1], s = 50);
plt.show()

得到以下結(jié)果 -

在這里,將kmeans初始化為KMeans算法,以及多少個(gè)群集(n_clusters)所需的參數(shù)。

kmeans = KMeans(n_clusters = 4)

需要用輸入數(shù)據(jù)訓(xùn)練K-means模型。

kmeans.fit(X)
y_kmeans = kmeans.predict(X)
plt.scatter(X[:, 0], X[:, 1], c = y_kmeans, s = 50, cmap = 'viridis')

centers = kmeans.cluster_centers_

下面給出的代碼將根據(jù)數(shù)據(jù)繪制和可視化機(jī)器的發(fā)現(xiàn),并根據(jù)要找到的聚類數(shù)量進(jìn)行擬合。

plt.scatter(centers[:, 0], centers[:, 1], c = 'black', s = 200, alpha = 0.5);
plt.show()

得到以下結(jié)果 -

均值偏移算法

它是另一種在無(wú)監(jiān)督學(xué)習(xí)中使用的流行和強(qiáng)大的聚類算法。 它不做任何假設(shè),因此它是非參數(shù)算法。 它也被稱為分層聚類或均值聚類分析。 以下將是該算法的基本步驟 -

  • 首先,需要從分配給它們自己的集群的數(shù)據(jù)點(diǎn)開始。
  • 現(xiàn)在,它計(jì)算質(zhì)心并更新新質(zhì)心的位置。
  • 通過重復(fù)這個(gè)過程,向簇的頂點(diǎn)靠近,即朝向更高密度的區(qū)域移動(dòng)。
  • 該算法停止在質(zhì)心不再移動(dòng)的階段。

在下面的代碼的幫助下,在Python中實(shí)現(xiàn)了Mean Shift聚類算法。使用Scikit-learn模塊。

導(dǎo)入必要的軟件包 -

import numpy as np
from sklearn.cluster import MeanShift
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")

以下代碼將通過使用sklearn.dataset包中的make_blob來(lái)生成包含四個(gè)blob的二維數(shù)據(jù)集。

from sklearn.datasets.samples_generator import make_blobs

可以用下面的代碼可視化數(shù)據(jù)集 -

centers = [[2,2],[4,5],[3,10]]
X, _ = make_blobs(n_samples = 500, centers = centers, cluster_std = 1)
plt.scatter(X[:,0],X[:,1])
plt.show()

執(zhí)行上面示例代碼,得到以下結(jié)果 -

現(xiàn)在,我們需要用輸入數(shù)據(jù)來(lái)訓(xùn)練Mean Shift聚類模型。

ms = MeanShift()
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_

以下代碼將按照輸入數(shù)據(jù)打印聚類中心和預(yù)期的聚類數(shù)量 -

print(cluster_centers)
n_clusters_ = len(np.unique(labels))
print("Estimated clusters:", n_clusters_)
[[ 3.23005036 3.84771893]
[ 3.02057451 9.88928991]]
Estimated clusters: 2

下面給出的代碼將有助于根據(jù)數(shù)據(jù)繪制和可視化機(jī)器的發(fā)現(xiàn),并根據(jù)要找到的聚類數(shù)量進(jìn)行裝配。

colors = 10*['r.','g.','b.','c.','k.','y.','m.']
   for i in range(len(X)):
   plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 10)
plt.scatter(cluster_centers[:,0],cluster_centers[:,1],
   marker = "x",color = 'k', s = 150, linewidths = 5, zorder = 10)
plt.show()

執(zhí)行上面示例代碼,得到以下結(jié)果 -

測(cè)量群集性能

現(xiàn)實(shí)世界的數(shù)據(jù)不是自然地組織成許多獨(dú)特的群集。 由于這個(gè)原因,要想象和推斷推理并不容易。 這就是為什么需要測(cè)量聚類性能及其質(zhì)量。 它可以在輪廓分析的幫助下完成。

輪廓分析

該方法可用于通過測(cè)量群集之間的距離來(lái)檢查聚類的質(zhì)量。 基本上,它提供了一種通過給出輪廓分?jǐn)?shù)來(lái)評(píng)估像集群數(shù)量這樣的參數(shù)的方法。 此分?jǐn)?shù)是衡量一個(gè)群集中每個(gè)點(diǎn)與相鄰群集中的點(diǎn)的距離的度量。

分析輪廓分?jǐn)?shù)
得分范圍為[-1,1]。 以下是對(duì)這個(gè)分?jǐn)?shù)的分析 -

  • 得分為+1分 - 得分接近+1表示樣本距離相鄰集群很遠(yuǎn)。
  • 得分為0分 - 得分0表示樣本與兩個(gè)相鄰群集之間的決策邊界處于或非常接近。
  • 得分為-1分 - 得分為負(fù)分?jǐn)?shù)表示樣本已分配到錯(cuò)誤的群集。

計(jì)算輪廓分?jǐn)?shù)

在本節(jié)中,我們將學(xué)習(xí)如何計(jì)算輪廓分?jǐn)?shù)。

輪廓分?jǐn)?shù)可以通過使用以下公式來(lái)計(jì)算 -

這里,`