機器學(xué)習(xí)與Python實踐PPT完整全套教學(xué)課件_第1頁
機器學(xué)習(xí)與Python實踐PPT完整全套教學(xué)課件_第2頁
機器學(xué)習(xí)與Python實踐PPT完整全套教學(xué)課件_第3頁
機器學(xué)習(xí)與Python實踐PPT完整全套教學(xué)課件_第4頁
機器學(xué)習(xí)與Python實踐PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩874頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1機器學(xué)習(xí)與Python實踐

第一章

緒論全套PPT課件課程安排先修課程《概率論與數(shù)理統(tǒng)計》《數(shù)據(jù)庫原理及應(yīng)用》《人工智能導(dǎo)論》《Python數(shù)據(jù)處理基礎(chǔ)》課程考核平時成績期末考試學(xué)以致用考核方式成績構(gòu)成考核項目考核依據(jù)與方法占平時成績的比重占總評成績的比重平時成績課程思政實踐基于機器學(xué)習(xí)及前沿課題研討等,考查學(xué)生對我國相關(guān)先進技術(shù)的了解情況以及核心價值觀狀況5%-10%40%課堂討論通過問題驅(qū)動的分組討論環(huán)節(jié),根據(jù)提交的研究報告或者演講展示情況計分10%-40%課堂表現(xiàn)通過課堂小測、練習(xí)、回答問題等環(huán)節(jié)進行計分20%-40%課后作業(yè)布置若干探索性質(zhì)的編程實踐作業(yè),并進行課堂展示;根據(jù)參與情況與結(jié)果計分;不少于3次50%-60%期末考試閉卷考試考試成績

60%總分

100課程介紹4,抖音推薦2,虛擬人1,ChatGPT對話機器人3,LOL實時字幕課程介紹課程介紹課程介紹課程介紹公眾號/網(wǎng)站公眾號/網(wǎng)站2本章目錄機器學(xué)習(xí)概述機器學(xué)習(xí)的類型機器學(xué)習(xí)的背景知識機器學(xué)習(xí)的開發(fā)流程31.

機器學(xué)習(xí)概述1.機器學(xué)習(xí)概述2.機器學(xué)習(xí)的類型3.機器學(xué)習(xí)的背景知識4.機器學(xué)習(xí)的開發(fā)流程概念機器學(xué)習(xí)的理論:設(shè)計和分析一些算法讓計算機可以自動“學(xué)習(xí)”機器學(xué)習(xí)算法:從數(shù)據(jù)中自動分析獲得規(guī)律,并利用規(guī)律對未知數(shù)據(jù)進行預(yù)測的算法概念:機器學(xué)習(xí)與人工智能、深度學(xué)習(xí)的關(guān)系人工智能:機器展現(xiàn)的人類智能機器學(xué)習(xí):計算機利用已有的數(shù)據(jù)(經(jīng)驗),得出了某種模型,并利用此模型預(yù)測未來的一種方法。深度學(xué)習(xí):實現(xiàn)機器學(xué)習(xí)的一種技術(shù)5楊立昆(Yann

LeCun)杰弗里·欣頓(Geoffrey

Hinton)本吉奧(

Bengio

)共同獲得了2018年計算機科學(xué)的最高獎項——ACM圖靈獎。機器學(xué)習(xí)界的執(zhí)牛耳者Andrew

Ng中文名吳恩達,斯坦福大學(xué)副教授,前“百度大腦”的負責(zé)人與百度首席科學(xué)家。6李航,

現(xiàn)任字節(jié)跳動科技有限公司人工智能實驗室總監(jiān),北京大學(xué)、南京大學(xué)客座教授,IEEE

會士,ACM

杰出科學(xué)家,CCF

高級會員。代表作:《統(tǒng)計學(xué)習(xí)方法》機器學(xué)習(xí)界的國內(nèi)泰斗周志華,南京大學(xué)計算機科學(xué)與技術(shù)系主任 、人工智能學(xué)院院長。代表作:《機器學(xué)習(xí)》(西瓜書)7陳天奇,陳天奇是機器學(xué)習(xí)領(lǐng)域著名的青年華人學(xué)者之一,本科畢業(yè)于上海交通大學(xué)ACM班,博士畢業(yè)于華盛頓大學(xué)計算機系。主要貢獻:設(shè)計了XGBoost算法。機器學(xué)習(xí)界的青年才俊何愷明,本科就讀于清華大學(xué),博士畢業(yè)于香港中文大學(xué)多媒體實驗室。2016年,加入Facebook

AIResearch(FAIR)擔(dān)任研究科學(xué)家。主要貢獻:設(shè)計了ResNets8機器學(xué)習(xí)的范圍9給定數(shù)據(jù)的預(yù)測問題數(shù)據(jù)清洗/特征選擇確定算法模型/參數(shù)優(yōu)化結(jié)果預(yù)測不能解決什么大數(shù)據(jù)存儲/并行計算做一個機器人機器學(xué)習(xí)可以解決什么問題102.

機器學(xué)習(xí)的類型機器學(xué)習(xí)概述機器學(xué)習(xí)的類型機器學(xué)習(xí)的背景知識機器學(xué)習(xí)的開發(fā)流程112.

機器學(xué)習(xí)的類型12分類(Classification)身高1.65m,體重100kg的男人肥胖嗎?根據(jù)腫瘤的體積、患者的年齡來判斷良性或惡性?回歸(Regression、Prediction)如何預(yù)測上海浦東的房價?未來的股票市場走向?2.

機器學(xué)習(xí)的類型-監(jiān)督學(xué)習(xí)13聚類(Clustering)如何將教室里的學(xué)生按愛好、身高劃分為5類?降維(

Dimensionality

Reduction

)如何將將原高維空間中的數(shù)據(jù)點映射到低維度的空間中?2.

