數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)全套教學(xué)課件_第1頁
數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)全套教學(xué)課件_第2頁
數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)全套教學(xué)課件_第3頁
數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)全套教學(xué)課件_第4頁
數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)全套教學(xué)課件_第5頁
已閱讀5頁,還剩569頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)挖掘課程介紹課程介紹數(shù)據(jù)挖掘的歷史:數(shù)據(jù)分析歷史悠久,我們一直使用數(shù)據(jù)幫助我們每一次信息的爆炸增長會(huì)帶來巨大影響過往的數(shù)據(jù)如今的數(shù)據(jù)課程介紹數(shù)據(jù)挖掘課程:這是一門什么樣的的課程?——介紹數(shù)據(jù)分析方法在這門課我們需要解決什么樣的問題?我們要學(xué)習(xí)的工具課程目標(biāo)數(shù)據(jù)挖掘課程目標(biāo):數(shù)據(jù)挖掘的基本理論數(shù)據(jù)挖掘的實(shí)現(xiàn)過程常用的數(shù)據(jù)挖掘的算法基于python的數(shù)據(jù)挖掘使用數(shù)據(jù)挖掘方向的比賽企業(yè)級(jí)的數(shù)據(jù)挖掘應(yīng)用案例課程介紹教學(xué)計(jì)劃:32+32=64,理論+實(shí)踐為什么1:1課程地位專業(yè)方面:最重要的課程之一,承接著整個(gè)大數(shù)據(jù)專業(yè)我們學(xué)大數(shù)據(jù)是為了分析使用課程地位國家政策:《“十三五”國家信息化規(guī)劃》兩次提到大數(shù)據(jù)挖掘分析:大數(shù)據(jù)挖掘分析等關(guān)鍵技術(shù)和核心軟硬件上取得突破2017年的《政府工作報(bào)告》:一方面要加快培育新材料、人工智能、集成電路、生物制藥、第五代移動(dòng)通信等新興產(chǎn)業(yè),另一方面要應(yīng)用大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)等技術(shù)加快改造提

升傳統(tǒng)產(chǎn)業(yè),把發(fā)展智能制造作為主攻方向。數(shù)據(jù)挖掘技術(shù)背景行業(yè)發(fā)展:各大公司的基于機(jī)器學(xué)習(xí)的發(fā)展:谷歌,百度,阿里,騰訊,科大訊飛數(shù)據(jù)挖掘的課程要求先導(dǎo)知識(shí):有一定的統(tǒng)計(jì)學(xué)基礎(chǔ)有一定編程基礎(chǔ)有一定的自學(xué)能力數(shù)據(jù)挖掘的課程要求考核考勤和教材:平時(shí)成績+期末上機(jī)數(shù)據(jù)挖掘概念與技術(shù)數(shù)據(jù)挖掘?qū)д撜n程總體提綱和學(xué)時(shí)安排章次各章標(biāo)題名稱講授學(xué)時(shí)第一章數(shù)據(jù)挖掘概述3第二章pandas3第三章機(jī)器學(xué)習(xí)3第四章分類算法3第五章回歸算法4第六章聚類算法3第七章集成學(xué)習(xí)3第八章推薦算法3第九章圖像數(shù)據(jù)分析4第十章文本數(shù)據(jù)分析3第一章數(shù)據(jù)挖掘概論01數(shù)據(jù)時(shí)代02數(shù)據(jù)挖掘概念目錄03數(shù)據(jù)挖掘的案例04數(shù)據(jù)挖掘的應(yīng)用05習(xí)題1.1數(shù)據(jù)時(shí)代ONE

SECOND會(huì)有60張照片上傳到網(wǎng)絡(luò)ONE

MINUTE會(huì)有60小時(shí)視頻上傳到視頻網(wǎng)站youtubeONE

DAY在facebook有40億的信息擴(kuò)散每個(gè)智能手機(jī)用戶平均會(huì)安裝65個(gè)應(yīng)用有2940億封郵件發(fā)出,相當(dāng)于美國兩年的紙質(zhì)信件數(shù)量發(fā)出的社區(qū)帖子達(dá)200萬個(gè),相當(dāng)于《時(shí)代》雜志770年的文字量互聯(lián)網(wǎng)產(chǎn)生的全部內(nèi)容可以刻滿1.68億張DVD1.1數(shù)據(jù)時(shí)代馬云在2017年中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)的“機(jī)器智能”高峰對(duì)話會(huì)上演講在大數(shù)據(jù)時(shí)代,未來30年將重新定義“變革”。在大數(shù)據(jù)時(shí)代,人類獲得數(shù)據(jù)能力遠(yuǎn)遠(yuǎn)超過大家想象,我們對(duì)世界的認(rèn)識(shí)要提升到新的高度。1.1數(shù)據(jù)時(shí)代馬云在2017年中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)的“機(jī)器智能”高峰對(duì)話會(huì)上演講你們知道購買最大的內(nèi)衣罩杯的消費(fèi)者是在哪幾個(gè)省?我這兒都有。最小的是哪個(gè)???1.1數(shù)據(jù)時(shí)代數(shù)據(jù)挖掘發(fā)展的動(dòng)力——需要數(shù)據(jù)爆炸問題--數(shù)據(jù)采集工具和成熟的數(shù)據(jù)庫技術(shù)使得大量的數(shù)據(jù)被收集,存儲(chǔ)在數(shù)據(jù)庫數(shù)據(jù)倉庫或其他信息庫中以待分析。我們擁有豐富的數(shù)據(jù),但是缺乏有用的信息1.1數(shù)據(jù)時(shí)代數(shù)據(jù)挖掘的提出數(shù)大批成熟的業(yè)務(wù)信息系統(tǒng)投入運(yùn)行信息系統(tǒng)多年運(yùn)行,積累了海量的數(shù)據(jù)1.1數(shù)據(jù)時(shí)代數(shù)據(jù)挖掘的提出1.2數(shù)據(jù)挖掘概念什么是數(shù)據(jù)挖掘數(shù)據(jù)挖掘是從數(shù)據(jù)中,發(fā)現(xiàn)其有用的信息,從而幫助我們做出決策(廣義角度)1.2數(shù)據(jù)挖掘概念什么是數(shù)據(jù)挖掘數(shù)據(jù)挖掘是從大量的、不完全的、有噪聲的、模糊的、隨機(jī)的實(shí)際應(yīng)用數(shù)據(jù)中,提取隱含在其中的、人們事先不知道的、但又是潛在有用的信息和知識(shí),尋找其規(guī)律的技術(shù),結(jié)合統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)和人工智能技術(shù)的綜合的過程(技術(shù)角度)1.2數(shù)據(jù)挖掘概念數(shù)據(jù)挖掘技術(shù)統(tǒng)計(jì)學(xué)機(jī)器學(xué)習(xí)統(tǒng)計(jì)學(xué)是關(guān)于認(rèn)識(shí)客觀現(xiàn)象總體數(shù)量特征和數(shù)量關(guān)系的科學(xué)。它是通過搜集、整理、分析統(tǒng)計(jì)資料,認(rèn)識(shí)客觀現(xiàn)象數(shù)量規(guī)律性的方法論科學(xué)。1.2數(shù)據(jù)挖掘概念機(jī)器學(xué)習(xí)人工智能棋手alphago先后戰(zhàn)勝了兩位頂尖圍棋高手九段李世乭以總比分1:4落敗和九段棋手柯潔0:3落敗AlphaGo

FanAlphaGo

LeeAlphaGo

MasterAlphaGo

Zero1.2數(shù)據(jù)挖掘概念數(shù)據(jù)挖掘要做什么數(shù)據(jù)挖掘的兩大基本目標(biāo)是預(yù)測和描述數(shù)據(jù)其中預(yù)測的計(jì)算機(jī)建模及實(shí)現(xiàn)過程通常被稱為:監(jiān)督學(xué)習(xí)(supervised

learning):從標(biāo)記的訓(xùn)練數(shù)據(jù)來推斷一個(gè)功能的機(jī)器學(xué)習(xí)任務(wù)。1.2數(shù)據(jù)挖掘概念數(shù)據(jù)挖掘要做什么數(shù)據(jù)挖掘的兩大基本目標(biāo)是預(yù)測和描述數(shù)據(jù)描述的則通常被稱為:無監(jiān)督學(xué)習(xí)(unsupervised

learning):根據(jù)類別未知

