丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給三川
發(fā)送

0

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

本文作者: 三川 2017-04-13 14:43
導(dǎo)語:Kaggle 發(fā)布的 HyperTools 官方教程。

雷鋒網(wǎng)按:世界首屈一指的機(jī)器學(xué)習(xí)競賽平臺 Kaggle,在今年早些時(shí)候推出了基于 Python 的高維數(shù)據(jù)降維以及可視化處理工具 HyperTools,并將其作為 Kaggle Kernels 的一部分免費(fèi)提供給開發(fā)者。

日前,Kaggle 在博客公布了使用 HyperTools 的官方教程。其中包含兩個(gè)例子:用 HyperTools 對蘑菇數(shù)據(jù)做可視化,以及對全球氣象數(shù)據(jù)做可視化。示例包含代碼,需要做數(shù)據(jù)降維可視化的童鞋,這是一篇不錯(cuò)的 HyperTools 上手教程。全文由雷鋒網(wǎng)編譯。

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

數(shù)據(jù)科學(xué)家、分析師處理的數(shù)據(jù)集,正在變得越來越復(fù)雜。

機(jī)器學(xué)習(xí)的很大一部分專注于從復(fù)雜數(shù)據(jù)中抽取涵義。但是,這一過程中人類仍然扮演很重要的角色。人類的視覺系統(tǒng)非常善于檢測復(fù)雜結(jié)構(gòu),并發(fā)現(xiàn)海量數(shù)據(jù)中的微妙模式。人眼睜開的每一秒鐘,都有無數(shù)的數(shù)據(jù)點(diǎn)(到達(dá)視網(wǎng)膜的光線圖形)蜂擁至大腦的視覺區(qū)域。對于識別沙灘上的一枚完整貝殼,或是人群中朋友的臉,人腦能輕松完成。這一點(diǎn)其實(shí)十分了不起。我們的大腦是無監(jiān)督模式發(fā)現(xiàn)的“狂人”。

另一方面,依賴于我們的視覺系統(tǒng)了來提取信息,有至少一個(gè)主要缺陷:至多只能同時(shí)感知三個(gè)維度。而今天的數(shù)據(jù)集,有很多的維度比這要高得多。

現(xiàn)在數(shù)據(jù)科學(xué)家普遍面臨的問題是:

如何駕馭人腦的模式識別超能力,實(shí)現(xiàn)復(fù)雜、高維數(shù)據(jù)集的可視化?

如何降維?

如同其名,降維是指把高維數(shù)據(jù)集轉(zhuǎn)化為低維數(shù)據(jù)集。比如說,把 Kaggle 上針對蘑菇的 UCI ML 數(shù)據(jù)集組織為矩陣。每一行都包含一系列蘑菇的特征,比如菌蓋大小、形狀、顏色、氣味等等。對這做降維,最簡單的方法是忽略某些特征。比如挑出你最喜歡的三個(gè)特征,去掉其他。但如果忽略的特征包含有價(jià)值的甄別信息,比方說要判斷蘑菇是否有毒,這就非常有問題了。

一個(gè)更復(fù)雜的辦法,是只考慮主要的東西,來對數(shù)據(jù)集進(jìn)行降維。即將特征進(jìn)行合并,用合并后的主成分來解釋數(shù)據(jù)集中的大多數(shù)變化。利用一項(xiàng)名為主成分分析(PCA)的技術(shù),我們能夠在降維的同時(shí),盡可能保留數(shù)據(jù)集的寶貴變化。這里的思路是,我們能夠創(chuàng)建一系列(更少)新的特征,每一項(xiàng)新特征都由幾項(xiàng)舊特征合并得到。舉個(gè)例子,其中一項(xiàng)新特征也許會同時(shí)代表形狀和顏色,另一項(xiàng)代表尺寸和毒性。大體上,每一項(xiàng)新特征都會由原始特征的加權(quán)和得到。

下面,是一副幫助你直覺性理解數(shù)據(jù)降維的圖示。

假設(shè)你有一個(gè)三維數(shù)據(jù)集(左),你想要把它轉(zhuǎn)化為右邊的二維數(shù)據(jù)集。PCA 會在原始 3D 空間找出主要的坐標(biāo)軸,即點(diǎn)與點(diǎn)之間的差別最大。當(dāng)我們把兩條最能解釋數(shù)據(jù)差異的坐標(biāo)軸確定下來(左圖中的黑線),就可以在這兩條坐標(biāo)軸上重新為數(shù)據(jù)作圖。3D 數(shù)據(jù)集現(xiàn)在就變成了 2D 的。這里,我們選擇的是低維例子,所以我們能看到發(fā)生了什么。但是,這項(xiàng)技術(shù)能用同樣的方式應(yīng)用于高維數(shù)據(jù)集。

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

HyperTools

Kaggle 開發(fā)了 HyperTools 工具包,來幫助開發(fā)者對高維數(shù)據(jù)進(jìn)行降維視覺探索。