機器學(xué)習(xí)的類型-無監(jiān)督學(xué)習(xí)14強化學(xué)習(xí)(Reinforcement

Learning)用于描述和解決智能體(agent)在與環(huán)境的交互過程中通過學(xué)習(xí)策略以達成回報最大化或?qū)崿F(xiàn)特定目標(biāo)的問題

。2.

機器學(xué)習(xí)的類型-強化學(xué)習(xí)153.

機器學(xué)習(xí)的背景知識機器學(xué)習(xí)概述機器學(xué)習(xí)的類型機器學(xué)習(xí)的背景知識機器學(xué)習(xí)的開發(fā)流程163.

機器學(xué)習(xí)的背景知識-希臘字母大寫小寫英文注音國際音標(biāo)注音中文注音Ααalphaalfa阿耳法Ββbetabeta貝塔Γγgammagamma伽馬Δδdetadelta德耳塔Εεepsilonepsilon艾普西隆Ζζzetazeta截塔Ηηetaeta艾塔Θθthetaθita西塔Ιιiotaiota約塔Κκkappakappa卡帕∧λlambdalambda蘭姆達Μμmumiu繆Ννnuniu紐Ξξxiksi可塞Οοomicronomikron奧密可戎∏πpipai派Ρρrhorou柔∑σsigmasigma西格馬Ττtautau套Υυupsilonjupsilon衣普西隆Φφphifai斐Χχchikhai喜Ψψpsipsai普西Ωωomegaomiga歐米173.

機器學(xué)習(xí)的背景知識-數(shù)學(xué)基礎(chǔ)高等數(shù)學(xué)導(dǎo)數(shù)、微分、泰勒公式……線性代數(shù)向量、矩陣、行列式、秩、線性方程組、特征值和特征向量……概率論與數(shù)理統(tǒng)計隨機事件和概率、概率的基本性質(zhì)和公式、常見分布、期望、協(xié)方差……18高等數(shù)學(xué)-函數(shù)的連續(xù)性設(shè)函數(shù)

y

=

??(??)在點??0的某鄰域內(nèi)有定義,如果當(dāng)自變量的改變量????趨近于零時,相應(yīng)函數(shù)的改變量??y也趨近于零,則稱y

=

??(??)在點

??0處連續(xù)。19函數(shù) 在點 處連續(xù),需要滿足的條件:存在函數(shù)在該點處有定義函數(shù)在該點處極限極限值等于函數(shù)值高等數(shù)學(xué)-函數(shù)的連續(xù)性20,如果平均變化率的極限存在則稱此極限為函數(shù)在點 處的導(dǎo)數(shù),高等數(shù)學(xué)-導(dǎo)數(shù)21(1)

??

=

??(常數(shù))則:

??′=0(2)??

=

????(??為實數(shù)) 則:

??′=???????1(3)??

=

????則:??′

=

????lna特例:

(e??)′

=

e??(4)??=log??則:??′

=1??lna,特例

(ln??)′

=

(5)??=

sin??則:??′

=

cos??(6)??=

cos??則:??′

=

?sin??cos2??(7)??=tan??則:

??′

=

1 =

sec2??sin2??(8)??=cot??則:??′=

?

1 =

?csc2??(9)??=sec??則:??′=

sec??tan??(10)??

=

csc?? 則:??′

=

?csc??cotx(11)??=arcsin??則:??′

=11???2(12)??=

arccos??則:??′

=

?11???2(13)??=

arctan??則:??′

=11+??2(14)??=

arccot??則:??′=?

1 1+??2(15)??=s???則:??′=c???(16)??=c???則:??′=

s???高等數(shù)學(xué)-基本導(dǎo)數(shù)與微分表1x22(1) ??

±

?? ′=??′±

??′(2)(????)′=????′+

????′??(????)=??????+

??????(3)

(u/v)′

=????′?????′??2(??

0) ??( u/v)

=???????????????2四則運算法則設(shè)函數(shù)??

=

??(??),??

=

??(??)在點??可導(dǎo),則:高等數(shù)學(xué)-四則運算法則232!??(??)

=

??(??0)

+

??′(??0)(??

?

??0)+

1

??″(??0)(

??

?

??0)2+

?+f(n)(x0)(???

??)+??(??)其中

??n(??)

=(n+1)?? (??)(??+1)!(???

??n)n+1稱為??(??)在點??處的??階泰勒余項。令??0

=

0,則??階泰勒公式:??(??)=??(0)+??′(0)??

+12!??″(0)??2+?

+(??)f(n)(0)??n+

??n(??)……設(shè)函數(shù)??

=

??(??),??

=

??(??)在點??可導(dǎo),則:設(shè)函數(shù)??(??)在點??0處的某鄰域內(nèi)具有??

+

1階導(dǎo)數(shù),則對該鄰域內(nèi)異于??0的任意點??,在??0與??之間至少存在一個??,使得:高等數(shù)學(xué)-泰勒公式n!24常用函數(shù)在??0=

0處的泰勒公式

:1)e??=1+??+

1??2+?+1

????+

??(????)2!

??!21 12 3

3 ??2)ln(1+??)=

??

?

?? + ????

+

(?1)???1

xn+

??(????)高等數(shù)學(xué)-泰勒公式25線性代數(shù)-行列式設(shè)??=(aij)