(沒有被標(biāo)記)的訓(xùn)練樣本解決模式識(shí)別中的各種問題。往更細(xì)分,數(shù)據(jù)挖掘的目標(biāo)可以劃分為以下這些:1.2數(shù)據(jù)挖掘概念數(shù)據(jù)挖掘要做什么數(shù)據(jù)挖掘的兩大基本目標(biāo)是預(yù)測和描述數(shù)據(jù)1.2數(shù)據(jù)挖掘概念預(yù)測與描述監(jiān)督學(xué)習(xí)主要包括:分類-將樣本劃分到幾個(gè)預(yù)定義類之一回歸-將樣本映射到一個(gè)真實(shí)值預(yù)測變量上無監(jiān)督學(xué)習(xí)主要包括:聚類-將樣本劃分為不同類(無預(yù)定義類)關(guān)聯(lián)規(guī)則發(fā)現(xiàn)-發(fā)現(xiàn)數(shù)據(jù)集中不同特征的相關(guān)性。1.3數(shù)據(jù)挖掘的案例例子垃圾電子郵件的分類思考:人是如何進(jìn)行分類的呢?1.3數(shù)據(jù)挖掘的案例例子股價(jià)走勢預(yù)測思考:你是如何進(jìn)行價(jià)格預(yù)測的呢?1.3數(shù)據(jù)挖掘的案例例子客戶群體的劃分,大數(shù)據(jù)殺熟思考:你是如何進(jìn)行區(qū)別對(duì)待的呢?1.3數(shù)據(jù)挖掘的案例例子推薦商品,JD思考:你有過銷售經(jīng)驗(yàn)嗎?1.4數(shù)據(jù)挖掘應(yīng)用數(shù)據(jù)挖掘的價(jià)值沃爾瑪基于每個(gè)月億萬的網(wǎng)絡(luò)購物數(shù)據(jù),并結(jié)合社交網(wǎng)絡(luò)上有關(guān)產(chǎn)品的評(píng)分,開發(fā)機(jī)器學(xué)習(xí)語義搜索引擎北極星,方便瀏覽,在線購物者因此增加10%-15%,增加銷售十多億美元1.4數(shù)據(jù)挖掘應(yīng)用數(shù)據(jù)挖掘的價(jià)值農(nóng)夫山泉用大數(shù)據(jù)賣礦泉水在強(qiáng)大的數(shù)據(jù)分析能力做支持后,農(nóng)夫山泉近年以30%-40%的年增長率,在飲用水方面快速超越了原先的三甲:娃哈哈、樂百氏和可口可樂。1.4數(shù)據(jù)挖掘應(yīng)用數(shù)據(jù)挖掘的價(jià)值百合網(wǎng)的大數(shù)據(jù)百合網(wǎng)提出的心靈匹配算法(可以看到兩個(gè)人心靈的契合程度)1.4數(shù)據(jù)挖掘應(yīng)用數(shù)據(jù)挖掘的其他應(yīng)用領(lǐng)域金融領(lǐng)域醫(yī)療領(lǐng)域交通領(lǐng)域地理信息領(lǐng)域1.5習(xí)題討論下列每項(xiàng)活動(dòng)是否是數(shù)據(jù)挖據(jù)任務(wù)。a)根據(jù)性別劃分公司的顧客。b)根據(jù)可贏利性劃分公司的顧客。

c)計(jì)算公司的總銷售額。d)按學(xué)生的標(biāo)識(shí)號(hào)對(duì)學(xué)生數(shù)據(jù)庫排序。

e)預(yù)測擲一對(duì)骰子的結(jié)果。f)使用歷史記錄預(yù)測某公司未來的股票價(jià)格。

g)監(jiān)視病人心率的異常變化。h)監(jiān)視地震活動(dòng)的地震波。

i)提取聲波的頻率1.5習(xí)題a否。這是一個(gè)簡單的數(shù)據(jù)查詢。b否。這是一種會(huì)計(jì)計(jì)算、應(yīng)用程序的門限值,然而預(yù)測盈利的新客戶將是一種數(shù)據(jù)挖掘。c否。一個(gè)簡單的數(shù)據(jù)查詢。d否。一個(gè)簡單的數(shù)據(jù)查詢。e否。既然是公正的,這是一種概率的計(jì)算。F是。我們可以通過建立模型預(yù)測未來的持續(xù)價(jià)值的股票價(jià)格。G是。我們將構(gòu)建一種類型為正常的心率和當(dāng)異常心率的行為發(fā)生時(shí)報(bào)警。這將涉及數(shù)據(jù)挖掘的領(lǐng)域被稱為異常檢測。這也可以看作是一種分類的問題,比如我們例子中正常和不正常兩種心率的行為。H是。在這種情況下,我們將構(gòu)建模型的不同類型的地震活動(dòng)。這一例子說明,在區(qū)域的數(shù)據(jù)挖掘已知分級(jí)。I否。這是信號(hào)處理。第二章Pandas目

錄Pandas快速入門Pandas案例分析01022.1Pandas快速入門統(tǒng)計(jì)學(xué)統(tǒng)計(jì)學(xué)是關(guān)于認(rèn)識(shí)客觀現(xiàn)象總體數(shù)量特征和數(shù)量關(guān)系的科學(xué)統(tǒng)計(jì)學(xué)的一個(gè)案例:子彈中的統(tǒng)計(jì)學(xué)2.1Pandas快速入門大數(shù)據(jù)與統(tǒng)計(jì)學(xué)回想剛才例子,統(tǒng)計(jì)需基于大量的數(shù)據(jù)進(jìn)行驗(yàn)證同樣的,數(shù)據(jù)也可以基于統(tǒng)計(jì)進(jìn)行分析2.1Pandas快速入門統(tǒng)計(jì)學(xué)在數(shù)據(jù)挖掘中的應(yīng)用文本統(tǒng)計(jì)與文學(xué)作品鑒真文本統(tǒng)計(jì)設(shè)計(jì)到的指標(biāo)詞頻率、平均句長、平均詞長2.1Pandas快速入門統(tǒng)計(jì)學(xué)常用指標(biāo)平均數(shù)百分比頻率倍數(shù)2.1Pandas快速入門統(tǒng)計(jì)分析常用模塊Pandas簡介官網(wǎng)鏈接:/簡介:Pandas是python的一個(gè)數(shù)據(jù)分析包,最初由AQRCapital

Management于2008年4月開發(fā),并于2009年底開源出來,目前由專注于Python數(shù)據(jù)包開發(fā)的PyData開發(fā)

team繼續(xù)開發(fā)和維護(hù),屬于PyData項(xiàng)目的一部分。Pandas最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來,因此,pandas為時(shí)間序列分析提供了很好的支持。2.1Pandas快速入門強(qiáng)大的Pandas基本功能開發(fā)pandas時(shí)提出的需求具備按軸自動(dòng)或顯式數(shù)據(jù)對(duì)齊功能的數(shù)據(jù)結(jié)構(gòu)集成時(shí)間序列功能既能處理時(shí)間序列數(shù)據(jù)也能處理非時(shí)間序列數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)2.1Pandas快速入門強(qiáng)大的Pandas基本功能數(shù)學(xué)運(yùn)算和約簡(比如對(duì)某個(gè)軸求和)可以根據(jù)不同的元數(shù)據(jù)(軸編號(hào))執(zhí)行靈活處理缺失數(shù)據(jù)合并及其他出現(xiàn)在常見數(shù)據(jù)庫(例如基于SQL的)中的關(guān)系型運(yùn)算2.1Pandas快速入門強(qiáng)大的Pandas數(shù)據(jù)結(jié)構(gòu)Series(一維)DataFrame(二維)Panel(三維)2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)SeriesSeries是一種類似于一維數(shù)組的對(duì)象,它由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成Series的字符串表現(xiàn)形式為:索引在左邊,值在右邊2.1Pandas快速入門三方面來了解Series創(chuàng)建讀寫運(yùn)算2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)Series的創(chuàng)建>>>ser1

=

Series(range(4))>>>ser2

=

Series(range(4),index

=

["a","b","c","d"])>>>sdata

=

{"Ohio":

35000,

"Texas":

71000,

"Oregon":16000,

"Utah":

5000}>>>ser3

=

Series(sdata)

注:傳遞的data是一個(gè)dict字典類型對(duì)象,并且傳遞了index參數(shù),那么對(duì)應(yīng)的值將從字典中取出。否則,index的值將由字典對(duì)象里的key值進(jìn)行構(gòu)造2.1Pandas快速入門Series的index和values>>>ser2.index>>>ser2.values>>>ser2[["a","c"]]2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)Series的讀寫下標(biāo)訪問和切片>>>a

=

pd.Series([11,

22,

33,

44,

55])>>>a[1:3]>>>a[1]=22.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)Series的運(yùn)算

Series間的計(jì)算>>>a

=

pd.Series([1,

2,

3,

4])>>>b

=

pd.Series([1,

2,

1,

2])>>>print(a

+

b)>>>print(a

*

2)>>>print(a

>=

3)>>>print(a[a

>=

3])2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)Series的運(yùn)算

Series函數(shù)的使用>>>a

=

pd.Series([1,

2,

3,

4,

5])平均值>>>print(a.mean())練習(xí):了解一下Series還有哪些函數(shù)吧2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)DataFrameDataFrame是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個(gè)索引)2.1Pandas快速入門幾方面來了解DataFrame創(chuàng)建索引apply方法算術(shù)運(yùn)算缺失值處理2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)DataFrame的創(chuàng)建二維的ndarray>>>import

pandas

as

pd>>>df1=pd.DataFrame(np.arange(9).reshape(3,3),columns=list("bcd"),index=["b","s","g"])2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)DataFrame的創(chuàng)建外部導(dǎo)入>>>import

pandas

as

pd>>>df

=

pd.read_csv("./data/titanic.csv")2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)DataFrame的創(chuàng)建字典導(dǎo)入>>>import

pandas

as

pd>>>data

=

{"country":["aaa","bbb","ccc"],"population":[10,12,14]}>>>df_data

=

pd.DataFrame(data)2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)DataFrame的創(chuàng)建使用Series導(dǎo)入>>>d

