
LLM的預(yù)訓(xùn)練任務(wù)有哪些
MinPts的選擇通?;贓ps的選取,建議選擇k值加1。具體來(lái)說(shuō),如果你選擇的k值為2倍的特征數(shù)減1,那么MinPts應(yīng)該為k加1。這確保了每個(gè)核心點(diǎn)的鄰域內(nèi)有足夠的點(diǎn)數(shù)來(lái)形成一個(gè)有效的簇。
Eps和MinPts的組合決定了DBSCAN的聚類結(jié)果。過(guò)大的Eps會(huì)導(dǎo)致簇?cái)?shù)量減少,過(guò)小的MinPts會(huì)導(dǎo)致噪聲點(diǎn)增加。因此,選擇合適的參數(shù)需要根據(jù)數(shù)據(jù)分布進(jìn)行多次試驗(yàn)和調(diào)整。
在Python中,可以使用scikit-learn庫(kù)來(lái)實(shí)現(xiàn)DBSCAN聚類。首先,需要導(dǎo)入必要的庫(kù),并設(shè)置隨機(jī)種子以確保結(jié)果的可重復(fù)性。
import numpy as np
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
np.random.seed(2021)
為了展示DBSCAN的效果,我們生成moon數(shù)據(jù)并進(jìn)行繪圖。這些數(shù)據(jù)有助于展示DBSCAN在處理非凸形狀數(shù)據(jù)集時(shí)的優(yōu)勢(shì)。
data = np.ones([1005,2])
data[:1000] = make_moons(n_samples=1000, noise=0.05, random_state=2022)[0]
data[1000:] = [[-1,-0.5], [-0.5,-1], [-1,1.5], [2.5,-0.5], [2,1.5]]
plt.scatter(data[:,0],data[:,1],color="c")
plt.show()
使用DBSCAN類來(lái)創(chuàng)建聚類模型并進(jìn)行訓(xùn)練。通過(guò)選擇合適的Eps和MinPts參數(shù),可以有效地識(shí)別數(shù)據(jù)中的簇。
k = 3 # 2*維度-1
k_dist = select_MinPts(data, k)
k_dist.sort()
plt.plot(np.arange(k_dist.shape[0]), k_dist[::-1])
# 由拐點(diǎn)確定鄰域半徑
eps = k_dist[::-1][15]
DBSCAN不僅可以用于簇的識(shí)別,還非常適合用于檢測(cè)數(shù)據(jù)中的離群值。通過(guò)分析聚類結(jié)果,可以識(shí)別數(shù)據(jù)集中不屬于任何簇的點(diǎn),這些點(diǎn)通常被視為噪聲或離群值。
在DBSCAN聚類后,通過(guò)可視化將核心點(diǎn)、邊界點(diǎn)和噪聲點(diǎn)進(jìn)行區(qū)分,可以清晰地看到數(shù)據(jù)的分類情況以及離群值的分布。
class_1 = []
class_2 = []
noise = []
for index, value in enumerate(label):
if value == 0:
class_1.append(index)
elif value == 1:
class_2.append(index)
elif value == -1:
noise.append(index)
plt.scatter(data[class_1, 0], data[class_1, 1], color="g", label="class 1")
plt.scatter(data[class_2, 0], data[class_2, 1], color="b", label="class 2")
plt.scatter(data[noise, 0], data[noise, 1], color="r", label="noise")
plt.legend()
plt.show()
通過(guò)DBSCAN聚類實(shí)例,可以觀察到算法在處理不同數(shù)據(jù)分布時(shí)的優(yōu)劣。尤其是當(dāng)數(shù)據(jù)集存在大量噪聲時(shí),DBSCAN能夠有效地識(shí)別出這些異常,并提供合理的聚類結(jié)果。
在scikit-learn中,DBSCAN類用于實(shí)現(xiàn)密度聚類。該類通過(guò)定義Eps和min_samples等參數(shù),幫助用戶識(shí)別數(shù)據(jù)中的自然簇結(jié)構(gòu)。這種方法特別適合處理具有不同密度和非凸形狀的數(shù)據(jù)集。
DBSCAN類的關(guān)鍵參數(shù)包括:
調(diào)節(jié)Eps和min_samples的值是DBSCAN性能優(yōu)化的關(guān)鍵。通常,需要通過(guò)多次實(shí)驗(yàn)來(lái)找到合適的參數(shù)組合,以便獲得最佳的聚類效果。
通過(guò)生成一組具有不同形狀的數(shù)據(jù)集,可以測(cè)試DBSCAN在處理非凸形狀和噪聲數(shù)據(jù)時(shí)的能力。下圖展示了數(shù)據(jù)的初始分布。
from sklearn import datasets
X1, y1 = datasets.make_circles(n_samples=5000, factor=.6, noise=.05)
X2, y2 = datasets.make_blobs(n_samples=1000, n_features=2, centers=1.2, 1.2, cluster_std=.1, random_state=9)
X = np.concatenate((X1, X2))
plt.scatter(X[:, 0], X[:, 1], marker='o')
plt.show()
使用默認(rèn)參數(shù)的DBSCAN可能無(wú)法直接得到滿意的聚類結(jié)果。因此,需要通過(guò)調(diào)整Eps和min_samples來(lái)優(yōu)化聚類效果。
from sklearn.cluster import DBSCAN
y_pred = DBSCAN(eps=0.1, min_samples=10).fit_predict(X)
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.show()
通過(guò)調(diào)參,DBSCAN可以更準(zhǔn)確地識(shí)別數(shù)據(jù)中的簇結(jié)構(gòu)和噪聲點(diǎn)。這個(gè)過(guò)程表明了參數(shù)選擇對(duì)聚類結(jié)果的重要性。
LLM的預(yù)訓(xùn)練任務(wù)有哪些
使用 Flask App Builder 進(jìn)行 API 查詢的完整指南
企業(yè)郵箱登錄指南與綜合解析
怎樣在Google地圖上顯示經(jīng)緯度
JSON 轉(zhuǎn)義和圖片鏈接的重要性
IP欺詐值:網(wǎng)絡(luò)安全的關(guān)鍵指標(biāo)
使用 Requests-OAuthlib 簡(jiǎn)化 OAuth 認(rèn)證流程
中文命名實(shí)體識(shí)別(Named Entity Recognition, NER)初探
快速高效的語(yǔ)音轉(zhuǎn)文字工具:讓語(yǔ)音轉(zhuǎn)文字更簡(jiǎn)單
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)