??in??jn={

,則:????1????1

+????2????2

+?

+??×??或??ij??jn+

??2iA2j+?+

??niAnj=

{??,??=

??0,??≠

??即?????=?????

=??

??,其中:???

=??11 ??12 … ??1????21 ??22 … ??2??… … … …????1 ????2 … ??????=

(??ji)=

(??ij)T?列式的性質(zhì)單位陣的行列式為1,det(I)

=1.行列式的某一行(列)的所有的元素都乘以同一數(shù)k,等于用數(shù)k乘此行列式.A∈Rn×n,,det(A)=

det(AT).A,B∈Rn×n,det(AB)=

det(A)det(B).當(dāng)且僅當(dāng)A為奇異方陣時,det(A)

=

0.當(dāng)A為非奇異方陣時,det(A?1)

=1/det(A).??,??=

??0,??≠

??26線性代數(shù)-矩陣矩陣:??

×

??個數(shù)??ij排成??行??列的表格??11??21??12??22????1????2???

?

?

?

?????1 ????2???????稱為矩陣,簡記為??,或者(??ij)

。若??

=

??,則稱??是??階矩陣或??階方陣。??×??矩陣的乘法

:設(shè)??

=

(??????)是??

×??矩陣,??

=

(??????)是??

×??矩陣,那么??

×??矩陣??

=

(??????),其中??????

=

????1??1??

+

????2??2??

+?+????????????

=

Σk=1????????????稱為????的乘積,記為??

=

????

。矩陣乘法的性質(zhì):

AB

=?BA,(AB)C=A(BC),A(B+C)=AB+

AC內(nèi)積 :給定x,

y

Rn×1,xT

y為一個標(biāo)量,稱為向量的內(nèi)積或點積, 記為?x,

y?.n27線性代數(shù)-求導(dǎo)??????????=

????????????=

??????????????=

??????????????=

????????????=

??????????????=

????????

??????

=??????????????????????=??????????????????+ ?????????????????????? ??????= ?? +

??????

????????????????=

2????????????????

=??

+

????????????????????=

????????????????=

??????+??

???????? ???? ??????????????????=

2??????????[

(???????)??(???????)]????=2(?????

??)??????????????????=

2????(如果A為對稱陣)??為??

×

??的矩陣,

x為??

×

1的列向量28線性代數(shù)正交給定a, b ∈ Rn×1,如果aT

b

=

0,

那么向量a, b正交.對于方Rn×n陣A ∈ 來說,如果A的列向量兩兩正交,且?2范數(shù)為1,那么A為正交陣,數(shù)學(xué)描述為AT

A=

I

=

AAT

.正定性對于A

∈ Rn×n,

?w

∈ Rn×1,滿足

wT

Aw

>0,

A為正定矩陣;

wTAw

≥ 0,

A為半正定矩陣29線性代數(shù)行列式按行(列)展開定理(1)

設(shè)??

= ??ij??×??,則:??i1 j1?? +

??i2 j2?? +?+

??inj???? =

{??,??=

??0,??≠

??或??1??

1???? +

??2?? 2???? +?+

??ni

?????? =

{??

,??=

??0,??≠

??即?????=?????

=??

??,其中:???

=??11 ??12 … ??1????21 ??22 … ??2??… … … …????1 ????2 … ??????=

(?? )=

(??)??30概率論與數(shù)理統(tǒng)計-隨機事件和概率事件的關(guān)系(1)

子事件:??

?

??,若??發(fā)生,則??發(fā)生。(2)

相等事件:??

=

??,即??

?

??,且??

?

??

。(3)

和事件:?????(或??+

??),??與??中至少有一個發(fā)生。(4)

差事件:??

?

??,??發(fā)生但??不發(fā)生。(5)

積事件:?????(或????),??與??同時發(fā)生。(6)

互斥事件(互不相容):?????=?。(7)

互逆事件(對立事件):

?????

=

?,

?????

=

??,

??

=

??,

??

=

??

。運算律(1)

交換律:?????

=

?????,

?????

=

?????(2)

結(jié)合律:(?????)???

=

???(?????);(?????)???=

???(?????)(3)

分配律:(?????)???

=

(?????)?(?????)(4)

德.摩根律:?????=

??????????=

?????31概率論與數(shù)理統(tǒng)計-古典型概率定義:試驗E中樣本點是有限的,出現(xiàn)每一樣本點的概率是相同。一袋中有8個球,編號為1-8,其中1-3號為紅球,4-8號為黃球,設(shè)摸到每一球的可能性相等,從中隨機摸一球,記A={

摸到紅球},求P(A)。32概率論與數(shù)理統(tǒng)計??(??)(1) 條件概率: ??(??|??)

=

??(????)

,表示??發(fā)生的條件下,??發(fā)生的概率一袋中有8個球,編號為1-8,其中1-3號為紅球,4-8號為黃球,設(shè)摸到每一球的可能性相等,從中隨機摸一球,記A={

摸到紅球},求P(A)。??=1(2)

全概率公式:

??(??)

=

Σ??????=1??(??|????)??(????),????????=?,??≠??,?????=

??.33概率論與數(shù)理統(tǒng)計(3)

Bayes公式:??(??

|??)

=??(??|????)??(????)??=1?? Σ????(??|????)??(????),??=1,2,?,

??(4)乘法公式:

??(??1??2)

=

??(??1)??(??2|??1)

=

??(??2)??(??1|??2)??(??1??2?????)=??(??1)??(??2|??1)??(??3|??1??2)???(????|??1??2?

?????1)34概率論與數(shù)理統(tǒng)計-常見分布(1)

0-1分布:??(??

=

??)

=

????(1???)1???,

??

=

0,1??(2)二項分布:??(??,

??): ??(??=??)=????

????(1???)?????,??=0,1,?,

????!??(3)

Poisson分布:??(??): ??(??=??)

=

?? ?????,??>0,??=0,1,2

?Poisson分布的期望和方差都等于參數(shù)??35概率論與數(shù)理統(tǒng)計-常見分布(4)

均勻分布??(??,

??):??(??)

={

1?????,??<??<??(5)

正態(tài)分布:??(??,

??2):??(??)

=12???????(?????)22??2,??>0,?∞<??<

+∞(6)指數(shù)分布:??(??):

??(??)

={?????????,??>0,??>0

0,036概率論與數(shù)理統(tǒng)計數(shù)學(xué)期望離散型:??

??

=

????=????,??(??)=σ??

?????????∞連續(xù)型:??~??(??),??(??)=∫+∞????(??)????性質(zhì):(1)??(??)=??,??[??(??)]=

??(??)(2)??(??1??+??2??)=??1??(??)+

??2??(??)(3)

若X和Y獨立,則??(????)

=

??(??)??(??)(4) ??(????)

2≤

??(??2)??(??2)協(xié)方差??????(??,??)=??

(?????(??)(???

??(??))性質(zhì):(1)??????(??,??)=??????(??,

??)(2)??????(????,????)=??????????(??,

??)(3)??????(??1+??2,??)=??????(??1,??)+??????(??2,

??)37Python

的環(huán)境的安裝AnacondaJupyter notebookPycharm詳細教程:/p/590276923.

機器學(xué)習(xí)的背景知識-Python基礎(chǔ)Python

的環(huán)境的安裝38Anaconda/distribution/通常選3.7版本,64位可以用默認安裝,右圖兩個選擇框都勾上39Python

的環(huán)境的安裝Jupyter notebook在cmd環(huán)境下,切換到代碼的目錄,輸入命令:jupyter

notebook之后就可以啟動jupyter

botebook編輯器,啟動之后會自動打開瀏覽器,并訪問http://localhost:8088,默認跳轉(zhuǎn)到http://localhost:8088/tree40Pycharmhttps:///pycharm/Pycharm提供 免費的社區(qū)版 與 付費的專業(yè)版。專業(yè)版額外增加了一些功能,如項目模板、遠程開發(fā)、數(shù)據(jù)庫支持等。個人學(xué)習(xí) Python

使用免費的社區(qū)版已足夠。如果有edu郵箱,那么推薦使用專業(yè)版,edu郵箱是可以免費使用專業(yè)版的。安裝過程照著提示一步步操作就可以了。注意:安裝路徑盡量不使用帶有 中文或空格 的目錄,這樣在之后的使用過程中減少一些莫名的錯誤。Python

的環(huán)境的安裝41Python

的主要數(shù)據(jù)類型字符串整數(shù)與浮點數(shù)布爾值日期時間其它42Python

的數(shù)據(jù)結(jié)構(gòu)列表(list)用來存儲一連串元素的容器,列表用[

]來表示,其中元素的類型可不相同。元組(tuple)元組類似列表,元組里面的元素也是進行索引計算。列表里面的元素的值可以修改,而元組里面的元素的值不能修改,只能讀取。元組的符號是(

)集合(set)集合主要有兩個功能,一個功能是進行集合操作,另一個功能是消除重復(fù)元素。

集合的格式是:set(

),其中()內(nèi)可以是列表、字典或字符串,因為字符串是以列表的形式存儲的字典(dict)字典dict也叫做關(guān)聯(lián)數(shù)組,用大括號{

}括起來,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度,其中key不能重復(fù)。43Python控制流順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)break、continue和pass列表生成式44Python函數(shù)調(diào)用函數(shù)調(diào)用內(nèi)置函數(shù)定義函數(shù)def 函數(shù)名():函數(shù)內(nèi)容<return

返回值>高階函數(shù)匿名函數(shù):高階函數(shù)傳入函數(shù)時,不需要顯式地定義函數(shù),直接傳入匿名函數(shù)更方便(lambda函數(shù))594.

機器學(xué)習(xí)的開發(fā)流程機器學(xué)習(xí)概述機器學(xué)習(xí)的類型機器學(xué)習(xí)的背景知識機器學(xué)習(xí)的開發(fā)流程60機器學(xué)習(xí)的一般步驟61機器學(xué)習(xí)的一般步驟數(shù)據(jù)搜集數(shù)據(jù)清洗特征工程數(shù)據(jù)建模62不同視角的機器學(xué)習(xí)朋友以為我做的事情不同行業(yè)的人以為我做的事情父母以為我做的事情程序員以為我做的事情我自己以為我做的事情實際上我做的事情63通過這張圖可以看出,各種不同算法在輸入的數(shù)據(jù)量達到一定級數(shù)后,都有相近的高準確度。于是誕生了機器學(xué)習(xí)界的名言:成功的機器學(xué)習(xí)應(yīng)用不是擁有最好的算法,而是擁有最多的數(shù)據(jù)!數(shù)據(jù)決定一切數(shù)據(jù)大小準確率課后作業(yè)1,基于機器學(xué)習(xí)及前沿課題研討等,制作PPT介紹機器學(xué)習(xí)的定義及應(yīng)用,第二周抽查5人進行課堂匯報,要求:(1)應(yīng)用需涉及起碼3個領(lǐng)域(比如醫(yī)療、教育、國防、

反欺詐、反騷擾、投資、文學(xué)、藝術(shù)、購物、娛樂等)(2)匯報時間控制在5-10分鐘(3)頁數(shù)不限2,學(xué)以致用(加分項)

Python基礎(chǔ)庫本章目錄·numpy庫概述pandas庫概述scipy庫概述matplotlib庫概述scikit-learn庫概述1.NumPy概述01

NumPy概述02NumPy數(shù)組(ndarry)對象03ufunc函數(shù)04NumPy的函數(shù)庫46Python模塊-NumPynumpyNumpy是一個用python實現(xiàn)的科學(xué)計算的擴展程序庫,包括:1、一個強大的N維數(shù)組對象Array;2、比較成熟的(廣播)函數(shù)庫;3、用于整合C/C++和Fortran代碼的工具包;4、實用的線性代數(shù)、傅里葉變換和隨機數(shù)生成函數(shù)。numpy和稀疏矩陣運算包scipy配合使用更加方便。NumPy(Numeric

Python)提供了許多高級的數(shù)值編程工具,如:矩陣數(shù)據(jù)類型、矢量處理,以及精密的運算庫。專為進行嚴格的數(shù)字處理而產(chǎn)生。多為很多大型金融公司使用,以及核心的科學(xué)計算組織如:LawrenceLivermore,NASA用其處理一些本來使用C++,F(xiàn)ortran或Matlab等所做的任務(wù)。標(biāo)準的Python中用list(列表)保存值,可以當(dāng)做數(shù)組使用,但因為列表中的元素可以是任何對象,所以浪費了CPU運算時間和內(nèi)存。NumPy誕生為了彌補這些缺陷。它提供了兩種基本的對象:ndarray:全稱(n-dimensionalarrayobject)是儲存單一數(shù)據(jù)類型的多維數(shù)組。ufunc:全稱(universalfunctionobject)它是一種能夠?qū)?shù)組進行處理的函數(shù)。NumPy的官方文檔:/doc/numpy/reference/NumPy是什么?47Python模塊-NumPy切片48Python模塊-NumPy廣播2.NumPy數(shù)組(ndarry)對象01

NumPy概述02NumPy數(shù)組(ndarry)對象03ufunc函數(shù)04NumPy的函數(shù)庫1.1認識NumPy數(shù)組對象>importnumpyasnp#導(dǎo)入NumPy工具包

>data=np.arange(12).reshape(3,4)#創(chuàng)建一個3行4列的數(shù)組

>dataarray([[0,1,2,3],

[4,5,6,7],

[8,9,10,11]])

ndarray對維數(shù)沒有限制。[]從內(nèi)到外分別為第0軸,第1軸,第2軸,第3軸。NumPy最重要的一個特點是其N維數(shù)組對象ndarray,它是一系列同類型數(shù)據(jù)的集合,以0下標(biāo)為開始進行集合中元素的索引。ndarray對象是用于存放同類型元素的多維數(shù)組。1.1認識NumPy數(shù)組對象2>type(data)numpy.ndarraydata.size#數(shù)組元素的個數(shù),輸出結(jié)果12,表示總共有12個元素data.dtype#數(shù)組元素的類型,輸出結(jié)果dtype('int64'),表示元素類型都是int64>data.shape#數(shù)組的維度,輸出結(jié)果(3,4),表示3行4列>data.ndim#數(shù)組維度的個數(shù),輸出結(jié)果2,表示二維數(shù)組(3,4)12dtype('int32')

1.2創(chuàng)建NumPy數(shù)組>importnumpyasnp

>data1=np.array([1,2,3])#創(chuàng)建一個一維數(shù)組

>data1

array([[1,2,3],

[4,5,6]])array([1,2,3])data2=np.array([[1,2,3],[4,5,6]])#創(chuàng)建一個二維數(shù)組

data2

np.zeros((3,4))#創(chuàng)建一個全0數(shù)組array([[0.,0.,0.,0.],

[0.,0.,0.,0.],

[0.,0.,0.,0.]])1.2創(chuàng)建NumPy數(shù)組>np.ones((3,4))#創(chuàng)建全一數(shù)組array([[1.,1.,1.,1.],

[1.,1.,1.,1.],

[1.,1.,1.,1.]])>np.empty((5,2))#創(chuàng)建全空數(shù)組,其實每個值都是接近于零的數(shù)