=

{"one"

:

pd.Series([1.,

2.,

3.],

index=["a",

"b",

"c"]),"two":

pd.Series([1.,

2.,

3.,

4.],

index=["a",

"b",

"c",

"d"])}>>>df

=

pd.DataFrame(d)>>>pd.DataFrame(d,

index=["d",

"b",

"a"])2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)DataFrame的創(chuàng)建2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)DataFrame的查看>>>df.head(6)>>>()>>>df.index>>>df.columns>>>df.dtypes>>>df.values2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)的索引對(duì)象pandas的索引對(duì)象負(fù)責(zé)管理軸標(biāo)簽和其他元數(shù)據(jù)(比如軸名稱等)。構(gòu)建Series或DataFrame時(shí),所用到的任何數(shù)組或其他序列的標(biāo)簽都可以被轉(zhuǎn)換成一個(gè)Index。指定索引>>>df

=

df.set_index("Name")2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)的索引對(duì)象pandas中主要的index對(duì)象2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)的索引對(duì)象Index的方法和屬性I2.1Pandas快速入門數(shù)據(jù)結(jié)構(gòu)的索引對(duì)象Index的方法和屬性II2.1Pandas快速入門索引操作loc用label來去定位,iloc用position來去定位>>>df.iloc[0:5,1:3]>>>df

=

df.set_index("Name")>>>df.loc["Heikkinen,

Miss.

Laina"]>>>df.loc["Heikkinen,

Miss.

Laina":"Allen,

Mr.

William

Henry"]2.1Pandas快速入門重新索引創(chuàng)建一個(gè)適應(yīng)新索引的新對(duì)象,該Series的reindex將會(huì)根據(jù)新索引進(jìn)行重排。如果某個(gè)索引值當(dāng)前不存在,就引入缺失值2.1Pandas快速入門重新索引reindex函數(shù)的參數(shù)2.1Pandas快速入門重新索引

reindex操作>>>s1

=

pd.Series(["a","b","c","d","e"],index=[2,1,3,5,4])>>>s2

=

s1.reindex([1,2,3,4,5,6],fill_value=0)>>>s3

=

s2.reindex(range(10),method="bfill")2.1Pandas快速入門groupby操作>>>df

=

pd.DataFrame({"key":["A","B","C","A","B","C","A","B","C"],"data":[0,5,10,5,10,15,10,15,20]})>>>df.groupby("key").sum()>>>df

=

pd.read_csv("./data/titanic.csv")>>>df.groupby("Sex")["Age"].mean()2.1Pandas快速入門函數(shù)應(yīng)用和映射DataFrame的apply方法(index)對(duì)象的applymap方法(因?yàn)镾eries有一個(gè)應(yīng)用于元素級(jí)的

map方法)2.1Pandas快速入門DataFrame的apply方法>>>def

plus(df,n):>>>

df["c"]

=

(df["a"]+df["b"])>>>

df["d"]

=

(df["a"]+df["b"])

*

n>>>

return

df>>>list1

=

[[1,3],[7,8],[4,5]]>>>df1

=

pd.DataFrame(list1,columns=["a","b"])>>>df1

=

df1.apply(plus,axis=1,args=(2,))>>>print(df1)2.1Pandas快速入門DataFrame的applymap方法對(duì)象的applymap方法(因?yàn)镾eries有一個(gè)應(yīng)用于元素級(jí)的map方法)apply對(duì)一個(gè)列進(jìn)行整體運(yùn)算applymap對(duì)一個(gè)DataFrame中的每個(gè)元素進(jìn)行轉(zhuǎn)換map對(duì)一個(gè)Series中的每個(gè)元素進(jìn)行轉(zhuǎn)換2.1Pandas快速入門排序和排名對(duì)行或列索引進(jìn)行排序?qū)τ贒ataFrame,根據(jù)任意一個(gè)軸上的索引進(jìn)行排序可以指定升序降序按值排序?qū)τ贒ataFrame,可以指定按值排序的列rank函數(shù)2.1Pandas快速入門排序和排名>>>df

=

pd.DataFrame([1,

2,

3,

4,

5],

index=[10,

52,

24,158,

112],

columns=["S"])>>>df.sort_index(inplace=True)對(duì)于DataFrame,可以指定按值排序的列>>>frame

=

pd.DataFrame({"b":[4,

7,

-3,

2],

"a":[0,

1,

0,

1]})>>>frame.sort_values(by="b")2.1Pandas快速入門算術(shù)運(yùn)算對(duì)不同的索引對(duì)象進(jìn)行算術(shù)運(yùn)算對(duì)齊操作會(huì)同時(shí)發(fā)生在行和列上,把2個(gè)對(duì)象相加會(huì)得到一個(gè)新的對(duì)象,其索引為原來2個(gè)對(duì)象的索引的并集:>>>df1

=pd.DataFrame(np.arange(9).reshape(3,3),columns=list("bcd"),index=["b","s","g"])2.1Pandas快速入門算術(shù)運(yùn)算>>>df2

=pd.DataFrame(np.arange(12).reshape(4,3),columns=list("cde"),index=["b","s","g","t"])>>>df1+df2>>>df3

=

df1.add(df2,fill_value="0")2.1Pandas快速入門匯總和計(jì)算描述統(tǒng)計(jì)常用描述和匯總統(tǒng)計(jì)函數(shù)2.1Pandas快速入門匯總和計(jì)算描述統(tǒng)計(jì)唯一值以及成員資格2.1Pandas快速入門缺失數(shù)據(jù)處理NaN(Not

a

Number)表示浮點(diǎn)數(shù)和非浮點(diǎn)數(shù)組中的缺失數(shù)據(jù)None也被當(dāng)作NAN處理2.1Pandas快速入門處理缺失數(shù)據(jù)濾除缺失數(shù)據(jù)方法dropna()drop()how參數(shù)控制行為,axis參數(shù)選擇軸,thresh參數(shù)控制留下的數(shù)量2.1Pandas快速入門處理缺失數(shù)據(jù)濾除缺失數(shù)據(jù)>>>ser

=

pd.Series([4.5,7.2,-5.3,3.6],

index=["d","b","a","c"])>>>ser.drop("c")>>>from

numpy

import

NaN>>>se1=pd.Series([4,NaN,8,NaN,5])>>>se1.dropna()>>>se1[se1.notnull()]2.1Pandas快速入門處理缺失數(shù)據(jù)濾除缺失數(shù)據(jù)>>>df

=

DataFrame(np.arange(9).reshape(3,3),

index=["a","c","d"],columns=["oh","te","ca"])>>>df.drop("a")>>>df.drop(["oh","te"],axis=1)>>>df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])>>>df1.dropna()>>>df1.dropna(how="all")2.1Pandas快速入門處理缺失數(shù)據(jù)填充缺失數(shù)據(jù)fillnainplace參數(shù)控制返回新對(duì)象還是就地修改2.1Pandas快速入門處理缺失數(shù)據(jù)填充缺失數(shù)據(jù)>>>from

numpy

import

nan

as

NaN>>>df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],[NaN,NaN,NaN],[8,8,NaN]])>>>df1.fillna(100)>>>df1.fillna({0:10,1:20,2:30})傳入inplace=True直接修改原對(duì)象>>>df1.fillna(0,inplace=True)2.1Pandas快速入門處理缺失數(shù)據(jù)填充缺失數(shù)據(jù)>>>df2=pd.DataFrame(np.random.randint(0,10,(5,5)))>>>df2.iloc[1:4,3]=NaN>>>df2.iloc[2:4,4]=NaN>>>df2.fillna(method="ffill")#用前面的值來填充>>>df2.fillna(method="bfill",limit=2)#傳入limit=”“限制填充個(gè)數(shù):>>>df2.fillna(method="ffill",limit=1,axis=1)#傳入axis=”“修改填充方向:2.2Pandas案例分析自行車數(shù)據(jù)分析假設(shè)我們現(xiàn)在有些自行車行駛數(shù)據(jù),看看我們能Pandas分析出一些什么吧。2.2Pandas案例分析自行車數(shù)據(jù)分析

#導(dǎo)入Pandas>>>import

pandas

as

pd#準(zhǔn)備畫圖環(huán)境>>>import

matplotlib.pyplot

as

plt>>>pd.set_option("display.mpl_style",

"default")>>>plt.rcParams["figure.figsize"]

=

(15,

5)2.2Pandas案例分析自行車數(shù)據(jù)分析使用read_csv函數(shù)讀取csv文件讀取一組自行車騎行數(shù)據(jù),得到一個(gè)DataFrame對(duì)象2.2Pandas案例分析自行車數(shù)據(jù)分析#使用latin1編碼讀入,默認(rèn)的utf-8編碼不適合>>>broken_df=pd.read_csv("bikes.csv",encoding="latin1")#查看表格的前三行>>>broken_df[:3]#查看原始文件的前五行

head-n

5

bikes.csv2.2Pandas案例分析行車數(shù)據(jù)分析修復(fù)讀入問題使用;作為分隔符解析Date列(首列)的日期文本設(shè)置日期文本格式,使用日期列作為索引2.2Pandas案例分析行車數(shù)據(jù)分析>>>fixed_df

=

