python庫umap有效地揭示高維數(shù)據(jù)的結(jié)構(gòu)和模式初探
python 庫umap
今天給大家分享一個(gè)超強(qiáng)的 python 庫,umap
https://github.com/lmcinnes/umap
UMAP 是一種用于降維的算法,可用于類似于 t-SNE 的可視化。UMAP 基于流形學(xué)習(xí)的概念,旨在更有效地揭示高維數(shù)據(jù)中的結(jié)構(gòu)和模式。
該算法基于關(guān)于數(shù)據(jù)的三個(gè)假設(shè)。
數(shù)據(jù)均勻分布在黎曼流形上
黎曼度量是局部常數(shù)(或者可以近似為局部常數(shù))
流形是局部連接的
優(yōu)點(diǎn)
UMAP 作為一種現(xiàn)代的降維技術(shù),具有如下優(yōu)點(diǎn)。
速度快:UMAP 通常比其他降維技術(shù),如 t-SNE,更快,尤其是在處理大型數(shù)據(jù)集時(shí)。
良好的可擴(kuò)展性:UMAP能夠處理相當(dāng)大的數(shù)據(jù)集,同時(shí)保持較低的計(jì)算和內(nèi)存要求。
保持全局結(jié)構(gòu):相比于 t-SNE,UMAP 在保持局部結(jié)構(gòu)的同時(shí),還能較好地保留全局?jǐn)?shù)據(jù)結(jié)構(gòu)。
參數(shù)少且具有解釋性:UMAP的參數(shù)較少,而且相對(duì)直觀易懂,如鄰域大小和最小距離。
交互式可視化:其低維表示適合進(jìn)行交互式數(shù)據(jù)探索和可視化。
兼容性:UMAP可以與 scikit-learn 等 Python 機(jī)器學(xué)習(xí)庫無縫集成。
數(shù)學(xué)原理
構(gòu)建高維空間的鄰域圖:對(duì)于每個(gè)點(diǎn),UMAP 在高維空間中尋找其近鄰,并基于距離或相似性構(gòu)建一個(gè)加權(quán)圖。這種加權(quán)是通過局部距離度量(如歐氏距離)來實(shí)現(xiàn)的。
優(yōu)化過程:UMAP 嘗試找到一個(gè)低維表示,其中的點(diǎn)保持著類似于高維數(shù)據(jù)的局部和全局關(guān)系。這是通過最小化高維空間和低維空間之間的交叉熵?fù)p失來實(shí)現(xiàn)的。
流形假設(shè):UMAP 假設(shè)數(shù)據(jù)分布在某種低維流形上。這意味著即使數(shù)據(jù)原本存在于高維空間,也可以在更低維的空間中找到其近似表示。
相關(guān)公式
高維空間中的距離度量:對(duì)于每個(gè)點(diǎn) ,UMAP定義了一個(gè)局部距離度量,通常為歐氏距離或其他度量。
交叉熵最小化:UMAP最小化的目標(biāo)函數(shù)基于交叉熵,形式上為:
其中, 是高維空間中點(diǎn) 和 之間的連接概率,而 是低維表示中對(duì)應(yīng)點(diǎn)的相似性度量。
概率分布匹配:UMAP 嘗試匹配高維和低維空間中的兩個(gè)概率分布 和
優(yōu)化算法:通常使用隨機(jī)梯度下降或類似方法來最小化交叉熵?fù)p失。
初體驗(yàn)
庫的安裝
我們可以直接使用 pip 來進(jìn)行安裝,umap 依賴于 scikit-learn 和 numba,確保你已經(jīng)安裝了它們。
pip install umap-learn
如果你想使用繪圖功能,可以使用。
pip install umap-learn[plot]
一個(gè)案例
這里,我們使用 MNIST 數(shù)據(jù)集來作為演示。
import umap from sklearn.datasets import load_digits digits = load_digits() mapper = umap.UMAP(n_neighbors=10,min_dist=0.001).fit(digits.data) umap.plot.points(mapper, labels=digits.target)
以上就是python庫umap有效地揭示高維數(shù)據(jù)的結(jié)構(gòu)和模式初探的詳細(xì)內(nèi)容,更多關(guān)于python庫umap高維數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Python實(shí)現(xiàn)貪吃蛇小游戲(附源碼)
本次我們將編寫一個(gè)貪吃蛇的游戲。通過鍵盤上、下、左、右控制小蛇上、下、左、右移動(dòng),吃到食物后長度加1;蛇頭碰到自身或窗口邊緣,游戲失敗,需要的可以參考一下2022-11-11python實(shí)現(xiàn)優(yōu)雅的打印json格式文本
這篇文章主要介紹了python實(shí)現(xiàn)優(yōu)雅的打印json格式文本方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Python ckeditor富文本編輯器代碼實(shí)例解析
這篇文章主要介紹了Python ckeditor富文本編輯器代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06python argparse 模塊命令行參數(shù)用法及說明
這篇文章主要介紹了python argparse 模塊命令行參數(shù)用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11python GUI庫圖形界面開發(fā)之PyQt5多行文本框控件QTextEdit詳細(xì)使用方法實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5多行文本框控件QTextEdit詳細(xì)使用方法實(shí)例,需要的朋友可以參考下2020-02-02利用Python學(xué)習(xí)RabbitMQ消息隊(duì)列
RabbitMQ和郵局的主要區(qū)別就是RabbitMQ接收、存儲(chǔ)和發(fā)送的是二進(jìn)制數(shù)據(jù)----消息,本篇文章給大家介紹利用Python學(xué)習(xí)RabbitMQ消息隊(duì)列,對(duì)python消息隊(duì)列相關(guān)知識(shí)感興趣的朋友參考下2015-11-11