python機(jī)器學(xué)習(xí)二(無監(jiān)督學(xué)習(xí))

無監(jiān)督學(xué)習(xí)

利用無標(biāo)簽的數(shù)據(jù)學(xué)習(xí)數(shù)據(jù)的分布或數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系被稱作無監(jiān)督學(xué)習(xí)

有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的最大區(qū)別在于數(shù)據(jù)是否有標(biāo)簽

無監(jiān)督學(xué)習(xí)最常應(yīng)用的場景是聚類(clustering)和降維(dimension reduction)

聚類

聚類,就是根據(jù)數(shù)據(jù)的“相似性”將數(shù)據(jù)分為多類的過程

評估倆個不同樣本之間的‘相似性’,通常使用的方法就是計算倆個樣本之間的“距離”。使用不同的方法計算樣本間的距離會關(guān)系到聚類結(jié)果的好壞。

sklearn.cluster

sklearn.cluster模塊提供的各聚類算法函數(shù)可以使用不同的數(shù)據(jù)形式最為輸入:

標(biāo)準(zhǔn)數(shù)據(jù)輸入格式:[樣本個數(shù),特征個數(shù)]定義的矩陣形式

相似性矩陣輸入格式:既由[樣本數(shù)目,樣本數(shù)目]定義的矩陣形式,矩陣中的每一個元素為兩個樣本的相似度,如DBSCAN,AffinityPropagation(近鄰傳播算法)接受這種輸入。如果以余弦相似度為例,則對角線元素全為1.矩陣中每個元素的取值范圍[0,1]

聚類vs降維

聚類和降維都是無監(jiān)督學(xué)習(xí)的典型任務(wù),任務(wù)之間存在關(guān)聯(lián),比如某些高緯數(shù)據(jù)的聚類可以通過降維處理更好的獲得,另外學(xué)界研究也表明代表性的聚類算法如k-means與降維算法如NMF之間存在等價性,在此我們就不展開討論了,有興趣的同學(xué)可以參考我們推薦的閱讀內(nèi)容。

sklearn vs 降維

降維是機(jī)器學(xué)習(xí)領(lǐng)域的一個重要研究內(nèi)容,有很多被工業(yè)界和學(xué)術(shù)界接受的典型算法,截止到目前sklearn庫提供7種降維算法。

降維過程也可以被理解為對數(shù)據(jù)集的組成成分進(jìn)行分解(decomposition)的過程,因此sklearn為降維模塊命名為decomposition,在對降維算法調(diào)用需要使用sklearn.decomposition模塊

K-means聚類算法

K-means
算法以k為參數(shù),把n個對象分成k個簇,使簇內(nèi)具有較高的相似性度,而簇間的相似度較低。

其處理過程如下:

?????????? 1.隨機(jī)選擇k個點作為初始的聚類中心;

?????????? 2.對于剩下的點,根據(jù)其與聚類中心的距離,將其歸入最近的簇

?????????? 3.對每個簇,計算所有點的均值作為新的聚類中心

??????????? 4.重復(fù)2、3直到聚類中心不再發(fā)生改變

k-means的應(yīng)用

數(shù)據(jù)介紹:

現(xiàn)有1999年全國31個省份城鎮(zhèn)居民家庭平均每人全年消費(fèi)性支出的八個主要變量數(shù)據(jù),這八個變量分別是:食品、衣著、家庭設(shè)備用品及服務(wù)、醫(yī)療保健、交通和通訊、娛樂教育文化服務(wù)、居住以及雜項商品和服務(wù)。利用已有數(shù)據(jù),對31個省份進(jìn)行聚類。

實驗?zāi)康模?/p>

?通過聚類,了解1999年各個省份的消費(fèi)水平在國內(nèi)的情況

技術(shù)路線:sklearn.cluster.Kmeans

實驗過程:K-means聚類算法

實驗過程:

1.建立工程,導(dǎo)入sklearn相關(guān)包(import numpy as np、import sklearn.cluster import KMearns)

關(guān)于一些相關(guān)包的介紹:

numpy是python語言的一個擴(kuò)充程序庫。支持高級大量的維度數(shù)組與矩陣運(yùn)算,此外也針對數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫。