pd.read_csv("bikes.csv",

encoding="latin1",sep=";",

parse_dates=["Date"],dayfirst=True,

index_col="Date")2.2Pandas案例分析行車數(shù)據(jù)分析每列對(duì)應(yīng)一條自行車道,每行對(duì)應(yīng)一天的數(shù)據(jù)從DataFrame中選擇一列讀取csv文件所得結(jié)果是一個(gè)DataFrame對(duì)象DataFrame對(duì)象以表格方式存儲(chǔ)數(shù)據(jù)使用類似于字典(dict)訪問的語法,選擇其中的一列>>>fixed_df["Berri

1"]2.2Pandas案例分析行車數(shù)據(jù)分析將所選擇的列繪成圖,可以直觀地看出騎行人數(shù)的變化趨勢。>>>fixed_df["Berri

1"].plot()2.2Pandas案例分析行車數(shù)據(jù)分析繪制所有的列(自行車道),可以看到,每條車道的變化趨勢都是類似的。>>>fixed_df.plot(figsize=(15,

10))2.2Pandas案例分析行車數(shù)據(jù)分析我很好奇我們是一個(gè)更通勤的城市還是騎自行車去娛樂城——人們是在周末還是在平日騎自行車?2.2Pandas案例分析行車數(shù)據(jù)分析在我們的數(shù)據(jù)結(jié)構(gòu)dataframe中添加一個(gè)“工作日”列,下一步,我們查看貝里自行車路徑數(shù)據(jù)。貝里是蒙特利爾的一條街道,一條非常重要的自行車道。因此,我們將創(chuàng)建一個(gè)數(shù)據(jù)框只考慮ka貝里BiKePath。>>>berri_bikes

=

fixed_df[["Berri

1"]].copy()>>>berri_bikes[:5]2.2Pandas案例分析行車數(shù)據(jù)分析接下來,我們需要添加一個(gè)“工作日”列。首先,我們可以從索引中獲得工作日。我們還沒有談到索引,但是索引是在上面的數(shù)據(jù)框的左邊,在“日期”下。基本上是一年中的所有日子。>>>berri_bikes.index2.2Pandas案例分析行車數(shù)據(jù)分析我們可以看到實(shí)際上數(shù)據(jù)是不完整的,通過length數(shù)據(jù)可以發(fā)現(xiàn),一年只有310天。為什么呢?Pandas時(shí)間序列功能非常的強(qiáng)大,所以如果我們想得到所有數(shù)據(jù)的月日,我們可以輸入以下語句。>>>berri_bikes.index.day2.2Pandas案例分析行車數(shù)據(jù)分析為普通日進(jìn)行索引設(shè)置:>>>berri_bikes.index.weekday2.2Pandas案例分析行車數(shù)據(jù)分析通過上面的語句,這我們獲得了一周中的單位日,我們通過與日歷進(jìn)行對(duì)比會(huì)發(fā)現(xiàn)數(shù)據(jù)中的0代表的是星期一。我們現(xiàn)在已經(jīng)知道如何設(shè)置普通日進(jìn)行索引了,我們接下來需要做的是把普通日的索引設(shè)置為dataframe中的一列:>>>berri_bikes.loc[:,"weekday"]

=

berri_bikes.index.weekday>>>berri_bikes[:5]2.2Pandas案例分析行車數(shù)據(jù)分析接下來我們就可以把普通日作為一個(gè)統(tǒng)計(jì)日進(jìn)行騎行人數(shù)的統(tǒng)計(jì)了,而這在Pandas中實(shí)現(xiàn)也非常簡單,Dataframes中存在一個(gè)

groupby()方法,而實(shí)現(xiàn)的語句是,weekday_counts=

berri_bikes.groupby("weekday").aggregate(sum),語句的目的是把Berri車道數(shù)據(jù)按照相同普通日的標(biāo)準(zhǔn)進(jìn)行分組并累加。2.2Pandas案例分析行車數(shù)據(jù)分析>>>weekday_counts

=berri_bikes.groupby("weekday").aggregate(sum)>>>weekday_counts2.2Pandas案例分析行車數(shù)據(jù)分析這時(shí)候我們會(huì)發(fā)現(xiàn)通過0,1,2,3,4,5,6這樣的數(shù)字很難記住其相對(duì)應(yīng)的日子,我們可以通過以下方法修改:>>>weekday_counts.index

=

["Monday",

"Tuesday","Wednesday",

"Thursday",

"Friday",

"Saturday",

"Sunday"]>>>weekday_counts2.2Pandas案例分析行車數(shù)據(jù)分析通過直方圖看看統(tǒng)計(jì)情況:>>>weekday_counts.plot(kind="bar")通過結(jié)果我們發(fā)現(xiàn)Montrealers似乎是一個(gè)喜歡使用自行車作為通勤工具的城市--人們在工作日也大量的使用自行車。第三章數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)目

錄機(jī)器學(xué)習(xí)概述機(jī)器學(xué)習(xí)的框架模型的評(píng)判過擬合問題01020304數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)無處不在百度搜索微信朋友圈,微博的相片分類功能數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)通過例子來體會(huì)一下機(jī)器學(xué)習(xí)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)通過例子來體會(huì)一下機(jī)器學(xué)習(xí)數(shù)據(jù)從何而來數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)通過例子來體會(huì)一下機(jī)器學(xué)習(xí)實(shí)現(xiàn)補(bǔ)全數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)什么是機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)的英文名稱叫Machine

Learning,簡稱ML,該領(lǐng)域主要研究的是如何使計(jì)算機(jī)能夠模擬人類的學(xué)習(xí)行為從而獲得新的知識(shí)。簡單來說,機(jī)器學(xué)習(xí)就是讓計(jì)算機(jī)從大量的數(shù)據(jù)中學(xué)習(xí)到相關(guān)的規(guī)律和邏輯,然后利用學(xué)習(xí)來的規(guī)律來預(yù)測以后的未知事物數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)如何學(xué)習(xí)?思考人類學(xué)習(xí)過程我們是否能將人類學(xué)習(xí)過程應(yīng)用于機(jī)器呢?實(shí)際上我們已經(jīng)這么做了數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)人類學(xué)習(xí)的步驟選擇知識(shí)選擇學(xué)習(xí)方法學(xué)習(xí)或記憶運(yùn)用評(píng)測學(xué)習(xí)效果知識(shí)保存腦海中數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)學(xué)習(xí)的步驟數(shù)據(jù)的加載(第一步)選擇模型(第二步)模型的訓(xùn)練(第三步)模型的預(yù)測(第四步)模型的評(píng)測(第五步)模型的保存(第六步)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)傳統(tǒng)的程序模型與機(jī)器學(xué)習(xí)模型思考傳統(tǒng)的程序模型的不足傳統(tǒng)計(jì)算機(jī)程序模型:數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)傳統(tǒng)的程序模型與機(jī)器學(xué)習(xí)模型機(jī)器學(xué)習(xí)模型:數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)庫sklearnsklearn是機(jī)器學(xué)習(xí)中一個(gè)常用的python第三方模塊,網(wǎng)址:http://scikit-/stable/index.html里面對(duì)一些常用的機(jī)器學(xué)習(xí)方法進(jìn)行了封裝,不需要都實(shí)現(xiàn)所有的算法,只需要簡單的調(diào)用sklearn里的模塊就可以實(shí)現(xiàn)機(jī)器學(xué)習(xí)任務(wù)。行業(yè)占有率大,spark等采用相同框架數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)sklearn庫的框架train_x,

train_y,

test_x,

test_y

=

getData()model1

=

somemodel()model.fit(train_x,train_y)predictions

=

model.predict(test_x)score

=score_function(test_y,

predictions)joblib.dump(knn,

"filename.pkl")數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第一步使用sklearn導(dǎo)入數(shù)據(jù)模塊自帶數(shù)據(jù)集,參考

/cn/0.19.0/datasets/in

dex.html#datasets了解sklearn自帶的數(shù)據(jù)集有那些,數(shù)據(jù)集有哪些屬性數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第一步使用sklearn導(dǎo)入數(shù)據(jù)#導(dǎo)入數(shù)據(jù)集模塊>>>from

sklearn

import

datasets#分別加載iris和digits數(shù)據(jù)集>>>

iris

=

datasets.load_iris()>>>

digits

=

datasets.load_digits()數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第一步使用sklearn導(dǎo)入數(shù)據(jù)#使用.data()和.target()方法熟悉導(dǎo)入的數(shù)據(jù)結(jié)構(gòu)>>>

print(iris.data)>>>

print(iris.target)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)使用sklearn分割數(shù)據(jù)機(jī)器學(xué)習(xí)是從數(shù)據(jù)的屬性中學(xué)習(xí)經(jīng)驗(yàn),并將它們應(yīng)用到新數(shù)據(jù)的過程。這就是為什么機(jī)器學(xué)習(xí)中評(píng)估算法的普遍實(shí)踐是把數(shù)據(jù)分割成訓(xùn)練集(我們從中學(xué)習(xí)數(shù)據(jù)的屬性)和測試集(我們測試這些性質(zhì))數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)使用sklearn分割數(shù)據(jù)測試的數(shù)據(jù)從何而來:數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)使用sklearn分割數(shù)據(jù)>>>

from

sklearn.model_selection