array([[6.95312756e-310,2.12199579e-314],

[2.12199579e-314,4.94065646e-324],

[0.00000000e+000,-7.06252554e-311],

[0.00000000e+000,-8.12021073e-313],

[1.29923372e-311,2.07507571e-322]])1.2創(chuàng)建NumPy數(shù)組

array([1,6,11,16])

array([1.,2.,3.,4.])

array([[1.,1.,1.],

[1.,1.,1.]])

>np.arange(1,20,5)>np.array([1,2,3,4],float)>np.ones((2,3),dtype='float64')ndarray的創(chuàng)建NumPy提供了專門用于生成ndarray的函數(shù),提高創(chuàng)建ndarray的速度。>a=np.arange(0,1,0.1)array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])>b=np.linspace(0,1,10)array([0.,0.11111111,0.22222222,0.33333333,0.44444444,0.55555556,0.66666667,0.77777778,0.88888889,1.])>c=np.linspace(0,1,10,endpoint=False)array([0.,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])>d=np.logspace(0,2,5)array([1.,3.16227766,10.,31.6227766,100.])ndarray的創(chuàng)建np.empty((2,3),)創(chuàng)建2*3的整形型空矩陣,只分配內(nèi)存np.zeros(4,)創(chuàng)建長度為4,值為全部為0的矩陣np.full(4,np.pi)創(chuàng)建長度為4,值為全部為pi的矩陣>deffunc(i):returni%4+1>np.fromfunction(func,(10,))array([1.,2.,3.,4.,1.,2.,3.,4.,1.,2.])還可以自定義函數(shù)產(chǎn)生ndarray。fromfunction第一個參數(shù)接收計算函數(shù),第二個參數(shù)接收數(shù)組的形狀。ndarray的屬性ndarray的元素具有相同的元素類型。常用的有int(整型),float(浮點型),complex(復(fù)數(shù)型)。>a=np.array([1,2,3,4],dtype=float)array([1.,2.,3.,4.])>a.dtypedtype('float64')ndarray的shape屬性用來獲得它的形狀,也可以自己指定。>c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])>c.shape(3,4)>a=np.array([1,2,3,4])>d=a.reshape((2,2))array([[1,2],[3,4]])ndarray的切片ndarray的切片和list是一樣的。>a=np.arange(10)>aarray([0,1,2,3,4,5,6,7,8,9])a[5]a[3:5]a[:5]a[:-1]----------------------------------------------------5[3,4][0,1,2,3,4][0,1,2,3,4,5,6,7,8]a[1:-1:2]a[::-1]a[5:1:-2]---------------------------------------------------[1,3,5,7][9,8,7,6,5,4,3,2,1,0][5,3]可以通過切片的對ndarray中的元素進行更改。>a[2:4]=100,101>aarray([0,1,100,101,4,5,6,7,8,9])ndarray的切片ndarray通過切片產(chǎn)生一個新的數(shù)組b,b和a共享同一塊數(shù)據(jù)存儲空間。>b=a[3:7]>b[2]=-10ba----------------------------------------------------------------------[101,4,-10,6][0,1,100,101,4,-10,6,7,8,9]如果想改變這種情況,我們可以用列表對數(shù)組元素切片。>b=a[[3,3,-3,8]]>barray([3,3,7,8])>b[2]=100ba----------------------------------------------------------------------[3,3,100,8][0,1,2,3,4,5,6,7,8,9]多維數(shù)組NumPy的多維數(shù)組和一維數(shù)組類似。多維數(shù)組有多個軸。我們前面已經(jīng)提到從內(nèi)到外分別是第0軸,第1軸…>a=np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25],[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])a[0,3:5]a[4:,4:]a[2::2,::2]---------------------------------[3,4][[44,45],[[20,22,24],[54,55]][40,42,44]]#上面方法對于數(shù)組的切片都是共享原數(shù)組的儲存空間的。結(jié)構(gòu)數(shù)組C語言中可以通過struct關(guān)鍵字定義結(jié)構(gòu)類型。NumPy中也有類似的結(jié)構(gòu)數(shù)組。>persontype=np.dtype({'names':['name','age','weight'],'formats':['S30','i','f']})>a=np.array([("Zhang",32,75.5),("Wang",24,65.2)],dtype=persontype)我們就創(chuàng)建了一個結(jié)構(gòu)數(shù)組,并且可以通過索引得到每一行。nameageweight0zhang3275.51wang2465.2>printa[0]('Zhang',32,75.5)3.ufunc函數(shù)01