使用sklearn.cluster.KMeans可以調(diào)用K-means算法進(jìn)行聚類

2.加載數(shù)據(jù),創(chuàng)建K-means算法實例,并進(jìn)行訓(xùn)練,獲得標(biāo)簽:

3.輸出標(biāo)簽,查看結(jié)果

將城市按照消費(fèi)水平n_clusters類,消費(fèi)水平相近的城市聚集在一類中

expense:聚類中心點的數(shù)值加和,也就是平均消費(fèi)水平

聚類2類:km = KMeans(n_clusters=2)

聚類3類:km = KMeans(n_clusters=3)

聚類4類:km = KMeans(n_clusters=4)

從結(jié)果看出消費(fèi)水平接近的省市聚集在了一類,例如消費(fèi)最高的“北京”“上海”“廣東”聚集在了消費(fèi)最高的類別。聚4類時,結(jié)果可以比較明顯的看出消費(fèi)層級。


DBSCAN密度聚類

DBSCAN算法是一種基于密度的聚類算法

?????????????????????? 聚類的時候不需要預(yù)先指定簇的個數(shù)

??????????????????????? 最終的族個數(shù)不定

DBSCAN算法將數(shù)據(jù)點分為三類

?????????????????????? 核心點:在半徑Eps內(nèi)含有超過MinPts數(shù)目的點

??????????????????????? 邊界點:在半徑Eps內(nèi)點的數(shù)量小于MinPts,但是落在核心點的領(lǐng)域內(nèi)

??????????????????????? 噪音點:既不是核心點也不是邊界點的點

DBSCAN算法流程:

1.將所有點標(biāo)記為核心點、邊界點或噪聲點;

2.刪除噪聲點;

3.為距離在Eps之內(nèi)的所有核心點之間賦予一條邊;

4.每組連通的核心點形成一個簇;

5.將每個邊界點指派到一個與之關(guān)聯(lián)的核心點的簇中(哪一個核心點的半徑范圍之內(nèi))

DBSCAN的應(yīng)用實例

數(shù)據(jù)介紹:

現(xiàn)有大學(xué)校園網(wǎng)的日志數(shù)據(jù),290條大學(xué)生的校園網(wǎng)使用情況數(shù)據(jù),數(shù)據(jù)包括用戶ID,設(shè)備的MAC地址,IP地址,開始上網(wǎng)時間,停止上網(wǎng)時間,上網(wǎng)時長,校園網(wǎng)套餐等。利用已有數(shù)據(jù),分析學(xué)生上網(wǎng)的模式。

實驗?zāi)康模?/p>

通過DBSCAN聚類,分析學(xué)生上網(wǎng)時間和上網(wǎng)時長的模式

1.建立工程,導(dǎo)入sklearn相關(guān)包(import numpy as np/from sklearn.cluster import DBSCAN)

?????????????????? DBSCAN主要參數(shù):

???????????????????? eps:兩個樣本被看作鄰居節(jié)點的最大距離

????????????????????? min_samples:簇的樣本數(shù)

????????????????????? metric:距離計算方式

??????????????????? 例:sklearn.cluster.DBSCAN(eps=0.5,min_samples=5,metric='euclidean')


無監(jiān)督學(xué)習(xí)--降維

PCA方法及其應(yīng)用

主成分分析(Principal Component Analysis,PCA)是最常用的一種降維方法,通常用于高緯數(shù)據(jù)集的探索與可視化,還可以用作數(shù)據(jù)壓縮和預(yù)處理等。

PCA可以把具有相關(guān)性的高緯變量合成為線性無關(guān)的低維變量,稱為主成分。主要分能夠盡可能保留原始數(shù)據(jù)的信息。

在介紹PCA的原理之前需要回顧涉及到的相關(guān)術(shù)語:

方差

協(xié)方差

協(xié)方差矩陣

特征向量和特征值

sklearn中主成分分析

在sklearn庫中,可以使用sklearn.decomposition.PCA加載PCA進(jìn)行降維,主要參數(shù)有:

n_components:指定主成分的個數(shù),即降維后數(shù)據(jù)的維度

svd_solver:設(shè)置特征值分解的方法,默認(rèn)為‘a(chǎn)uto’,其他可選有‘full’,‘a(chǎn)rpack’,'randomized'。