importtrain_test_split>>>X_train,X_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.4,random_state=0)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第二步使用sklearn模型的選擇學(xué)會(huì)加載模型,對(duì)于不同類型的數(shù)據(jù)選擇不同的方法(既模型)進(jìn)行學(xué)習(xí),關(guān)于各種不同的機(jī)器學(xué)習(xí)模型區(qū)別,我們會(huì)在下一章節(jié)討論數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第二步使用sklearn模型的選擇>>>from

sklearn

import

svm>>>svc

=

svm.SVC()數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第三步使用sklearn模型的訓(xùn)練訓(xùn)練:我們使用scikit-learn模塊實(shí)現(xiàn)機(jī)器學(xué)習(xí)訓(xùn)練,此處我們利用了訓(xùn)練數(shù)據(jù)集訓(xùn)練了“transformer”模型,向fit()方法提供輸入訓(xùn)練數(shù)據(jù)集后即可訓(xùn)練模型數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第三步使用sklearn模型的訓(xùn)練>>>svc.fit(X_train,

y_train)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第四步使用sklearn進(jìn)行模型的預(yù)測預(yù)測:預(yù)測既使用模型來預(yù)測未知的數(shù)據(jù),上一步中我們的模型訓(xùn)練完成,我們就可以使用我們的模型進(jìn)行預(yù)測了,快看看效果如何吧數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第四步使用sklearn進(jìn)行模型預(yù)測>>>print(svc.predict([[5.84,4.4,6.9,2.5]]))數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測的指標(biāo)通常從算法類型選擇指標(biāo):分類指標(biāo)回歸指標(biāo)聚類指標(biāo)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測的指標(biāo)分類常用的指標(biāo):準(zhǔn)確率(accuracy):對(duì)于給定的測試數(shù)據(jù)集,分類器正確分類的樣本數(shù)與總樣本數(shù)之比AUC數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測的指標(biāo)回歸常用的指標(biāo):均方誤差(mean_squared_error):是反映估計(jì)量與被估計(jì)量之間差異程度的一種度量方均根差RMSE(Root

Mean

Square

Error)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測的指標(biāo)機(jī)器學(xué)習(xí)庫sklearn中,我們使用metrics方法實(shí)現(xiàn):>>>

import

numpy

as

np>>>

from

sklearn.metrics

import

accuracy_score>>>

y_pred

=

[0,

2,

1,

3]>>>

y_true

=

[0,

1,

2,

3]>>>

accuracy_score(y_true,

y_pred)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測方法:交叉驗(yàn)證(Cross

validation)為什么要使用交叉驗(yàn)證?將原始數(shù)據(jù)分成K個(gè)子集(一般是均分),將每個(gè)子集數(shù)據(jù)分別做一次測試集(testing

test),其余的K-1組子集數(shù)據(jù)作為訓(xùn)練集(trainning

test),這樣會(huì)得到K個(gè)模型,用這K個(gè)模型最終的驗(yàn)證集的分類指標(biāo)的平均數(shù)作為此K-CV下分類器的性能指標(biāo)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測方法:交叉驗(yàn)證(Cross

validation)K一般大于等于2,實(shí)際操作時(shí)一般從3開始取。交叉驗(yàn)證重復(fù)k次,每次選擇一個(gè)子集作為測試集,并將k次的平均交叉驗(yàn)證識(shí)別正確率作為結(jié)果。優(yōu)點(diǎn):所有的樣本都被作為了訓(xùn)練集和測試集,每個(gè)樣本都被驗(yàn)證一次。10-folder通常被使用。數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測方法:交叉驗(yàn)證(Cross

validation)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第五步機(jī)器學(xué)習(xí)評(píng)測方法:交叉驗(yàn)證(Cross

validation)機(jī)器學(xué)習(xí)庫sklearn中,我們使用cross_val_score方法實(shí)現(xiàn):>>>from

sklearn.model_selection

importcross_val_score>>>scores

=

cross_val_score(knn,

iris.data,iris.target,

cv=5)了解scoring參數(shù)及

/cn/0.19.0/modules/mo

del_evaluation.html#scoring-parameter數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第六步機(jī)器學(xué)習(xí):模型的保存這時(shí)候我們訓(xùn)練完成一個(gè)完美的模型,我們是那么喜歡這個(gè)模型,讓我們保存它,以后他就可以長時(shí)間存在啦數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)第六步機(jī)器學(xué)習(xí):模型的保存機(jī)器學(xué)習(xí)庫sklearn中,我們使用joblib方法實(shí)現(xiàn):>>>from

sklearn.externals

import

joblib>>>joblib.dump(knn,

"filename.pkl")>>>knn1=joblib.load("filename.pkl")#測試讀取后的Model>>>print(knn1.score(X_test,

y_test))數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)復(fù)習(xí):機(jī)器學(xué)習(xí)框架數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)存在的問題過擬合過擬合是指為了得到一致假設(shè)而使假設(shè)變得過度嚴(yán)格。避免過擬合是機(jī)器學(xué)習(xí)設(shè)計(jì)中的一個(gè)核心任務(wù)。數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)擬合問題的原因1.使用的模型比較復(fù)雜,學(xué)習(xí)能力過強(qiáng)2.有噪聲存在3.數(shù)據(jù)量有限過擬合:做的太過好以至于偏離了原本,泛化能力差欠擬合:泛化能力強(qiáng),但過于泛化數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)擬合問題的解決尋找參數(shù)的最優(yōu):超參數(shù)優(yōu)化器使用sklearn中的學(xué)習(xí)曲線數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)擬合問題的解決尋找參數(shù)的最優(yōu):超參數(shù)優(yōu)化器數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)擬合問題的解決>>>train_loss,test_loss=validation_curve(SVC(),X,y,param_name="gamma",param_range=param_range,cv=10,

scoring="mean_squared_error")>>>train_loss_mean=-np.mean(train_loss,axis=1)>>>test_loss_mean=-np.mean(test_loss,axis=1)數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)擬合問題的解決第四章分類算法目

錄分類算法概述概率模型樸素貝葉斯算法向量空間模型01020304目

錄K鄰近分類器0506多問題的分類分類算法的概述0

1引言機(jī)器學(xué)習(xí)算法的最普通類型是什么監(jiān)督學(xué)習(xí)算法-就是我們教計(jì)算機(jī)如何做事情無監(jiān)督學(xué)習(xí)算法-在非監(jiān)督學(xué)習(xí)中,我們將讓計(jì)算機(jī)自己學(xué)習(xí)引言監(jiān)督學(xué)習(xí)可分為分類回歸引言監(jiān)督學(xué)習(xí)可分為兩類什么樣的數(shù)據(jù)適合分類算法?考慮案例中的數(shù)據(jù)類型查看sklearn中數(shù)據(jù)集的數(shù)據(jù)結(jié)構(gòu)回顧第3章介紹的鳶尾花卉數(shù)據(jù)集呢?“教”是什么意思?一個(gè)關(guān)于分類學(xué)習(xí)的例子我們來看一個(gè)問題當(dāng)我們獲得一些關(guān)于腫瘤的醫(yī)療數(shù)據(jù),我們怎么讓機(jī)器判斷腫瘤是良性的還是惡性的呢?引言引言引言例子實(shí)現(xiàn)了什么?指我們給算法一個(gè)數(shù)據(jù)集,并且給定正確答案在分類學(xué)習(xí)中,數(shù)據(jù)集中的每個(gè)數(shù)據(jù),算法都知道數(shù)據(jù)的“正確答案”算法將算出更多新的結(jié)果如瘤是惡性的還是良性的引言引言分類方法的定義分類分析的是根據(jù)已知類別的訓(xùn)練集數(shù)據(jù),建立分類模型,并利用該分類模型預(yù)測未知類別數(shù)據(jù)對(duì)象所屬的類別。引言分類方法的應(yīng)用模式識(shí)別(Pattern

Recognition),就是通過計(jì)算機(jī)用數(shù)學(xué)技術(shù)方法來研究模式的自動(dòng)處理和判讀。模式識(shí)別的目標(biāo)往往是識(shí)別,即分析出待測試的樣本所屬的模式類別引言分類方法的應(yīng)用預(yù)測,從利用歷史數(shù)據(jù)記錄中自動(dòng)推導(dǎo)出對(duì)給定數(shù)據(jù)的推廣描述,從而能對(duì)未來數(shù)據(jù)進(jìn)行類預(yù)測現(xiàn)實(shí)應(yīng)用案例用行為分析物品識(shí)別、圖像檢測電子郵件的分類(垃圾郵件和非垃圾郵件等)新聞稿件的分類、手寫數(shù)字識(shí)別、個(gè)性化營銷中的客戶群分類、圖像/視頻的場景分類等引言引言分類器分類的實(shí)現(xiàn)方法是創(chuàng)建一個(gè)分類器(分類函數(shù)或模型),該分類器能把待分類的數(shù)據(jù)映射到給定的類別中。創(chuàng)建分類的過程與機(jī)器學(xué)習(xí)的一般過程一致引言分類器的構(gòu)建回顧構(gòu)建一個(gè)機(jī)器學(xué)習(xí)框架的基本步驟:(1)數(shù)據(jù)的加載。(2)選擇模型。(3)模型的訓(xùn)練。(4)模型的預(yù)測。(5)模型的評(píng)測。(6)模型的保存。引言訓(xùn)練數(shù)據(jù)集分類算法IF