它基本的流水線,是導(dǎo)入高維數(shù)據(jù)集(或者一系列高維數(shù)據(jù)集),在單個(gè)函數(shù)調(diào)用里降維,然后創(chuàng)建圖表。該算法包建立在多個(gè)大家很熟悉的工具的基礎(chǔ)上,比如 matplotlib、scikit-learn 和 seaborn。HyperTools 以易用性為首要設(shè)計(jì)目標(biāo),請見下面的兩個(gè)例子。

用 HyperTools 找毒蘑菇,對靜態(tài)點(diǎn)云進(jìn)行可視化

首先,我們來探索下上文提到的蘑菇數(shù)據(jù)集。從導(dǎo)入相關(guān)算法庫開始:

  1. import pandas as pd

  2. import hypertools as hyp

接下來,把數(shù)據(jù)讀取到 pandas DataFrame:

  1. data = pd.read_csv('../input/mushrooms.csv')

  2. data.head()

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程DataFrame 的每一行對應(yīng)著對某一個(gè)蘑菇的觀察值,每一列反映出一個(gè)蘑菇的描述性特征。這里,僅展示了表單的一部分。現(xiàn)在,我們可以通過把數(shù)據(jù)導(dǎo)入 HyperTools,把高維數(shù)據(jù)在低維空間表示出來。為了對文本列進(jìn)行處理,在降維之前,HyperTools 會先把每個(gè)文本列轉(zhuǎn)為一系列二元的假變量。如果“菌蓋尺寸”這一列包含“大”和“小”標(biāo)簽,這一列會被轉(zhuǎn)為兩個(gè)二元列,一個(gè)針對“大”,另一個(gè)針對“小”。 1 代表該特征(“大”或“小”)的存在,0 代表不存在。(雷鋒網(wǎng)注:詳細(xì)解釋請參考 pandas 文件中的 get_dummies 函數(shù))

  1. hyp.plot(data, 'o')

   這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

在繪制  DataFrame 上,我們實(shí)際上創(chuàng)建了一個(gè)三維的“蘑菇空間”。具有相似特征的蘑菇,是空間中距離相近的點(diǎn),特征不同的,則距離更遠(yuǎn)。用這種方式做 DataFrame 可視化,一件事馬上變得很清楚:數(shù)據(jù)中有多組簇。換句話說,蘑菇特征的所有組合并不是等可能的(equally likely),而特定的組合,會傾向于聚到一起。為更好理解這一空間,我們可以根據(jù)所感興趣的數(shù)據(jù)特征,對每個(gè)點(diǎn)上色。舉個(gè)例子,根據(jù)蘑菇是否有毒/可食用來上色。


  1. hyp.plot(data,'o', group=class_labels, legend=list(set(class_labels)))


這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

紅色代表有毒,綠色無毒

用這種方式可視化,可以清楚看出,每個(gè)簇中的蘑菇是否有毒都是穩(wěn)定的。但不同之處在于簇與簇之間。另外,看起來有好幾個(gè)十分明確的“有毒”以及“可食用”的簇。我們可以借助 HyperTools 的“聚類”功能,對此進(jìn)一步探索。它使用了 k-means 聚類方法對觀察值上色。數(shù)據(jù)集的描述表明其有 23 種不同種類的蘑菇,因此,我們把n _clusters 參數(shù)設(shè)為 23。

  1. hyp.plot(data, 'o', n_clusters=23)

   這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

To gain access to the cluster labels, the clustering tool may be called directly using hyp.tools.cluster, and the resulting labels may then be passed to hyp.plot:

為訪問簇的標(biāo)簽,該聚類工具可用 hyp.tools.cluster 直接調(diào)用,相關(guān)標(biāo)簽隨機(jī)被傳遞到 hyp.plot:

  1. cluster_labels = hyp.tools.cluster(data, n_clusters=23)

  2. hyp.plot(data, group=cluster_labels)

在默認(rèn)設(shè)置中,HyperTools 使用 PCA 來進(jìn)行降維。但只需要額外的幾行代碼,我們就可以直接從 sklearn 中調(diào)用相關(guān)函數(shù),以使用其它降維方法。。舉個(gè)例子,如果我們使用 t-SNE 來給數(shù)據(jù)降維的話:

  1. from sklearn.manifold import TSNE

  2. TSNE_model = TSNE(n_components=3)

  3. reduced_data_TSNE = TSNE_model.fit_transform(hyp.tools.df2mat(data))

  4. hyp.plot(reduced_data_TSNE,'o', group=class_labels, legend=list(set(class_labels)))

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

不同的降維方法,會突出或保留數(shù)據(jù)的不同方面。這里有一個(gè)包含額外示例(包括其它降維方法)的資源庫。