NumPy概述02NumPy數(shù)組(ndarry)對象03ufunc函數(shù)04NumPy的函數(shù)庫ufunc函數(shù)ufunc是universalfunction的簡稱,它是一種能對數(shù)組每個元素進行運算的函數(shù)。NumPy的許多ufunc函數(shù)都是用C語言實現(xiàn)的,因此它們的運算速度非常快。>x=np.linspace(0,2*np.pi,10)>y=np.sin(x)>yarray([0.00000000e+00,6.42787610e-01,9.84807753e-01,.....,-2.44929360e-16])值得注意的是,對于同等長度的ndarray,np.sin()比math.sin()快但是對于單個數(shù)值,math.sin()的速度則更快。四則運算NumPy提供了許多ufunc函數(shù),它們和相應(yīng)的運算符運算結(jié)果相同。>a=np.arange(0,4)>b=np.arange(1,5)>np.add(a,b)array([1,3,5,7])>a+barray([1,3,5,7])>np.subtract(a,b)#減法>np.multiply(a,b)#乘法>np.divide(a,b)#如果兩個數(shù)字都為整數(shù),則為整數(shù)除法>np.power(a,b)#乘方比較運算和布爾運算使用==,>對兩個數(shù)組進行比較,會返回一個布爾數(shù)組,每一個元素都是對應(yīng)元素的比較結(jié)果。>np.array([1,2,3])<np.array([3,2,1])array([True,False,False],dtype=bool)布爾運算在NumPy中也有對應(yīng)的ufunc函數(shù)。表達式ufunc函數(shù)y=x1==x2equal(x1,x2[,y])y=x1!=x2not_equal(x1,x2[,y])y=x1<x2less(x1,x2[,y])y=x1<=x2not_equak(x1,x2[,y])y=x1>x2greater(x1,x2[,y])y=x1>=x2gerater_equal(x1,x2[,y])自定義ufunc函數(shù)NumPy提供的標(biāo)準ufunc函數(shù)可以組合出復(fù)合的表達式,但是有些情況下,自己編寫的則更為方便。我們可以把自己編寫的函數(shù)用frompyfunc()轉(zhuǎn)化成ufunc函數(shù)。>defnum_judge(x,a):#對于一個數(shù)字如果是3或5的倍數(shù)就ifx%3==0:返回0,否則返回a。r=0elifx%5==0:r=0else:r=areturnr>x=np.linspace(0,10,11)>y=np.array([num_judge(t,2)fortinx])#列表生成式array([0,2,2,0,2,0,0,2,2,0,0])自定義ufunc函數(shù)使用frompyfunc()進行轉(zhuǎn)化,調(diào)用格式如下:>numb_judge=np.frompyfunc(num_judge,2,1)>y=numb_judge(x,2)array([0,2,2,0,2,0,0,2,2,0,0],dtype=object)frompyfunc(func,nin,nout)func:計算函數(shù)nin:func()輸入?yún)?shù)的個數(shù)nout:func()輸出參數(shù)的個數(shù)因為最后輸出的元素類型是object,所以我們還需要把它轉(zhuǎn)換成整型。y.astype()廣播(broadcasting)我們看一下具體的例子:>a=np.arange(0,60,10).reshape(-1,1)>b=np.arange(0,5)>c=a+bcc.shape-----------------------------[[0,1,2,3,4],(6,5)[10,11,12,13,14],[20,21,22,23,24],[30,31,32,33,34],[40,41,42,43,44],[50,51,52,53,54]]廣播(broadcasting)ogrid用來生成廣播運算所用的數(shù)組。>x,y=np.ogrid[:5,:5]xy----------------------[[0],[[0,1,2,3,4]][1],[2],[3],[4]]下面操作和a.reshape(1,-1),a.reshape(-1,1)相同