rank

=

‘professor’OR

years

>

6THEN

tenured

=

‘yes’分類規(guī)則分類器的構(gòu)建圖示引言分類規(guī)則測試集未知數(shù)據(jù)(Jeff,

Professor,

4)Tenured?分類器的構(gòu)建圖示引言分類器的構(gòu)建標(biāo)準(zhǔn)使用下列標(biāo)準(zhǔn)比較分類和預(yù)測方法預(yù)測的準(zhǔn)確率:模型正確預(yù)測新數(shù)據(jù)的類編號(hào)的能力速度:產(chǎn)生和使用模型的計(jì)算花銷健壯性:給定噪聲數(shù)據(jù)或有空缺值的數(shù)據(jù),模型正確預(yù)測的能力可伸縮性:對(duì)大量數(shù)據(jù),有效的構(gòu)建模型的能力可解釋性:學(xué)習(xí)模型提供的理解和洞察的層次biao概率模型貝葉斯簡介貝葉斯(約1701-1761),英國數(shù)學(xué)家貝葉斯方法源于他生前解決逆概的一篇文章概率模型貝葉斯要解決的問題使正向概率:假設(shè)袋子里有N個(gè)白球,M個(gè)黑球,隨機(jī)摸一個(gè),摸出黑球的概率有多大逆向概率:如果事先不知道袋子里黑白球的比例,隨機(jī)摸出幾個(gè)球,根據(jù)這些球的顏色,可以推測袋子里面的黑白球比例概率模型一個(gè)例子概率模型一個(gè)例子男生總是穿長褲,女生則一半穿長褲一半穿裙子正向概率:隨機(jī)選取一個(gè)學(xué)生,穿長褲的概率和穿裙子的概率是多大逆向概率:迎面走來一個(gè)穿長褲的學(xué)生,無法確定該學(xué)生的性別,請(qǐng)問該學(xué)生是女生的概率有多大概率模型一個(gè)例子假設(shè)學(xué)校里面人的總數(shù)是U穿長褲的男生:U*P(Boy)*P(Pants|Boy) P(Boy)是男生的概率=60%P(Pants|Boy)是條件概率,即在Boy的條件下,穿長褲的概率是多大,這里是100%穿長褲的女生:U*P(Girl)*P(Pants|Girl)概率模型一個(gè)例子求解:穿長褲的總數(shù):U*P(Boy)*P(Pants|Boy)+U*P(Girl)*P(Pants|Girl)穿長褲的人為女生的概率:

P(Girl|Pants)=U*P(Girl)*P(Pants|Girl)/穿長褲的總數(shù)=U*P(Girl)*P(Pants|Girl)/[U*P(Boy)*P(Pants|Boy)+U*P(Girl)*P(Pants|Girl)]概率模型一個(gè)例子與總?cè)藬?shù)有關(guān)嗎?分子分母均包含總?cè)藬?shù),結(jié)果與總?cè)藬?shù)無關(guān),可以消去P(Girl|Pants)=P(Girl)*P(Pants|Girl)/[P(Boy)*P(Pants|Boy)+P(Girl)*P(Pants|Girl)]分母就是P(Pants)概率模型貝葉斯公式樸素貝葉斯樸素貝葉斯分類器我們介紹的第一個(gè)分類學(xué)習(xí)方法是樸素貝葉斯(

NaiveBayes)模型,它是一種基于概率的學(xué)習(xí)方法“樸素”指的是條件的獨(dú)立性我們一起通過一個(gè)例子來了解一下樸素貝葉斯分類算法樸素貝葉斯樸素貝葉斯案例現(xiàn)在給我們的問題是,如果一對(duì)男女朋友,男生想女生求婚,男生的四個(gè)特點(diǎn)分別是不帥,性格不好,身高矮,不上進(jìn),請(qǐng)你判斷一下女生是嫁還是不嫁?樸素貝葉斯算法樸素貝葉斯案例樸素貝葉斯算法樸素貝葉斯案例這是一個(gè)典型的分類問題數(shù)學(xué)問題就是比較p(嫁|(不帥、性格不好、身高矮、不上進(jìn)))與p(不嫁|(不帥、性格不好、身高矮、不上進(jìn)))樸素貝葉斯算法樸素貝葉斯案例聯(lián)系到我們的樸素貝葉斯公式:樸素貝葉斯算法樸素貝葉斯案例求p(嫁|(不帥、性格不好、身高矮、不上進(jìn)),這是我們不知道的,但是通過樸素貝葉斯公式可以轉(zhuǎn)化為好求的三個(gè)量p(不帥、性格不好、身高矮、不上進(jìn)|嫁)、p(不帥、性格不好、身高矮、不上進(jìn))、p(嫁)樸素貝葉斯算法樸素貝葉斯案例其中p(不帥、性格不好、身高矮、不上進(jìn)|嫁)=p(不帥|嫁)*p(性格不好|嫁)*p(身高矮|嫁)*p(不上進(jìn)|嫁)那么我就要分別統(tǒng)計(jì)后面幾個(gè)概率,也就得到了左邊的概率!樸素貝葉斯算法樸素貝葉斯案例我們將上面公式整理一下如下:樸素貝葉斯算法樸素貝葉斯案例下面我將一個(gè)一個(gè)的進(jìn)行統(tǒng)計(jì)計(jì)算(在數(shù)據(jù)量很大的時(shí)候,中心極限定理,頻率是等于概率的)p(嫁)=?首先我們整理訓(xùn)練數(shù)據(jù)中,嫁的樣本數(shù)如下:則p(嫁)=6/12(總樣本數(shù))=1/2樸素貝葉斯算法則p(嫁)=6/12(總樣本數(shù))=1/2樸素貝葉斯案例樸素貝葉斯算法則p(不帥|嫁)=3/6=1/2在嫁的條件下,看不帥有多少樸素貝葉斯案例p(不帥|嫁)=?統(tǒng)計(jì)滿足樣本數(shù)如下:樸素貝葉斯算法樸素貝葉斯案例求出其他統(tǒng)計(jì)量的概論代入=

(1/2*1/6*1/6*1/6*1/2)/(1/3*1/3*7/12*1/3)樸素貝葉斯算法思考剛才的案例,我們做了哪些事情1、找到一個(gè)已知分類的待分類項(xiàng)集合,這個(gè)集合叫做訓(xùn)練樣本集樸素貝葉斯樸素貝葉斯算法2、統(tǒng)計(jì)得到在各類別下各個(gè)特征屬性的條件概率估計(jì),即只計(jì)算P(a1|y1),P(a2|y1)......的概率而不是聯(lián)合概率樸素貝葉斯樸素貝葉斯分類器分類3、假設(shè)各個(gè)特征屬性是條件獨(dú)立的,則根據(jù)貝葉斯定理有如下推導(dǎo):樸素貝葉斯樸素貝葉斯分類器分類分母對(duì)于所有類別為常數(shù),我們只要將分子最大化皆可。又因?yàn)楦魈卣鲗傩允菞l件獨(dú)立的,所以有:樸素貝葉斯樸素貝葉斯分類算法1、設(shè)x={a1,a2,a3,......am}為一個(gè)待分類項(xiàng),而每個(gè)a為x的一個(gè)特征屬性。2、有類別集合C={y1,y2,......yn}。3、計(jì)算P(y1|x),P(y2|x),......,P(yn|x),。4、如果,P(yk|x)=max{P(y1|x),P(y2|x),......,P(yn|x)},則x屬于yk。樸素貝葉斯概率模型討論P(yáng)(a|y)的估計(jì)樸素貝葉斯分類的關(guān)鍵:計(jì)算條件概率P(a|y),當(dāng)特征屬性為離散值時(shí),使用頻率即可用來估計(jì)P(a|y)下面重點(diǎn)討論特征屬性是連續(xù)值的情況。概率模型討論P(yáng)(a|y)的估計(jì)當(dāng)特征屬性為連續(xù)值時(shí),通常假定其值服從高斯分布(也稱正態(tài)分布)。即:而概率模型討論P(yáng)(a|y)的估計(jì)計(jì)算出訓(xùn)練樣本各類別中特征項(xiàng)劃分的各均值和標(biāo)準(zhǔn)差,即可得到需要的估計(jì)值P(a|y)均值與標(biāo)準(zhǔn)差的計(jì)算在此不再贅述。概率模型討論P(yáng)(a|y)=0的估計(jì)另一個(gè)需要討論的問題就是當(dāng)P(a|y)=0怎么辦?當(dāng)某個(gè)類別下某個(gè)特征項(xiàng)劃分沒有出現(xiàn)時(shí),就是產(chǎn)生這種現(xiàn)象,這會(huì)令分類器質(zhì)量大大降低概率模型討論P(yáng)(a|y)=0的估計(jì)為了解決這個(gè)問題,我們引入Laplace校準(zhǔn),它的思想非常簡單,就是對(duì)沒類別下所有劃分的計(jì)數(shù)加1,這樣