NMF方法及實例



非負(fù)矩陣分解(NMF)

非負(fù)矩陣分解(Non-negative Matrix Factorization,NMF)是在矩陣中所有元素均為非負(fù)數(shù)約束條件之下的矩陣分解方法。

基本思想:給定一個非負(fù)矩陣V,NMF能夠找到一個非負(fù)矩陣W和一個非負(fù)矩陣H,使得矩陣W和H的乘積近似等于矩陣V中的值。

sklearn中非負(fù)矩陣分解

在sklearn庫中,可以使用sklearn.decomposition.NMF加載NMF算法,主要參數(shù)有:

n_components:用于指定分解后矩陣的單個維度k;

init:w矩陣和h矩陣的初始化方式,默認(rèn)為‘nndsvdar’


基于聚類的“圖像分割”實例編寫

圖像分割

圖像分割:利用圖像的灰度、顏色、紋理、形狀等特征,把圖像分成若干個互不重疊的區(qū)域,并使這些特征在同一區(qū)域內(nèi)呈現(xiàn)相似性,在不同的區(qū)域之間存在明顯的差異性。然后就可以將分割的圖像中具有獨(dú)特性質(zhì)的區(qū)域提取出來用于不同的研究。

圖像分割技術(shù)已在實際生活中得到廣泛的應(yīng)用。例如:在機(jī)車檢驗領(lǐng)域,可以應(yīng)用到輪轂裂紋圖像的分割,及時發(fā)現(xiàn)裂紋,保證行車安全;在生物醫(yī)學(xué)工程方面,對肝臟CT圖像進(jìn)行分割,為臨床治療和病理學(xué)研究提供幫助。

圖像分割常用方法:

1.閥值分割:對圖像灰度值進(jìn)行度量,設(shè)置不同類別的閥值,達(dá)到分割的目的。

2.邊緣分割:對圖像邊緣進(jìn)行檢測,即檢測圖像中灰度值發(fā)生跳變的地方,則為一片區(qū)域的邊緣。

3.直方圖法:對圖像的顏色建立直方圖,二直方圖的波峰波谷能夠表示一塊區(qū)域的顏色值的范圍,來達(dá)到分割的目的。

4.特定理論:基于聚類分析、小波變換等理論完成圖像分割。

實例描述

目標(biāo):利用K-means聚類算法對圖像像素點顏色進(jìn)行聚類實現(xiàn)簡單的圖像分割

輸出:同一聚類中的點使用相同顏色標(biāo)記,不同聚類顏色不同

技術(shù)路線:sklearn.cluster.KMeans

實例數(shù)據(jù)


"Kmeans實例圖片分割"實例編寫

實驗過程

使用算法:Kmeans

實現(xiàn)步驟:

1.建立工程并導(dǎo)入sklearn包

2.加載圖片并進(jìn)行預(yù)處理

3.加載Kmeans聚類算法

4.對像素點進(jìn)行聚類并輸出

實現(xiàn)步驟---1.建立工程并導(dǎo)入sklearn包

創(chuàng)建kmeans.py文件

導(dǎo)入sklearn相關(guān)包

import? numpy as np

import? PIL.Image? as image? #加載PIL包,用于加載創(chuàng)建圖片

from?? sklearn.cluster? import? KMeans? #加載Kmeans算法

實現(xiàn)步驟---2.加載圖片并進(jìn)行預(yù)處理

實現(xiàn)步驟---3.加載Kmeans聚類算法

加載Kmeans聚類算法

km = KMeans(n_clusters=3)

其中n_clusters屬性指定了聚類中心的個數(shù)為3

實現(xiàn)步驟---4.對像素點進(jìn)行聚類并輸出

實驗分析

通過設(shè)置不同的k值,能夠得到不同的聚類結(jié)果。同時,k值的不確定也是kmeans算法的一個缺點。往往為了達(dá)到好的實驗結(jié)果,需要進(jìn)行多次嘗試才能夠選取最優(yōu)的k值。而像層次聚類的算法,就無需指定k值,只要給定限制條件,就能自動地得到類別數(shù)k。








???????????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內(nèi)容