。>a=np.arange(4)a[None,:]a[:,None]------------------------[[0,1,2,3]][[0],[1],[2],3]]4.NumPy的函數(shù)庫01

NumPy概述02NumPy數(shù)組(ndarry)對象03ufunc函數(shù)04NumPy的函數(shù)庫隨機數(shù)除了前面介紹的ufunc()函數(shù)之外,NumPy還提供了大量對于數(shù)組運算的函數(shù)。它們能夠簡化邏輯,提高運算速度。我們首先看隨機數(shù)。NumPy產(chǎn)生隨機數(shù)的模塊在random里面,其中有大量的分布。>fromnumpyimportrandomasnr>np.set_printoptions(precision=2)#顯示小數(shù)點后兩位數(shù)>r1=nr.rand(4,3)[[0.87,0.42,0.34],[0.25,0.87,0.42],[0.49,0.18,0.44],[0.53,0.23,0.81]]>r2=nr.poisson(2.0,(4,3))[[3,1,5],[2,2,3],[2,4,4],[2,2,3]]隨機數(shù)rand0到1之間的隨機數(shù)normal正態(tài)分布的隨機數(shù)randint制定范圍內(nèi)的隨機整數(shù)uniform均勻分布randn標(biāo)準正態(tài)的隨機數(shù)poisson泊松分布choice隨機抽取樣本shuffle隨機打亂順序求和,平均值,方差NumPy在均值等方面常用的函數(shù)如下:>np.random.seed(42)>a=np.random.randint(0,10,size=(4,5))>np.sum(a)96函數(shù)名功能sum求和average加權(quán)平均數(shù)var方差mean期望std標(biāo)準差product連乘積求和,平均值,方差a--------------[[6,3,7,4,6],[9,2,6,7,4],[3,7,7,2,5],[4,1,7,5,1]]keepdims可以保持原來數(shù)組的維數(shù)。np.sum(a,1,keepdims=True)np.sum(a,0,keepdims=True)------------------------------------------------------[[26],[[22,13,27,18,16]][28],[24],[18]]np.sum(a,axis=1)np.sum(a,axis=0)-------------------------------------[26,28,24,18][22,13,27,18,16]大小與排序NumPy在排序等方面常用的函數(shù)如下:>a=np.array([1,3,5,7])>b=np.array([2,4,6])>np.maximum(a[None,:],b[:,None])#maxinum返回兩組array([[2,3,5,7],矩陣廣播計算后的[4,4,5,7],結(jié)果[6,6,6,7]])函數(shù)名功能函數(shù)名功能min最小值max最大值ptp極差argmin最小值的下標(biāo)mininum二元最小值maxinum二元最大值sort數(shù)組排序argsort數(shù)組排序下標(biāo)percentile分位數(shù)median中位數(shù)min,max都有axis,out,keepdims等參數(shù),我們來看其他函數(shù)。大小與排序sort()對數(shù)組進行排序會改變數(shù)組的內(nèi)容,返回一個新的數(shù)組。axis的默認值都為-1,即按最終軸進行排序。axis=0對每列上的值進行排序。np.sort(a)np.sort(a,axis=0)-----------------------------------[[3,4,6,6,7],[[3,1,6,2,1],[2,4,6,7,9],[4,2,7,4,4],[2,3,5,7,7],[6,3,7,5,5],[1,1,4,5,7]][9,7,7,7,6]]percentile計算處于p%上的值。>r=np.abs(np.random.randn(100000))>np.percentile(r,[68.3,95.4,99.7])array([1.00029686,1.99473003,2.9614485])統(tǒng)計函數(shù)NumPy中常用的統(tǒng)計函數(shù)有:unique(),bicount(),histogram()。我們來一個個介紹。首先看unique():>np.random.seed(42)>a=np.random.randint(0,8,10)>np.unique(a)anp.unique(a)------------------------------------------------[6,3,4,6,2,7,4,4,6,1][1,2,3,4,6,7]unique有兩個參數(shù),return_index=True同時返回原始數(shù)組中的下標(biāo),return_inverse=True表示原始數(shù)據(jù)在新數(shù)組的下標(biāo)。>x,index=np.unique(a,return_index=True)]xindexa[index]------------------------------------------------------[1,2,3,4,6,7][9,4,1,2,0,5][1,2,3,4,6,7]統(tǒng)計函數(shù)>x,rindex=np.unique(a,return_inverse=True)rindexx[rindex]------------------------------------------------------------[4,2,3,4,1,5,3,3,4,0][6,3,4,6,2,7,4,4,6,1]bincount()對非負整數(shù)數(shù)組中的各個元素出現(xiàn)的次數(shù)進行統(tǒng)計,返回數(shù)組中的第i個元素是整數(shù)i出現(xiàn)的次數(shù)。>a=np.array([6,3,4,6,2,7,4,4,6,1])>np.bincount(a)array([0,1,1,1,3,0,3,1])>x=np.array([0,1,2,2,1,1,0])>w=np.array([0.1,0.3,0.2,0.4,0.5,0.8,1.2])>np.bincount(x,w)array([1.3,1.6,0.6])統(tǒng)計函數(shù)histogram()對以為數(shù)組進行直方圖統(tǒng)計,其參數(shù)為:histogram(a,bins=10,range=None,weights=None)函數(shù)返回兩個一維數(shù)組,hist是每個區(qū)間的統(tǒng)計結(jié)果,bin_edges返回區(qū)間的邊界值。>a=np.random.rand(100)>np.histogram(a,bins=5,range=(0,1))(array([28,18,17,19,18]),array([0.,0.2,0.4,0.6,0.8,1.]))>np.histogram(a,bins=[0,0.4,0.8,1.0])(array([46,36,18]),array([0.,0.4,0.8,1.]))操作多維數(shù)組多維數(shù)組可以進行連接,分段等多種操作。我們先來看vstack(),hstack(),column_stack()函數(shù)。>a=np.arange(3)>b=np.arange(10,13)>v=np.vstack((a,b))#按第1軸連接數(shù)組>h=np.hstack((a,b))#按第0軸連接數(shù)組>c=np.column_stack((a,b))#按列連接多個一維數(shù)組vhc------------------------------------------------[[0,1,2],[0,1,2,10,11,12][[0,10],[10,11,12]][1,11],[2,12]]操作多維數(shù)組split()函數(shù)進行分段。>a=np.array([6,3,7,4,6,9,2,6,7,4,3,7])>b=np.array([1,3,6,9,10]>np.split(a,idx)#按元素位置進行分段[array([6]),array([3,7]),array([4,6,9]),array([2,6,7]),array([4]),array([3,7])]>np.split(a,2)#按數(shù)組個數(shù)進行分段[array([6,3,7,4,6,9]),array([2,6,7,4,3,7])]多項式函數(shù)多項式函數(shù)是整數(shù)的次冪與系數(shù)的乘積,如:f(x)=an(x^n)+an-1(x^(n-1))+…+a1(x)+a0NumPy中多項式函數(shù)可以用一維數(shù)組表示。a[0]為最高次,a[-1]為常數(shù)項。>a=np.array([1.0,0,-2,1])>p=np.poly1d(a)>printtype(p)<class'numpy.lib.polynomial.poly1d'>>p(np.linspace(0,1,5))array([1.,0.515625,0.125,-0.078125,0.])多項式函數(shù)可以進行四則運算,其中運算的列表自動化成多項式函數(shù)。多項式函數(shù)>p+[-2,1]poly1d([1.,0.,-4.,2.])>p*ppoly1d([1.,0.,-4.,2.,4.,-4.,1.])>p/[1,1]#分別為商和余(poly1d([1.,-1.,-1.]),poly1d([2.]))多項式也可以進行積分和求導(dǎo)。>p.deriv()poly1d([3.,0.,-2.])>eg()poly1d([0.25,0.,-1.,1.,0.])多項式函數(shù)Roots可以求多項式的根。>r=np.roots(p)>rarray([-1.61803399,1.,0.61803399])polyfit()可以對數(shù)據(jù)進行多項式擬合。x,y為數(shù)據(jù)點,deg為多項式最高階數(shù)。>a=np.polyfit(x,y,deg)poly()返回多項式系數(shù)構(gòu)成的數(shù)組。>a=np.poly(x)49Python模塊-pandaspandaspandas