如果訓(xùn)練樣本集數(shù)量充分大時(shí),并不會(huì)對(duì)結(jié)果產(chǎn)生影響,并且解決了上述頻率為0的尷尬局面概率模型高斯和多項(xiàng)式樸素貝葉斯數(shù)據(jù)集類型的不同,數(shù)據(jù)的分布也不同什么樣的數(shù)據(jù)適合使用高斯?什么樣的數(shù)據(jù)適合使用多項(xiàng)式貝葉斯?了解多項(xiàng)式分布和高斯分布樸素貝葉斯算法樸素貝葉斯案例加載數(shù)據(jù)from

sklearn

import

datasetsiris

=

datasets.load_iris()導(dǎo)入模型>>>

from

sklearn.naive_bayes

import

GaussianNB>>>

gnb

=

GaussianNB()樸素貝葉斯算法樸素貝葉斯案例訓(xùn)練模型+預(yù)測數(shù)據(jù)y_pred

=

gnb.fit(iris.data,

iris.target).predict(iris.data)輸出print("Number

of

mislabeled

points

out

of

a

total

%d

points

:

%d"%

(iris.data.shape[0],(iris.target

!=

y_pred).sum()))向量空間模型向量空間模型空間中具有大小和方向的量叫做空間向量我們可以想象我們我們所分析的數(shù)據(jù)的每一個(gè)屬性視為一個(gè)向量維度,我們輸入的數(shù)據(jù)其實(shí)是某個(gè)高維向量空間中的一個(gè)點(diǎn)向量空間模型向量空間模型很多基于向量空間的分類器在分類決策時(shí)用到距離的概念??臻g距離計(jì)算方法:歐氏距離(Euclidean

distance)向量空間模型向量空間模型在二維和三維空間中的歐式距離的就是兩點(diǎn)之間的距離,二維的公式是d

=

sqrt((x1-x2)^2+(y1-y2)^2)向量空間模型向量空間模型三維的公式是d=sqrt(x1-x2)^2+(y1-y2)^2+(z1-z2)^2)推廣到n維空間向量空間模型向量空間模型進(jìn)行分類空間向量如何進(jìn)行分類?在向量空間的分類中,我們必須要做的工作是定義類別之間的邊界,從而得到分類的結(jié)果KNN算法KNN分類器算法K近鄰(K

Nearest

Neighbors,KNN)算法,又稱為KNN算法思想是尋找與待分類的樣本在特征空間中距離最近的K個(gè)已標(biāo)記樣本(即K個(gè)近鄰),以這些樣本的標(biāo)記為參考,通過投票等方式,將占比例最高的類別標(biāo)記賦給待標(biāo)記樣本KNN算法KNN分類器K面通過一個(gè)簡單的例子說明一下:如下圖,綠色圓要被決定賦予哪個(gè)類,是紅色三角形還是藍(lán)色四方形?KNN算法KNN分類器如果K=3,由于紅色三角形所占比例為2/3,綠色圓將被賦予紅色三角形那類KNN算法KNN分類器如果K=5,藍(lán)色四方形比例為3/5,因此綠色圓被賦予藍(lán)色四方形類。KNN算法KNN分類器算法KNN算法需要確定K值、距離度量和分類決策規(guī)則K值過小時(shí),只有少量的訓(xùn)練樣本對(duì)預(yù)測起作用,容易發(fā)生過擬合,或者受含噪聲訓(xùn)練數(shù)據(jù)的干擾導(dǎo)致錯(cuò)誤K值過大,過多的訓(xùn)練樣本對(duì)預(yù)測起作用,當(dāng)不同類別樣本數(shù)量不均衡時(shí),結(jié)果偏向數(shù)量占優(yōu)的樣本KNN算法KNN分類器算法距離度量在KNN中,通過計(jì)算對(duì)象間距離來作為各個(gè)對(duì)象之間的相似性指標(biāo),距離一般使用歐氏距離或曼哈頓距離:KNN算法KNN分類器算法1)計(jì)算測試數(shù)據(jù)與各個(gè)訓(xùn)練數(shù)據(jù)之間的距離;2)按照距離的遞增關(guān)系進(jìn)行排序;3)選取距離最小的K個(gè)點(diǎn);4)確定前K個(gè)點(diǎn)所在類別的出現(xiàn)頻率;5)返回前K個(gè)點(diǎn)中出現(xiàn)頻率最高的類別作為測試數(shù)據(jù)的預(yù)測分類。KNN算法KNN案例加載數(shù)據(jù)from

sklearn

import

datasetsiris

=

datasets.load_iris()導(dǎo)入模型>>>from

sklearn.neighbors

import

KNeighborsClassifier>>>

knn

=

KNeighborsClassifier()多類問題的分類多類分類和多標(biāo)簽分類多類分類指一個(gè)樣本屬于且只屬于多個(gè)類中的一個(gè),一個(gè)樣本只能屬于一個(gè)類,不同類之間是互斥的多標(biāo)簽分類(multilabel

classification)又稱,多標(biāo)簽學(xué)習(xí)、多標(biāo)記學(xué)習(xí),不同于多類分類,一個(gè)樣本可以屬于多個(gè)類別(或標(biāo)簽),不同類之間是有關(guān)聯(lián)的。多類問題的分類多類分類直接使用能直接處理多類問題的分類器多類問題的分類多標(biāo)簽分類多標(biāo)簽分類實(shí)現(xiàn),將多標(biāo)記學(xué)習(xí)問題轉(zhuǎn)化為“標(biāo)記排序(labelranking)問題求解,既對(duì)所有類別排序然后選出排名最高的類多類問題的分類多標(biāo)簽分類器一種方法是,我們可以使用一個(gè)直接的置信度指標(biāo)來對(duì)類別排序,比如,類別歸屬的概率第五章無監(jiān)督學(xué)習(xí)目

錄概述聚類中的數(shù)據(jù)結(jié)構(gòu)基于劃分的聚類方法層次聚類方法01020304目

錄密度聚類方法05機(jī)器學(xué)習(xí)算法無監(jiān)督學(xué)習(xí)無監(jiān)督學(xué)習(xí)算法-在非監(jiān)督學(xué)習(xí)中,我們將讓計(jì)算機(jī)自己學(xué)習(xí)對(duì)于監(jiān)督學(xué)習(xí),我們回想一下每個(gè)樣本都已經(jīng)被標(biāo)明,既我們已經(jīng)被告知了明確的答案與監(jiān)督學(xué)習(xí)不一樣的數(shù)據(jù)類型沒有屬性或標(biāo)簽這一概念機(jī)器學(xué)習(xí)算法無監(jiān)督學(xué)習(xí)的數(shù)據(jù)機(jī)器學(xué)習(xí)算法無監(jiān)督學(xué)習(xí)實(shí)現(xiàn)功能無監(jiān)督學(xué)習(xí)的典型算法是聚類算法和降維通過案例來了解一下聚類算法機(jī)器學(xué)習(xí)算法無監(jiān)督學(xué)習(xí)的聚類機(jī)器學(xué)習(xí)算法聚類的案例引言聚類(clustering)的概念聚類分析,將數(shù)據(jù)對(duì)象分組成為多個(gè)簇同一簇中的對(duì)象彼此相似不同簇中的對(duì)象彼此相異引言聚類算法的功能作為一個(gè)獨(dú)立的工具來獲得數(shù)據(jù)分布的情況作為其他算法(如:特征和分類)的預(yù)處理步驟引言聚類算法的應(yīng)用場景市場營銷:幫市場分析人員從客戶基本庫中發(fā)現(xiàn)不同的客戶群,從而可以對(duì)不同的客戶群采用不同的營銷策略保險(xiǎn)業(yè):發(fā)現(xiàn)汽車保險(xiǎn)中索賠率較高的客戶群城市規(guī)劃:根據(jù)房子的類型、價(jià)值和地理位置對(duì)其進(jìn)行分組地震研究:將觀測到的震中點(diǎn)沿板塊斷裂帶進(jìn)行聚類,得出地震高危區(qū)引言聚類算法的評(píng)判標(biāo)準(zhǔn)可擴(kuò)展性:大多數(shù)來自于機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)領(lǐng)域的聚類算法在處理數(shù)百萬條數(shù)據(jù)時(shí)能表現(xiàn)出高效率處理不同數(shù)據(jù)類型的能力:數(shù)字型、二元類型、圖像型等等發(fā)現(xiàn)任意形狀的能力:基于距離的聚類算法往往發(fā)現(xiàn)的是球形的聚類,其實(shí)現(xiàn)實(shí)的聚類是任意形狀的引言聚類算法的評(píng)判標(biāo)準(zhǔn)處理噪聲數(shù)據(jù)的能力:對(duì)空缺值、離群點(diǎn)、數(shù)據(jù)噪聲不敏感對(duì)于輸入數(shù)據(jù)的順序不敏感:同一個(gè)數(shù)據(jù)集合,以不同的次序提交給同一個(gè)算法,應(yīng)該產(chǎn)生相似的結(jié)果引言聚類算法的數(shù)據(jù)問題已經(jīng)了解了無監(jiān)督學(xué)習(xí)的有監(jiān)督學(xué)習(xí)的數(shù)據(jù)類型不同聚類算法的數(shù)據(jù)是什么樣子的呢?引言聚類算法的數(shù)據(jù)結(jié)構(gòu)聚類算法采用以下兩種數(shù)據(jù)結(jié)構(gòu)常見的數(shù)據(jù)矩陣:行代表不同的數(shù)據(jù),列為數(shù)據(jù)的屬性相異度矩陣:存儲(chǔ)n個(gè)對(duì)象兩兩之間的相似度聚類數(shù)據(jù)結(jié)構(gòu)聚類算法的距離計(jì)算對(duì)象間的相似度是基于兩個(gè)對(duì)象間的1/距離來計(jì)算的歐氏距離Manhattan距離聚類數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)需要注意的問題思考:如果某個(gè)特征的方差比其他特征大幾個(gè)數(shù)量級(jí),那么它就會(huì)在學(xué)習(xí)算法中占據(jù)主導(dǎo)位置,這樣是否合理?數(shù)據(jù)標(biāo)準(zhǔn)化避免度量單位的影響,聚類數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)需要注意的問題>>>from