對于如同通過降維和可視化暴露出數(shù)據(jù)的幾何機(jī)構(gòu),上述的數(shù)據(jù)考察(data expedition)給出了一個(gè)例子。蘑菇數(shù)據(jù)集的觀察值形成了獨(dú)立的簇,我們通過 HyperTools 來發(fā)現(xiàn)這些簇。類似這樣的探索和可視化,能夠指導(dǎo)我哦們的分析決策,比如,是否要用一個(gè)特定種類的分類器,來區(qū)分有毒 vs 可食用的蘑菇。如果你想要自己試試用 HyperTools 分析這個(gè)蘑菇數(shù)據(jù)集,請戳這里

用 HyperTools 發(fā)現(xiàn)全球變暖

上文蘑菇數(shù)據(jù)集包含的是靜態(tài)觀察值,我們再一起來看看全球氣溫?cái)?shù)據(jù)。這個(gè)案例會向大家展示,如何利用 HyperTools  使用動態(tài)軌跡對時(shí)間序列數(shù)據(jù)進(jìn)行可視化。

接下來的數(shù)據(jù)集,是 1875–2013 年間全球 20 個(gè)城市每月的氣溫記錄。為了用 HyperTools 來準(zhǔn)備數(shù)據(jù)集,我們創(chuàng)建了一個(gè)時(shí)間/城市矩陣,每一行是接下來每月的氣溫記錄,每一列是不同城市的氣溫值。你可以用 Kaggle 上的 Berkeley Earth Climate Change 來重建這一示例,或者克隆這一 GitHub 資源庫。

為了對溫度變化做可視化,我們會用 HyperTools 來給數(shù)據(jù)降維,然后把溫度隨時(shí)間的變化用線畫出來:

  1. hyp.plot(temps)

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

這看起來像一團(tuán)亂麻,是吧?但我們承諾了找出數(shù)據(jù)的結(jié)構(gòu)——現(xiàn)在就來找吧。

由于每個(gè)城市的地理位置不同,它溫度時(shí)間序列的平均值和方差會比其他城市更高或者更低。這會反過來影響降維時(shí)該城市的權(quán)重。為了對每個(gè)城市在圖表中的權(quán)重進(jìn)行標(biāo)準(zhǔn)化處理,我們可設(shè)置標(biāo)準(zhǔn)化 flag (默認(rèn)值是 False)。設(shè)置 normalize='across' 。HyperTools 整合了一系列實(shí)用的標(biāo)準(zhǔn)化選項(xiàng),詳情請戳這里。

  1. hyp.plot(temps, normalize='across')

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

用鼠標(biāo)旋轉(zhuǎn)該數(shù)據(jù)圖,旋即暴露出的結(jié)構(gòu)很有意思。我們可以按照年份來對線條上色,使其結(jié)構(gòu)更顯眼,并幫助我們理解它如何隨時(shí)間而變化。偏紅的線條,意味著時(shí)間更久遠(yuǎn),偏藍(lán)的線條意味著時(shí)間更近。

  1. hyp.plot(temps, normalize='across', group=years.flatten(), palette='RdBu_r')

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

上色后的線條,暴露出了數(shù)據(jù)的兩個(gè)關(guān)鍵結(jié)構(gòu)信息。第一,有系統(tǒng)性的藍(lán)色到紅色的色彩漸變,表明全球的整體氣溫模式有系統(tǒng)性的改變。第二,每種顏色有周期性的模式,反映出季節(jié)氣候變化。我們也可以用二維圖形對這兩個(gè)現(xiàn)象做可視化:

  1. hyp.plot(temps, normalize='across', group=years.flatten(), palette='RdBu_r', ndims=2)

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

現(xiàn)在是壓軸戲——在創(chuàng)建靜態(tài)圖形之外,HyperTools 還能創(chuàng)建動圖,這有時(shí)能顯露出數(shù)據(jù)中的其他模式。創(chuàng)造出動圖,只需要在對時(shí)間序列數(shù)據(jù)做可視化時(shí),簡單地把 animate=True 傳給 hyp.plot。如果你還傳了 chemtrails=True,一條數(shù)據(jù)的低透明度足跡會保留在圖形中:

  1. hyp.plot(temps, normalize='across', animate=True, chemtrails=True)

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

最終的成果,便是該動畫。注視著它給你帶來的滿足感,叫做“全球變暖”。

以上便是用 HyperTools 為氣象和蘑菇數(shù)據(jù)做可視化的例子。想要了解更多的話,請?jiān)L問項(xiàng)目的 GitHub 資源庫,文件閱讀網(wǎng)頁,Kaggle 研究團(tuán)隊(duì)寫的論文,以及 notebooks 演示。

via kaggle

相關(guān)文章:

從 Kaggle 困局,看國內(nèi)數(shù)據(jù)競賽平臺如何突圍

谷歌 Embedding Projector 開源,高維數(shù)據(jù)可視化變得超簡單!

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

這才是使用數(shù)據(jù)降維&可視化工具 HyperTools 的正確姿勢! | Kaggle 實(shí)戰(zhàn)教程

分享:
相關(guān)文章

用愛救世界
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說