是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。pandas

納入了大量庫和一些標(biāo)準的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。你很快就會發(fā)現(xiàn),它是使Python成為強大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。50Python模塊-pandas基本數(shù)據(jù)結(jié)構(gòu)Series一維數(shù)據(jù)結(jié)構(gòu),包含行索引和數(shù)據(jù)兩個部分.DataFrame二維數(shù)據(jù)結(jié)構(gòu),包含帶索引的多列數(shù)據(jù),各列的數(shù)據(jù)類型可能不同.51Python模塊-pandas數(shù)據(jù)索引df[5:10]通

.df[col_label]or

df.col_label選取列

.df.loc[row_label,

col_label]通過標(biāo)簽選取行/列.df.iloc[row_loc,

col_loc]通過位置(自然數(shù))選取行/列.52Python模塊-pandas數(shù)據(jù)合并pd.merge(left,

right)

類數(shù)據(jù)庫的數(shù)據(jù)融合操作.參數(shù):how,融合方式,包括左連接、右連接、內(nèi)連接(默認)和外連接;on,連

接鍵;left_on,左鍵;right_on,右鍵;left_index,是否將left行索引作

為左鍵;right_index,是否將right行索引作為右鍵.53Python模塊-pandas數(shù)據(jù)融合pd.concat([df1,

df2])軸向連接多個DataFrame.54Python模塊-pandas文件讀寫從?件中讀取數(shù)據(jù)(DataFrame)pd.read_csv()