sklearn

import

preprocessing>>>

import

numpy

as

np>>>

X_train

=

np.array([[

1.,

-1.,

2.],... [

2.,

0.,

0.],... [

0.,

1.,

-1.]])>>>

X_scaled

=

preprocessing.scale(X_train)聚類數(shù)據(jù)結(jié)構(gòu)二元變量一個(gè)二元變量只有兩種狀態(tài):0或1;能否通過距離計(jì)算兩個(gè)二元變量之間的相似度?可以使用Jaccard系數(shù)評(píng)估它們的相似度聚類數(shù)據(jù)結(jié)構(gòu)二元變量i:[0,0,1,0,1]j:[1,0,1,1,0]那么有q=1,r=1,s=2,則Object

iObject

j基于劃分的聚類主要聚類方式基于劃分的方法基于層次的方法基于密度的方法基于劃分的聚類基于劃分的方法劃分方法(Partitioning

method):將數(shù)據(jù)集中的數(shù)據(jù)對(duì)象分配到n個(gè)簇中,并且通過設(shè)定目標(biāo)函數(shù)來驅(qū)使算法趨向于目標(biāo)每個(gè)組至少包含一個(gè)對(duì)象每個(gè)對(duì)象必須屬于且只屬于一個(gè)組基于劃分的聚類k-means聚類方式K-Means(K均值)算法是劃分聚類算法中的一種,其中K表示簇的數(shù)量,means表示均值。算法通過預(yù)先設(shè)定的K值及每個(gè)簇的初始質(zhì)心對(duì)相似的數(shù)據(jù)點(diǎn)進(jìn)行劃分。并通過劃分后的均值迭代優(yōu)化獲得最優(yōu)的聚類結(jié)果基于劃分的聚類k-means聚類方式K-Means算法的偽代碼如下:1.從D中任意選擇k個(gè)對(duì)象作為初始簇的質(zhì)心2.Repeat3.

根據(jù)簇質(zhì)心的值,將每個(gè)數(shù)據(jù)分配到最相似的簇4.

計(jì)算簇均值,更新簇質(zhì)心值5.until簇中心不在發(fā)生變化基于劃分的聚類k-means聚類方式關(guān)鍵詞:K表示簇的數(shù)量,means表示均值,初始質(zhì)心,劃分,迭代質(zhì)點(diǎn)系質(zhì)量分布的平均位置,是最能代表一個(gè)簇的點(diǎn)算法的目標(biāo)是什么?質(zhì)心為什么需要改變?基于劃分的聚類質(zhì)心對(duì)樣本的代表函數(shù)一個(gè)衡量質(zhì)心對(duì)簇樣本的代表程度的指標(biāo)是RSS

(ResidualSum

of

Squares,殘差平方和),即所有數(shù)據(jù)到其簇質(zhì)心距離的平方和,公式為:基于劃分的聚類k-means聚類執(zhí)行過程基于劃分的聚類k-means聚類方式一個(gè)動(dòng)態(tài)網(wǎng)站:https:///blog/visualizing-k-

means-clustering/基于劃分的聚類k-means聚類方式算法會(huì)得到我們想要的結(jié)果嗎?質(zhì)心會(huì)趨于穩(wěn)定嗎?基于劃分的聚類k-means的結(jié)束第一,在每次數(shù)據(jù)的重分配過程中,每個(gè)向量都分配給最近的質(zhì)心,此時(shí)它對(duì)RSS計(jì)算的距離貢獻(xiàn)值也會(huì)減小,因此RSS會(huì)單調(diào)減少第二,在簇中心重計(jì)算過程中,由于新的質(zhì)量向量使得每個(gè)RSS

k達(dá)到最小值因此,此時(shí)RSS也會(huì)單調(diào)遞減基于劃分的聚類k-means的結(jié)束當(dāng)?shù)粋€(gè)固定次數(shù)后停止當(dāng)RSS低于某個(gè)閾值低于某個(gè)閾值時(shí)停止當(dāng)質(zhì)心不再改變后停止基于劃分的聚類k-means的問題k-means算法是一個(gè)比較容易理解的算法但是卻也存在以下問題基于劃分的聚類初始值對(duì)k-means聚類影響基于劃分的聚類k-means初始值選擇將全部數(shù)據(jù)隨機(jī)地分為C簇,計(jì)算各個(gè)簇的質(zhì)心,將這些質(zhì)心作為每簇的初始點(diǎn)從(c-1)聚類劃分問題的解中產(chǎn)生C聚類劃分問題的代表點(diǎn)。其具體做法是先從一類聚類的解找兩聚類劃分的代表點(diǎn),再依次增加一個(gè)聚類代表點(diǎn)。對(duì)樣本集首先看作一個(gè)聚類,計(jì)算其總均值,然后找與該均值相距最遠(yuǎn)的點(diǎn)基于劃分的聚類k值對(duì)k-means聚類影響基于劃分的聚類k-means算法k值選擇依據(jù)實(shí)際業(yè)務(wù)來選擇從層次聚類中選擇參考K均值算法K均值算法運(yùn)行注意問題數(shù)據(jù)集如果有以下不同的簇類型,kmeans效果會(huì)不佳:簇大小相差大簇密度相差大非球型形狀數(shù)據(jù)如果存在離群點(diǎn),kmeans會(huì)很受影響,因?yàn)槭褂盟銛?shù)平均來選取類中心K均值算法簇大小相差大原始kmeans聚3類K均值算法簇密度相差大原始kmeans聚3類K均值算法非球型形狀原始kmeans聚2類K均值算法sklearn調(diào)用演示>>>

from

sklearn.cluster

import

KMeans>>>

import

numpy

as

np>>>

X

=

np.array([[1,

2],

[1,

4],

[1,

0],...

[4,

2],

[4,

4],

[4,

0]])>>>

kmeans

=KMeans(n_clusters=2,random_state=0).fit(X)>>>

kmeans.labels_>>>

kmeans.predict([[0,

0],

[4,

4]])>>>

kmeans.cluster_centers_層次聚類引入層次聚類基于劃分聚類具有概念簡單、速度快的優(yōu)點(diǎn),但是同時(shí)也有很多缺點(diǎn):它們需要預(yù)先定義簇的數(shù)目層次聚類層次聚類層次聚類(hierarchical

clustering)是指對(duì)與給定的數(shù)據(jù)集對(duì)象,我們通過層次聚類算法獲得一個(gè)具有層次結(jié)構(gòu)的數(shù)據(jù)集合子集結(jié)合的過程層次聚類分為兩種:自底向上的凝聚法以及自頂向下的分裂法層次聚類凝聚層次聚類凝聚法指的是初始時(shí)將每個(gè)樣本點(diǎn)當(dāng)做一個(gè)簇,所以原始簇的數(shù)量等于樣本點(diǎn)的個(gè)數(shù),然后依據(jù)某種準(zhǔn)則合并這些初始的簇,直到達(dá)到某種條件或者達(dá)到設(shè)定的簇的數(shù)目某種準(zhǔn)則可以是相似度層次聚類分裂層次聚類分裂法指的是初始時(shí)將所有的樣本歸為一個(gè)簇,然后依據(jù)某種準(zhǔn)則進(jìn)行逐漸的分裂,直到達(dá)到某種條件或者達(dá)到設(shè)定的簇的數(shù)目層次聚類凝聚層次聚類偽代碼基本算法流程計(jì)算各數(shù)據(jù)間的相似度矩陣每個(gè)數(shù)據(jù)就是一個(gè)簇Repeat合并兩個(gè)最相似的簇形成新簇更新相似度矩陣Until只剩一個(gè)類簇層次聚類層次聚類運(yùn)行過程層次聚類不需要事先指定簇的數(shù)目,設(shè)定層次樹高度就可以達(dá)到任意選擇簇?cái)?shù)量的目的層次聚類層次聚類問題簇之間的相似度如何計(jì)算呢,即跟新相似度矩陣?常用的策略層次聚類:如何定義簇之間的距離簇間相似度MIN(單連接)MAX(全連接)Group

Average(組平均)Distance

Between

Centroids(質(zhì)心距離)Similarity?層次聚類:如何定義簇之間的距離簇間相似度MIN(單連接):單鏈接的計(jì)算方法是將兩個(gè)簇的數(shù)據(jù)點(diǎn)中距離最近的兩個(gè)數(shù)據(jù)點(diǎn)間的距離作為這兩個(gè)簇的距離層次聚類:如何定義簇之間的距離單鏈接的運(yùn)算過程MIN(單連接):單鏈接的計(jì)算方法是將兩個(gè)簇的數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論