|

從CSV文件讀取.pd.read_table()

|

從制表符分隔文件讀取,如TSV.pd.read_excel()|從Excel文件讀取.pd.read_sql()|從SQL表或數(shù)據(jù)庫讀取.pd.read_json()

|

從JSON格式的URL或文件讀取.pd.read_clipboard()

|

從剪切板讀取.將DataFrame寫??件df.to_csv()|寫入CSV文件.df.to_excel()|寫入Excel文件.df.to_sql()

|

寫入SQL表或數(shù)據(jù)庫.df.to_json()

|

寫入JSON格式的文件.df.to_clipboard()

|

寫入剪切板.55Python模塊-ScipyScipyscipy是構(gòu)建在numpy的基礎(chǔ)之上的,它提供了許多的操作numpy的數(shù)組的函數(shù)。SciPy是一款方便、易于使用、專為科學(xué)和工程設(shè)計的python工具包,它包括了統(tǒng)計、優(yōu)化、整合以及線性代數(shù)模塊、傅里葉變換、信號和圖像圖例,常微分方差的求解等scipy.cluster向量量化scipy.constants數(shù)學(xué)常量scipy.fftpack快速傅里葉變換egrate積分erpolate插值scipy.io數(shù)據(jù)輸入輸出scipy.linalg線性代數(shù)scipy.ndimageN維圖像scipy.odr正交距離回歸scipy.optimize優(yōu)化算法scipy.signal信號處理scipy.sparse稀疏矩陣scipy.spatial空間數(shù)據(jù)結(jié)構(gòu)和算法scipy.special特殊數(shù)學(xué)函數(shù)scipy.stats統(tǒng)計函數(shù)1102023/6/30

SciPy

SciPy建立在NumPy基礎(chǔ)之上,集成了眾多的數(shù)學(xué)、科學(xué)以及工程計算中常用庫函數(shù)的Python模塊,例如線性代數(shù)、常微分方程數(shù)值求解、信號處理、圖像處理、稀疏矩陣等。通過給用戶提供一些高層的命令和類,SciPy在Python交互式會話中大大增加了操作和可視化數(shù)據(jù)的能力。通過SciPy,Python的交互式會話變成了一個數(shù)據(jù)處理和system-prototyping的環(huán)境,足以和MATLAB

溫馨提示

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

評論

0/150

提交評論