《人工智能概論》 課件 第1-3章人工智能概述 -機器學習_第1頁
《人工智能概論》 課件 第1-3章人工智能概述 -機器學習_第2頁
《人工智能概論》 課件 第1-3章人工智能概述 -機器學習_第3頁
《人工智能概論》 課件 第1-3章人工智能概述 -機器學習_第4頁
《人工智能概論》 課件 第1-3章人工智能概述 -機器學習_第5頁
已閱讀5頁,還剩166頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章人工智能概述——趙克玲本章目標了解人工智能的定義、起源和發(fā)展

掌握人工智能產(chǎn)業(yè)鏈框架體系

掌握人工智能的核心技術(shù)體系

理解我國大力發(fā)展人工智能的戰(zhàn)略意義了解人工智能產(chǎn)業(yè)發(fā)展以及在各行各業(yè)的應(yīng)用

1.1.1人工智能的定義

人工智能,是模擬實現(xiàn)人的抽象思維和智能行為的技術(shù),即通過利用計算機軟件模擬人類特有的大腦抽象思維能力和智能行為,如學習、思考、判斷、推理等,以完成原本需要人的智力才可勝任的工作。人工智能的發(fā)展1.1.2人工智能起源和發(fā)展

人工智能發(fā)展的三次熱潮(1)第一次熱潮:圖靈測試(2)第二次熱潮:語音識別(3)第三次熱潮:深度學習圖靈測試圖靈發(fā)表了一篇名為《計算機和智能》的論文提出了著名的“圖靈測試”,贏得了“人工智能之父”的稱號。AI三次熱潮人工智能發(fā)展的三個階段技術(shù)驅(qū)動階段數(shù)據(jù)驅(qū)動階段場景驅(qū)動階段1.2人工智能產(chǎn)業(yè)框架體系

1.基礎(chǔ)層基礎(chǔ)層主要包括智能傳感器、智能芯片、算法模型智能傳感器和智能芯片屬于基礎(chǔ)硬件,算法模型屬于核心軟件。2.技術(shù)層技術(shù)層主要包括語音識別、圖像視頻識別、文本識別等產(chǎn)業(yè)語音識別已經(jīng)延展到語義識別層面,圖像視頻識別包括人臉識別、手勢識別、指紋識別等領(lǐng)域,文本識別主要針對印刷、手寫及圖像拍攝等各種字符進行辨識。3.應(yīng)用層指人工智能技術(shù)在傳統(tǒng)產(chǎn)業(yè)和社會建設(shè)中的應(yīng)用。機器人無人駕駛智慧城市1.3人工智能的核心技術(shù)1.4人工智能的意義及挑戰(zhàn)人工智能是引領(lǐng)未來的戰(zhàn)略性技術(shù)人工智能是開啟未來智能世界的密匙是未來科技發(fā)展的戰(zhàn)略制高點是推動人類社會變革的第四次工業(yè)革命誰掌握人工智能,誰就將成為未來核心技術(shù)的掌控者。國家領(lǐng)導人習近平總書記重要講話國家政策十九大以來,人工智能的國家戰(zhàn)略地位逐步確立,成為經(jīng)濟發(fā)展的重要主題。2017年7月,國務(wù)院印發(fā)了《新一代人工智能發(fā)展規(guī)劃》2019年8月,科技部印發(fā)了《國家新一代人工智能開放創(chuàng)新平臺建設(shè)工作指引》2020年7月,五部門印發(fā)《國家新一代人工智能標準體系建設(shè)指南》2024年6月,四部門印發(fā)《國家人工智能產(chǎn)業(yè)綜合標準化體系建設(shè)指南(2024版)》國家新一代人工智能開放創(chuàng)新平臺基礎(chǔ)軟硬件領(lǐng)域的華為智能供應(yīng)鏈領(lǐng)域的京東圖像感知領(lǐng)域的曠視科技安全大腦領(lǐng)域的360奇虎科技智慧教育領(lǐng)域的好未來AI芯片領(lǐng)域的寒武紀智能家居領(lǐng)域的小米以及新一代類腦人工智能公共算力開放創(chuàng)新平臺依托廣東省智能科學與技術(shù)研究院。自動駕駛領(lǐng)域的百度城市大腦領(lǐng)域的阿里云醫(yī)療影像領(lǐng)域的騰訊智能語音領(lǐng)域的科大訊飛智能視覺領(lǐng)域的商湯集團視覺計算領(lǐng)域的依圖科技智能營銷領(lǐng)

域的明略科技普惠金融領(lǐng)域的中國平安視頻感知領(lǐng)域的??低暣罅Πl(fā)展人工智能的意義1.人工智能大幅提高勞動生產(chǎn)率2.人工智能引領(lǐng)“第四次工業(yè)革命”3.人工智能沖擊勞動力市場4.正視科技變革帶來的挑戰(zhàn)1.4.2人工智能發(fā)展趨勢1.人工智能成為全球經(jīng)濟增長的助推器2.深度學習和AI芯片仍將是技術(shù)突破的關(guān)鍵3.人工智能行業(yè)應(yīng)用廣度和深度將不斷擴展4.建立可信人工智能將成為行業(yè)發(fā)展的重要考量1.4.3人工智能的沖擊與挑戰(zhàn)1.對就業(yè)的沖擊2.對法律制度的沖擊3.對安全性的沖擊4.對倫理道德的沖擊本章總結(jié)人工智能(ArtificialIntelligence,AI)是模擬實現(xiàn)人的抽象思維和智能行為的技術(shù)

人工智能在70多年的發(fā)展歷程中共經(jīng)歷了三次熱潮第一次熱潮:圖靈測試第二次熱潮:語音識別第三次熱潮:深度學習人工智能產(chǎn)業(yè)鏈框架可以分為基礎(chǔ)層、技術(shù)層、應(yīng)用層和保障層核心技術(shù)可以分為基礎(chǔ)技術(shù)、通用技術(shù)、應(yīng)用技術(shù)三個層面人工智能是推動人類社會變革的第四次工業(yè)革命第2章Python基礎(chǔ)——趙克玲本章目標理解程序設(shè)計的基本思想掌握Python語言的基礎(chǔ)語法熟練使用Python官方IDLE的使用掌握JupyterNotebook的使用掌握序列和字典掌握流程控制語句掌握函數(shù)和模塊的定義掌握文件的讀寫操作Python簡介Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C腳本(Shell)語言Python的創(chuàng)始人是GuidovanRossum(吉多·范羅蘇姆)Python英文翻譯為“蟒蛇”的意思Python語言的Logo圖標是兩條蟒蛇Python語言的擁有者是PSF(PythonSoftwareFoundation,Python軟件基金會協(xié)議),PSF是非盈利組織,致力于保護Python語言開放、開源和發(fā)展Python語言的版本更迭2000年,Python2.x2008年,Python3.x更高級別的3.0系列不兼容早期2.0系列2008年至今,版本更迭帶來大量庫函數(shù)的升級替換,Python語言的版本更迭痛苦且漫長到今天,Python3.x系列已經(jīng)成為主流Python語言特點Python語言是通用語言Python語言是腳本語言Python語言是開源語言

Python語言是跨平臺語言Python語言是一種少有的既簡單又功能強大的編程語言,注重如何解決問題而不是語言的語法和結(jié)構(gòu)Python可被應(yīng)用于下面的領(lǐng)域Web和Internet開發(fā)科學計算和統(tǒng)計人工智能編程教育桌面界面開發(fā)軟件開發(fā)后端開發(fā)Python程序程序是是一組計算機能識別和執(zhí)行的指令集程序的基本組成:輸入:從鍵盤、文件或其他裝置獲取數(shù)據(jù),如input('請輸入一個整數(shù):');輸出:在屏幕上顯示數(shù)據(jù),或者是將數(shù)據(jù)保存到文件或其他裝置中,如print('猜對了!');處理:處理過程有數(shù)學運算、條件判斷、循環(huán)等,例如執(zhí)行加法和乘法等基本的數(shù)學運算;檢查特定條件、判斷并執(zhí)行適當?shù)年愂鲂蛄?;循環(huán)反復執(zhí)行某些操作。九九乘法表下面是一段Python語言編寫的程序,其功能是打印乘法表??梢钥闯?,Python語言語法簡潔、結(jié)構(gòu)清晰。使用JupyterNotebook程序里有三類可能發(fā)生的錯誤:語法錯誤執(zhí)行錯誤語意錯誤調(diào)試程序注釋對于程序來說是必不可少的,其有助于幫助開發(fā)人員了解代碼的含義、模塊的工作過程,有利于提高開發(fā)速度。單行注釋多行注釋注釋

Python中的代碼縮進是必要的!不僅僅是為了代碼更容易閱讀,同時也是語法需要。代碼縮進在程序設(shè)計語言中,標識符是一個被允許作為名字的有效字符串。Python中變量、函數(shù)、類、模塊等的命名都要遵循標識符的相關(guān)規(guī)定。Python中對標識符的規(guī)定如下:標識符可以由字母、數(shù)字和下劃線組成,但不能以數(shù)字開頭標識符區(qū)分大小寫不能使用Python的保留字做標識符以下劃線開頭的標識符具有特殊意義標識符anddelfromnotwhileaselifglobalorwithassertelseifpassyieldbreakexceptimportprintTrueclassexecinraiseFalsecontinuefinallyisreturndefforlambdatry標識符的命名-關(guān)鍵字變量來源于數(shù)學,是計算機語言中能儲存計算結(jié)果或能表示值抽象概念。變量可以通過變量名訪問。變量通常是可變的,但也有可能是不可變的。變量X變量內(nèi)存空間12345Hello,Python!變量名變量的命名必須嚴格遵守標識符的規(guī)定,命名風格統(tǒng)一,做到見名知意。幾種常見的命名規(guī)則:大駝峰(uppercamelcase)小駝峰(lowercamelcase)下劃線(_)分隔變量賦值單變量賦值,即把一個值賦值給一個變量。多變量賦同一個值,即把一個值賦值給多個變量。多變量賦多個值,即把多個值賦值給多個變量。在Python中,定義變量不需要指定類型。

所謂“類型”是變量所指的內(nèi)存中對象的類型。Python中有兩種基礎(chǔ)數(shù)據(jù)類型:數(shù)字和字符串,此外還有序列、映射等?;A(chǔ)數(shù)據(jù)類型

Python支持int、float、bool、complex(復數(shù)),也可以使用二進制、八進制、十六進制表示整數(shù)。數(shù)字(Number)字符串可以理解為是若干字符組成的文本。Python中可以使用單引號(’)、雙引號(”)和三引號(’’’)來表示字符串。字符串(String)對字符串操作很多時候會用到字符串索引。所謂索引,即字符在字符串中的位置。字符串(String)利用索引,字符串可以完成獲取指定位置的字符、字符串切片、字符串拼接、字符串格式化等操作。這些操作都用到了方括號([])。獲取指定位置的字符。如,str[3]獲取字符串中的第4個字符。字符串切片。如,str[3:9]獲取字符串中從第4個字符開始到第10個(但不包括)字符結(jié)束的子字符串。字符串拼接。如,str1+str2會產(chǎn)生由這兩個字符串組成的新字符串。字符串格式化。如,print(“%04d”%12)會輸出0012,即在整數(shù)左側(cè)補0湊足4位。字符串(String)字符串(String)符號描述%c格式化字符及其ASCII碼%s格式化字符串%d格式化整數(shù)%u格式化無符號整型%o格式化無符號八進制數(shù)%x格式化無符號十六進制數(shù)%X格式化無符號十六進制數(shù)(大寫)%f格式化浮點數(shù)字,可指定小數(shù)點后的精度%e用科學計數(shù)法格式化浮點數(shù)%E作用同%e,用科學計數(shù)法格式化浮點數(shù)%g%f和%e的簡寫%G%F和%E的簡寫%p用十六進制數(shù)格式化變量的地址字符串(String)符號描述*定義寬度或者小數(shù)點精度-用做左對齊+在正數(shù)前面顯示加號(+)<sp>在正數(shù)前面顯示空格#在八進制數(shù)前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X')0顯示的數(shù)字前面填充'0'而不是默認的空格%'%%'輸出一個單一的'%'(var)映射變量(字典參數(shù))m.n.m是顯示的最小總寬度,n是小數(shù)點后的位數(shù)(如果可用的話)算術(shù)運算符運算符運算規(guī)則實例+加,表示兩個對象相加5+7輸出結(jié)果12-減,表示得到負數(shù)或是一個數(shù)減去另一個數(shù)5-7輸出結(jié)果-2*乘,表示兩個數(shù)相乘或是返回一個被重復若干次的字符串5*7輸出結(jié)果35/除,表示兩個數(shù)相除7/5輸出結(jié)果1.4%取模,得到兩個數(shù)相除的余數(shù)7%5輸出結(jié)果2**冪,得到a的n次冪5**2輸出結(jié)果25//取整除,得到商的整數(shù)部分(向下取整)5//2輸出結(jié)果1比較(關(guān)系)運算符運算符運算規(guī)則實例==等于,判斷對象是否相等(5==5)返回True(5==4)返回False!=不等于,判斷兩個對象是否不相等(5!=5)返回False(5!=4)返回True>

大于,判斷一個對象是否大于另一個對象(5>4)返回True<

小于,判斷一個對象是否小于另一個對象。(5<4)返回False>=大于等于,判斷一個對象是否大于等于另一個對象,或者說,判斷一個對象是否不小于另一個對象。('123'>='1234')返回False<=小于等于,判斷一個對象是否小于等于另一個對象,或者說,判斷一個對象是否不大于另一個對象。('123'<='abc')返回True賦值運算符運算符運算規(guī)則實例=賦值運算符,將等號右側(cè)的值賦給左側(cè)的對象c=a+b將a+b的運算結(jié)果賦值為c+=加法賦值運算符c+=a等效于c=c+a-=減法賦值運算符c-=a等效于c=c-a*=乘法賦值運算符c*=a等效于c=c*a/=除法賦值運算符c/=a等效于c=c/a%=取模賦值運算符c%=a等效于c=c%a**=冪賦值運算符c**=a等效于c=c**a//=取整除賦值運算符c//=a等效于c=c//a邏輯運算符運算符運算規(guī)則實例and布爾“與”,xandy,當x為False,返回False,否則返回y的計算值20and30,返回30or布爾“或”,xory,當x為True,返回True,否則返回y的計算值20or30,返回20not布爾“非”,notx,如果x為True,返回False,如果x為False,它返回True。not20,返回Falsenot0,返回True運算符優(yōu)先級運算符運算規(guī)則**指數(shù)(最高優(yōu)先級)*、/、%、//乘,除,取模和取整除+、-加法減法<=、<>、>=比較運算符==、!=等于運算符=、%=、/=、//=、-=、+=、*=、**=賦值運算符notandor邏輯運算符表達式表達式是運算符和操作數(shù)所構(gòu)成的序列,其結(jié)果是一個Python對象。單獨的一個值是一個表達式,單獨的變量也是一個表達式Python中還有三元表達式。例如:a=3b=5c=aifa>belseb三元表達式還可以寫成下面的形式(字典和元組在下節(jié)會詳細介紹)。c={True:a,False:b}[a>b]c=(a,b)[a>b]序列及其通用操作

Python中最基本的數(shù)據(jù)結(jié)構(gòu)是序列,序列中每個元素被分配一個序號,即索引。序列中常見的兩種類型是:列表和元組。列表和元組的操作方法類似,主要區(qū)別在于列表是可以修改的,而元組是不能修改的。也就是說,如果要根據(jù)要求來添加、刪除元素,那么列表可能會更好用;而出于某些原因,不想讓序列發(fā)生改變時,使用元組則更為合適。所有序列類型都可以進行某些特定的操作,包括:索引、切片、加、乘以及檢查某個元素是否在序列中存在。此外,Python還提供了計算序列長度、找出最大元素和最小元素的內(nèi)建函數(shù)。列表和元組的聲明在Python中,列表使用中括號([])聲明,元組使用小括號(())聲明。person1是列表,person2是元組,序列中的每個元素之間使用逗號(,)進行分隔。出于某些原因,可能會創(chuàng)建空列表或空元組。利用索引訪問元素序列中的每一個元素都可以用其索引(或負索引)來訪問。切片(獲取部分元素)與字符串切片操作類型,序列也可以進行切片操作。切片是通過冒號(:)隔開的兩個索引來實現(xiàn)。序列加法、乘法(產(chǎn)生新序列)序列加法,即將兩個序列合并為一個新序列。使用的加號(+)運算符。用數(shù)字(n)乘以一個序列會生成新序列,在新序列中,原序列的將被重復n次。檢查元素是否存在為了檢查一個值是否在序列中存在,可以使用in運算符(成員運算符)。這個運算符檢查某個條件是否為真,然后返回相應(yīng)的值:條件為真返回True,條件為假返回False。元素賦值使用索引和賦值運算符即可為列表中的元素賦值。刪除元素使用del語句即可從列表中刪除指定的元素。切片賦值切片賦值=切片+賦值。切片賦值意味著可以一次給列表中的多個元素賦值。列表方法

方法是一個與某些對象有緊密聯(lián)系的函數(shù),對象可能是列表、數(shù)字,也可能是或者其它類型的對象。一般來說,方法可以這樣調(diào)用:

對象.方法(參數(shù))(1)append()

(6)pop()(2)count()

(7)remove()(3)extend()

(8)reverse()(4)index()

(9)sort()(5)insert()列表和元組的相互轉(zhuǎn)化列表和元組之間可以相互轉(zhuǎn)化。可以使用tuple函數(shù),將列表轉(zhuǎn)化為元組,也可以使用list函數(shù),將元組轉(zhuǎn)化為列表。字典另一個非常有用的Python數(shù)據(jù)結(jié)構(gòu)是字典。序列是以連續(xù)的整數(shù)為索引,與此不同的是,字典以關(guān)鍵字為索引,關(guān)鍵字可以是任意不可變類型,通常用字符串或數(shù)值。如果元組中只包含字符串和數(shù)字,它也可以作為關(guān)鍵字。理解字典的最佳方式是把它看作無序的鍵值對(key-value)集合,鍵必須是互不相同的(在同一個字典之內(nèi))。創(chuàng)建字典字典是有多個鍵及與其對應(yīng)的值構(gòu)成的鍵值對組成的。每個鍵和它的值之間用冒號(:)分隔,鍵值對之間用逗號(,)隔開。使用大括號({})來創(chuàng)建字典。也可以使用dict函數(shù)來創(chuàng)建字典。字典的基本操作字典方法:(1)clear()(2)copy()(3)fromKeys()(4)get()(5)items()、keys()、values()(6)pop()和popitem()(7)update()流程控制語句常用的流程控制語句有:條件語句(if)循環(huán)語句(while)條件語句條件語句可以讓程序可以選擇是否執(zhí)行某些語句塊。單分支:if語句雙分支:if…else語句多分支:if…elif…else語句if語句

if語句可以實現(xiàn)條件執(zhí)行。即如果條件為真,那么后面的語句塊就會被執(zhí)行。如果條件為假,語句塊就不會被執(zhí)行。if語句的基本形式:

if判斷條件:

執(zhí)行語句If_else語句句

else子句作為if語句的一部分,用來處理判斷條件不正確的情況。

if判斷條件:

執(zhí)行語句else:

執(zhí)行語句2elif子句當判斷條件為多個值時,可以elif子句,它是elseif的縮寫。其形式如下:

if判斷條件1:

執(zhí)行語句1elif判斷條件2:

執(zhí)行語句2elif判斷條件3:

執(zhí)行語句3else:

執(zhí)行語句4循環(huán)語句循環(huán)語句的作用是讓程序重復執(zhí)行多次。正如猜數(shù)字的小游戲,如果用戶沒有猜中正確的數(shù)字,程序就會不停的運行。while語句在判斷條件為真的情況下,循環(huán)執(zhí)行while后面的語句塊,以處理需要重復處理的相同任務(wù)。其執(zhí)行過程可以用下圖描述。

while循環(huán)的基本結(jié)構(gòu)如下:

while判斷條件:執(zhí)行語句for語句

while循環(huán)非常靈活,它可以用來在任何條件為真的情況下重復執(zhí)行一個代碼塊。一般情況下這樣可以了,但對于序列、映射這樣的數(shù)據(jù)結(jié)構(gòu)(可迭代,即可按照一定次序訪問的對象),for循環(huán)更為合適。for循環(huán)的基本結(jié)構(gòu)如下:

forloop_variable

in集合:

執(zhí)行語句跳出循環(huán)一般來說,循環(huán)會一直執(zhí)行到條件為假或者序列元素用完時結(jié)束。但有些時候,可能會提前中斷一次循環(huán)繼續(xù)進行下一輪循環(huán),或者就此跳出循環(huán)。break語句

break語句用來跳出(結(jié)束)循環(huán)。continue語句

continue語句用來結(jié)束本次循環(huán)繼續(xù)下一次循環(huán),而非像break語句那樣直接結(jié)束循環(huán)。函數(shù)與模塊到目前為止所編寫的程序都比較短小,如果想編寫大型程序,很快就會遇到麻煩。比如,已經(jīng)編寫了一段比較復雜的代碼(從中國天氣網(wǎng)獲取當前的氣象數(shù)據(jù)),如果程序的多個地方都需要用到這些代碼,該怎么辦呢?重寫一遍?復制一遍?

真正的程序員是不會這么做的,因為他們都很“懶”。函數(shù)函數(shù)是組織好的、可重復使用的、用來實現(xiàn)單一或相關(guān)聯(lián)功能的程序塊,它可以將一些數(shù)據(jù)(參數(shù))傳遞進程序塊進行處理,然后返回一些數(shù)據(jù)(返回值)。當然,也可以只處理數(shù)據(jù)不返回結(jié)果。

函數(shù)實現(xiàn)了對程序邏輯功能的封裝,是程序邏輯的結(jié)構(gòu)化、過程化的一種方法。

例如,當獲取用戶輸入時,可以使用input函數(shù),計算列表長度時,可以使用len函數(shù),這些都是Python的內(nèi)建函數(shù)。

由用戶自己創(chuàng)建的函數(shù)被稱為用戶自定義函數(shù)。函數(shù):定義函數(shù)定義函數(shù)的語法如下:deffunction_name(parameters):"函數(shù)_文檔字符串"function_suitereturn[expression]函數(shù):定義函數(shù)定義函數(shù)的規(guī)則:函數(shù)使用def關(guān)鍵聲明,后面是合法的函數(shù)名以及參數(shù)列表;參數(shù)列表可以包含多個參數(shù),用逗號(,)分隔;函數(shù)內(nèi)容代碼塊要有縮進;函數(shù)內(nèi)容代碼塊的第一行字符串被稱為文檔字符串;函數(shù)利用return語句返回值,不帶表達式的return語句返回None。函數(shù):調(diào)用函數(shù)當再需要計算階乘的時候,就可以像下面這樣調(diào)用函數(shù):函數(shù):遞歸(在函數(shù)內(nèi)調(diào)用函數(shù)自己)仔細分析階乘的算法,可以發(fā)現(xiàn):n!=n×(n–1)!。那fact函數(shù)就可以做如下的修改:函數(shù)參數(shù)很多時候需要像函數(shù)傳遞數(shù)據(jù)(參數(shù))進行處理,函數(shù)fact中的n就是一個參數(shù)。

參數(shù)可有可無、可多可少,取決于具體的問題。

當參數(shù)較多時,給每個參數(shù)賦予有意義的名字就顯得尤為重要了。函數(shù)參數(shù)目前看到的函數(shù)調(diào)用,都是根據(jù)參數(shù)的位置來傳遞參數(shù)的,這叫做位置參數(shù)。

實際上,很多時候,參數(shù)的名字更加重要,特別是在參數(shù)較多、參數(shù)有默認值的情況下。

通過使用參數(shù)名提供的參數(shù)被稱為關(guān)鍵字參數(shù)。模塊Python模塊(Module),是一個Python文件,以.py結(jié)尾,包含了Python對象定義和Python語句。模塊幫助程序員有邏輯地組織Python代碼。模塊可以被其它Python程序?qū)耄允褂迷撃K中的對象、函數(shù)等提高開發(fā)效率。導入整個模塊

5的平方根怎么計算?sin(60)的值是多少?Pythonmath模塊提供了許多數(shù)學運算函數(shù)。要使用該模塊中的函數(shù),首先要導入模塊。import語句用來導入模塊。模塊:導入函數(shù)也可以根據(jù)實際需要導入模塊中一個或幾個函數(shù)。模塊:指定別名如果導入的模塊、函數(shù)與當前程序中的函數(shù)發(fā)生名稱沖突,或者模塊、函數(shù)名字太長影響使用,可以使用as語句給模塊、函數(shù)指定別名。文件文件是指記錄在存儲介質(zhì)上的一組相關(guān)信息的集合。在Windows操作系統(tǒng)下,文件名由文件主名和擴展名組成。例如:readme.txt作為文件名時,readme是文件主名,.txt是文件擴展名,通常文件擴展名與某個應(yīng)用程序關(guān)聯(lián)在一起,即雙擊這個文件時,使用關(guān)聯(lián)的應(yīng)用程序打開這個文件。文件打開文件

Python內(nèi)置了讀寫文件的函數(shù),open函數(shù)用來打開文件。關(guān)閉文件一定要記得,“打開文件操作完成之后要關(guān)閉文件”。使用close方法關(guān)閉當前打開的文件。如果不及時關(guān)閉文件,可能會導致該文件無法被其它程序訪問。讀取文件內(nèi)容文件的read方法用來讀取一定字節(jié)的數(shù)據(jù)。讀取文件內(nèi)容也可以使用readline以行為單位讀取文件內(nèi)容。讀取文件全部內(nèi)容如果文件內(nèi)容不是特別大,也可以一次性讀取文件的全部內(nèi)容。如果省略了read方法中的參數(shù),則會讀取文檔中的全部內(nèi)容,或者使用readlines方法。將內(nèi)容寫入文件與read和readline方法相反,write和writelines方法則用于向文件中寫入數(shù)據(jù)。本章總結(jié)Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C腳本(Shell)語言Python的創(chuàng)始人是GuidovanRossum(吉多·范羅蘇姆)Python語言的擁有者是PSF(PythonSoftwareFoundation,Python軟件基金會協(xié)議)Python語言是通用的腳本語言,也是開源的、跨平臺語言程序通常由輸入、處理和輸出三部分組成Python是以縮進來組織代碼的層次結(jié)構(gòu),一個縮進4個空格Python內(nèi)置了讀寫文件的函數(shù),open()用來打開文件,close()關(guān)閉文件本章總結(jié)標識符可以由字母、數(shù)字和下劃線組成,但不能以數(shù)字開頭Python數(shù)字類型支持int、float、bool、complex(復數(shù))Python中可以使用單引號(’)、雙引號(”)和三引號(’’’)來表示字符串在Python中,列表使用中括號([])聲明,元組使用小括號(())聲明,字典使用大括號({})聲明常用的流程控制語句有:條件語句(if)、循環(huán)語句(for、while)函數(shù)使用def關(guān)鍵聲明,后面是合法的函數(shù)名以及參數(shù)列表import語句用來導入模塊第3章機器學習——趙克玲本章目標了解機器學習的發(fā)展歷史了解機器學習的應(yīng)用領(lǐng)域掌握機器學習的基本術(shù)語和概念掌握機器學習的基本流什么是機器學習機器學習(ML,machineLearning)是人工智能的核心和一個分支,是讓機器自己做主,而不是我們告訴計算機具體干什么干什么,我們只告訴計算機,做成什么樣子“自己看著辦”,計算機你自己需要能學會"察言觀色",到時候給我滿意的解決方案就OK了。設(shè)計和分析一些讓計算機可以自動“學習”的算法,它從數(shù)據(jù)中自動分析獲得規(guī)律,并利用規(guī)律對未知數(shù)據(jù)進行預(yù)測的算法。機器學習的核心機器學習的核心數(shù)據(jù)算法(模型)算力(計算機運算的能力)機器學習范疇機器學習發(fā)展史(1)誕生并奠定基礎(chǔ)時期1949年,赫布基于神經(jīng)心理學提出了一種學習方式,該方法被稱之為赫布學習理論。假設(shè)反射活動的持續(xù)性或反復性會導致細胞的持續(xù)性變化并增加其穩(wěn)定性,當一個神經(jīng)元A能持續(xù)或反復激發(fā)神經(jīng)元B時,其中一個或兩個神經(jīng)元的生長或代謝過程都會變化。(1)誕生并奠定基礎(chǔ)時期1950年,阿蘭·圖靈創(chuàng)造了圖靈測試來判定計算機是否智能。2014年6月8日,一個叫做尤金·古斯特曼的聊天機器人成功讓人類相信它是一個13歲的男孩,成為有史以來首臺通過圖靈測試的計算機。這被認為是人工智能發(fā)展的一個里程碑事件。(1)誕生并奠定基礎(chǔ)時期1952,IBM科學家亞瑟·塞繆爾開發(fā)了一個跳棋程序。該程序能夠通過觀察當前位置,并學習一個隱含的模型,從而為后續(xù)動作提供更好的指導。塞繆爾發(fā)現(xiàn),伴隨著該游戲程序運行時間的增加,其可以實現(xiàn)越來越好的后續(xù)指導。通過這個程序,塞繆爾駁倒了普羅維登斯提出的機器無法超越人類,像人類一樣寫代碼和學習的模式。他創(chuàng)造了“機器學習”這一術(shù)語。(1)誕生并奠定基礎(chǔ)時期1957年,羅森·布拉特基于神經(jīng)感知科學背景提出了第二模型,非常的類似于今天的機器學習模型。這在當時是一個非常令人興奮的發(fā)現(xiàn),它比赫布的想法更適用?;谶@個模型羅森·布拉特設(shè)計出了第一個計算機神經(jīng)網(wǎng)絡(luò)——感知機(theperceptron),它模擬了人腦的運作方式。(1)誕生并奠定基礎(chǔ)時期感知機的定義:它不會因為個別特例或通常不知道的東西所束縛住,也不會因為那些個別生物有機體的情況而陷入混亂。(1)誕生并奠定基礎(chǔ)時期1969年馬文·明斯基提出了著名的XOR問題,指出感知機在線性不可分的數(shù)據(jù)分布上是失效的。此后神經(jīng)網(wǎng)絡(luò)的研究者進入了寒冬,直到1980年才再一次復蘇。(2)停滯不前的瓶頸時期從60年代中到70年代末,機器學習的發(fā)展步伐幾乎處于停滯狀態(tài)。無論是理論研究還是計算機硬件限制,使得整個人工智能領(lǐng)域的發(fā)展都遇到了很大的瓶頸。雖然這個時期溫斯頓(Winston)的結(jié)構(gòu)學習系統(tǒng)和海斯·羅思(HayesRoth)等的基于邏輯的歸納學習系統(tǒng)取得較大的進展,但只能學習單一概念,而且未能投入實際應(yīng)用。而神經(jīng)網(wǎng)絡(luò)學習機因理論缺陷也未能達到預(yù)期效果而轉(zhuǎn)入低潮。(3)希望之光重新點亮的復興時期偉博斯在1981年的神經(jīng)網(wǎng)絡(luò)反向傳播(BP)算法中具體提出多層感知機模型。直到今天BP算法仍然是神經(jīng)網(wǎng)絡(luò)架構(gòu)的關(guān)鍵因素。有了這些新思想,神經(jīng)網(wǎng)絡(luò)的研究又加快了。昆蘭于1986年提出了一種非常出名的機器學習算法,稱之為“決策樹”,更具體的說是ID3算法。這是另一個主流機器學習算法的突破點。(3)希望之光重新點亮的復興時期(4)現(xiàn)代機器學習的成型時期1964年,支持向量機提出。2000年提出帶核函數(shù)的支持向量機,應(yīng)用性能大幅提高。這一時期,人們發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型相比SVM更容易過擬合,神經(jīng)網(wǎng)絡(luò)處于劣勢。2001年,布雷曼博士提出“隨機森林”的概念,它是通過集成學習的思想將多棵樹集成的一種算法,它的基本單元是決策樹(5)爆發(fā)時期2006年,神經(jīng)網(wǎng)絡(luò)研究領(lǐng)域領(lǐng)軍者Hinton提出了神經(jīng)網(wǎng)絡(luò)DeepLearning算法,使神經(jīng)網(wǎng)絡(luò)的能力大大提高,向支持向量機發(fā)出挑戰(zhàn)。開啟了深度學習在學術(shù)界和工業(yè)界的浪潮。機器學習應(yīng)用領(lǐng)域(1)銀行、零售和電信。(2)醫(yī)療保健和生命科學。(3)一般日常應(yīng)用。(4)安全應(yīng)用機器學習適用場景人類不能手動編程;人類不能很好的定義這個問題的解決方案是什么;人類不能做到的需要極度快速決策的系統(tǒng);大規(guī)模個性化服務(wù)系統(tǒng)。對于人類的頭腦來說,反復數(shù)十億次的不間斷處理數(shù)據(jù),必然是會感到厭倦的,這就是機器學習算法發(fā)揮關(guān)鍵作用的地方。機器學習分類1.按功能分類按功能區(qū)分回歸分類聚類機器學習分類2.按方式分類按方式區(qū)分監(jiān)督學習無監(jiān)督學習弱監(jiān)督學習基本術(shù)語數(shù)據(jù)集(DataSet):數(shù)據(jù)是機器學習的原材料,是機器學習產(chǎn)生“智能”的源泉。由多數(shù)量樣本組成的數(shù)據(jù),我們稱之為“數(shù)據(jù)集”。模型(Model):能夠做出思考和判斷的生理結(jié)構(gòu)稱之為“模型”,模型的構(gòu)建是機器學習非常重要的一部分。訓練(Training):讓建立好的模型學習大量數(shù)據(jù)的過程稱之為“模型訓練”,而用于訓練的那部分數(shù)據(jù)集,稱之為“訓練集”。預(yù)測(Prediction):在訓練過程中,預(yù)測結(jié)果會對模型起到評價作用,使用預(yù)測結(jié)果與實際結(jié)果的差距來調(diào)整模型的參數(shù)來改善模型。測試(Test):同訓練集一樣,一組用于測試的大量數(shù)據(jù)構(gòu)成的數(shù)據(jù)集,稱之為“測試集”。機器學習的一般流程分析案例數(shù)據(jù)獲取模型訓練模型驗證線性模型線性模型(LinearModel)蘊涵了機器學習中一些重要的基本思想,線性模型形式簡單、易于建模,具有很好的解釋性。

預(yù)測工資——線性回歸確定數(shù)據(jù)觀察數(shù)據(jù)的特征含義確定哪些是有效特征姓名年限級別實際工資蹇嘉怡515500焉從丹375500問德曜8210000經(jīng)茂彥1.554500仰雅旋10613000來囡囡335500浮彬郁738500夷三姍547000和云臻124000橋琪華8511500猶青344000宿雪萍233500萊頎414500池晶輝446000星迎蕾323500百淑貞132500憑嘉福425000慶月靈526000麴茵345000仉云水759500明甘658500這個數(shù)據(jù)集的特征向量即為{年限,級別,工資}?!肮べY”是結(jié)果,而“年限”和“級別”兩個因素共同決定了“工資”。“工資”之所以難以預(yù)測,是因為工資并不是根據(jù)某個固定的公式計算出來的,其中也包含了復雜的“人”的因素,比如員工的為人處世,老板是否賞識等等。以上數(shù)據(jù)保存為csv表格文件,使用python的pandas庫讀取以上數(shù)據(jù)的代碼如下:#工作年限、級別與工資數(shù)據(jù)(csv文件)csv_data=‘salary.csv’#讀入dataframedf=pandas.read_csv(StringIO(csv_data))print(df)確定數(shù)據(jù)確定模型首先考慮“年限”和“工資”兩者之間的關(guān)系。假定它們符合線性模型,工資表示為y,年限表示為x,那么這個模型就可以假設(shè)為y=ax+b。使用python的sklearn庫建立模型的代碼如下:#建立線性回歸模型

regr=linear_model.LinearRegression()

訓練模型模型就可以假設(shè)為y=ax+b訓練的過程實際上就是調(diào)整參數(shù)a、b的過程,這個過程叫做擬合。我們的目標就是確定y=ax+b這條直線,使他最大限度的接近這些散點。讓預(yù)測更精確模型就可以假設(shè)為y=ax+b實際預(yù)測的收入和真實收入總是有或大或小的差距,怎樣能使它預(yù)測的更加精確呢?讓預(yù)測更精確只使用了一個特征值{年限}級別特征未使用將特征向量的尺度由一元變?yōu)槎膡年限,級別}這時的模型就變?yōu)閥=ax1+bx2+c我們可以把梯度想象為表示一個曲線或曲面上某一點的陡峭程度。在圖中,我們分別在紫點和紅點的地方做一條切線可以發(fā)現(xiàn),兩條切線的方向不同,切線的傾斜角度不同。紫色點位置的切線斜率為負,稱之為負梯度,紅色點位置的切線斜率為正,稱之為正梯度。這里的正負只表示為方向,并不表示大小,所以紅色點出的梯度會更小一些。在梯度分別為正負的兩個點之間,一定存在一個梯度為0的點。這個點就是模型的最優(yōu)解。梯度使用梯度來尋找損失函數(shù)的最小值。如果學習率定的太高,步子邁得太大,我們會總是在最低點上跨來跨去,最終找到的最小值離實際的最小值誤差會比較大。如果我們的學習率定的太低,步子買的太小,會更容易接近實際的最小值,但是速度會變慢,效率低。學習率過擬合問題y=ax+by=ax2+bx+c過擬合問題y=ax3+bx2+cx+dy=ax4+bx3+cx2+dx+ey=ax5+bx4+cx3+dx2+ex+f過擬合問題完全擬合樣本數(shù)據(jù),泛化能力嚴重不足泰坦尼克號生存預(yù)測——邏輯回歸場景說明泰坦尼克號展開首航,乘客中的身份各種各樣,他們有不同的年齡,來自不同的國家,擁有不同的財富,有著不同的家庭成員,他們買的票價和所在的船艙的等級也不同。在4月14日凌晨,它在中途島碰撞冰山后沉沒,2224名船上的人員中有1514人死亡。災(zāi)難過后,泰坦尼克號所屬的白星航運公司統(tǒng)計出了所有乘客的信息和生還情況。在這個案例中我們發(fā)現(xiàn),乘客的數(shù)量較多,而且每個乘客的信息完善,生還情況也做好了標記,可以使用機器學習來建立一個生還概率預(yù)測的模型。觀察數(shù)據(jù)在這些數(shù)據(jù)中,我們可以思考一下,哪些可以用來做特征值,而哪些卻不適合。Survived(是否生還)Pclass(船艙等級)Sex(性別)Age(年齡)SibSp(子女數(shù)量)Parch(長輩數(shù)量)Ticket(票價)Fare(收入)Cabin(客艙號)觀察數(shù)據(jù)離散分類數(shù)據(jù)survived(是否生還),用1表示生還,用0表示死亡,并不存在0.5這種數(shù)據(jù),中間值是沒有意義的。相同的數(shù)據(jù)類型還有sex(性別),male是男性,female是女性;pclass(船艙等級),1表示一等艙,2表示二等艙,3表示三等艙。分類與回歸的不同對于泰坦尼克號生存預(yù)測的案例,最終的預(yù)測結(jié)果只有兩個,要么為1生還,要么為0死亡。為了方便理解,姑且用一元線性模型(票價-生存)來說明問題。不合理的問題:預(yù)測曲線超過了[0,1]這個范圍生存狀態(tài)大于1Sigmoid函數(shù)

模型訓練與測試在python中使用sklearn實現(xiàn)邏輯回歸模型并做出預(yù)測的代碼如下:#基于訓練集使用邏輯回歸建模classifier=LogisticRegression(random_state=0)classifier.fit(X_train,y_train)

#將模型應(yīng)用于測試集并查看混淆矩陣y_pred=classifier.predict(X_test) #在測試集上的準確率print('Accuracyoflogisticregressionclassifierontestset:{:.2f}'.format(classifier.score(X_test,y_test)))#運行后得到精度#Accuracyoflogisticregressionclassifierontestset:0.77監(jiān)督學習線性模型屬于監(jiān)督學習,是非常可靠的首選算法,適用于非常大的數(shù)據(jù)集,也適用于高維數(shù)據(jù)。實際上,在監(jiān)督學習的模型家族中除了線性模型,還有其他各種模型。支持向量機畫一條直線使得將藍球和紅球進行分開,這條直線就成為支持向量。支持向量在機器學習的分類問題中,有兩個非常類似且平分秋色的方法,一個是前面介紹的線性邏輯回歸,另一個就是支持向量機,兩者在不同的應(yīng)用場景有著不同的表現(xiàn)。對于二分類問題,線性邏輯和支持向量機都是通過訓練具有標簽的二維特征向量來生成模型,區(qū)別僅在于損失函數(shù)的實現(xiàn)上不同。當藍球和紅球樣本交叉混在一起時,使用線性回歸無論怎樣畫出分界線都很難做到正確的分類。不可分情況將藍球在三維空間中提高一些,將紅球降低一些,就可以使用一個平面作為分界面來分類。對于三維空間的樣本來說,支持向量就由一條直線變?yōu)橐粋€平面了。使用高斯核函數(shù)把這些樣本點根據(jù)類別變換到三維空間。高維擴展實現(xiàn)二維支持向量支持向量直線和線性回歸擬合的直線看似相似,但由于損失函數(shù)的不同,他們優(yōu)化的目的也是不同的。邏輯回歸的分類更注重將特征明顯的樣本盡可能最大的正確分類。而對于中間特征模糊的樣本所在區(qū)域,背景色較淺,說明線性回歸對于特征模糊的樣本分類效果不佳。支持向量機不能預(yù)測概率,而是絕對分類。在實際應(yīng)用中,對于小規(guī)模數(shù)據(jù)集,支持向量機的效果要好于線性回歸,但是在大數(shù)據(jù)中,支持向量機的計算復雜度收到限制,而線性回歸因為訓練簡單,使用的頻率更高。支持向量與回歸線的區(qū)別貝葉斯分類器假如一個班級的兩個同學到了做畢業(yè)設(shè)計的時間,他們兩個人能力相同,獨立完成畢業(yè)設(shè)計的概率都為0.8,一位同學去了企業(yè)通過實習來完成畢業(yè)設(shè)計,另一位同學則去了圖書館通過查書籍來完成畢業(yè)設(shè)計。我們對這兩位同學能否完成畢業(yè)設(shè)計來分類(預(yù)測完成的概率),哪一位同學會更容易被分類為能夠完成呢?很明顯是去企業(yè)實習的那位同學,因為他的前提是能夠有更高的概率從企業(yè)拿到畢業(yè)設(shè)計的實際案例。下面我們從統(tǒng)計學的基本概念來說明這個問題。貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。而樸素貝葉斯分類是貝葉斯分類中最簡單,也是常見的一種分類方法。它的基本原理是貝葉斯定理,通俗來說,就是根據(jù)在一個條件下計算發(fā)生某件事的概率。我們拋硬幣,正面朝上和背面朝上的概率是相同的,每個概率都是0.5。如果用事件A表示正面朝上,那么P(A)表示正面朝上的概率,即P(A)=0.5。概率是指用來描述某些不確定問題發(fā)生的可能性,這種可能性用0到1之間的數(shù)值來表示。概率樣本空間表示一個事情發(fā)生的所有可能結(jié)果的集合。拋硬幣結(jié)果的樣本空間為{正面,反面},這個集合稱之為全集。如果是投擲骰子,每個骰子一共有六個面,樣本空間就是{1,2,3,4,5,6},這個空間也是全集。

貝葉斯公式?jīng)Q策樹性別?30歲以上?買不買不買是否是否用于判定是否買房的決策樹決策樹是一個樹每個節(jié)點有兩個以上子節(jié)點最末端的節(jié)點為葉節(jié)點,是最終分類結(jié)果除了葉節(jié)點外的其他節(jié)點代表了樣本特征決策樹生成決策樹模型的生成過程是一個從根節(jié)點到葉節(jié)點不斷深入迭代生成的過程生成決策樹模型產(chǎn)生分類規(guī)則測試模型預(yù)測模型樣本數(shù)據(jù)用戶ID年齡性別收入婚姻狀況是否買房127男15W否否247女30W是是332男12W否否424男45W否是545男30W是否656男32W是是731男15W否否823女30W是否數(shù)據(jù)的特征空間為{年齡,性別,收入,婚姻狀況},而要預(yù)測的分類是一個二分類問題。在決策樹中,級別越高的節(jié)點,它包含的信息量越小,不確定性越大,因此分類越模糊;而級別越低的節(jié)點,它包含的信息量越大,不確定性越小,因此分類就會越具體。根據(jù)決策樹的原理,我們的目的就是要把信息量小的特征盡可能放到級別高的節(jié)點上,把信息量大的特征盡可能放到級別低的節(jié)點上。熵的概念哪個圖我們能夠更明顯的數(shù)出雞蛋的數(shù)量呢?很明顯是第一幅圖,因為它的信息更具體,事物更有序,我們稱它的熵最小。而對于第三張圖,它的信息不明顯,事物更無序,我們稱它的熵最大。熵是一個熱力學概念,用來描述事物的混亂程度,我們可以理解為描述一個信息是否具體。信息增益可以看到,收入這個特征的信息增益最大,所以我們將收入作為根節(jié)點。信息增益就是在某個特征條件下,信息熵減少的程度。直觀的理解是,當我們知道確定某個特征時,由于信息量提高,那么分類的結(jié)果會更加具體,無序程度也就降低了。

選擇特征節(jié)點當生成新的頁節(jié)點時,我們可以看到,在收入大于40w的節(jié)點中,分類只有一種情況-買,這時就可以生成最終節(jié)點“買”;在收入介于10-20w的節(jié)點中,分類也只有一種情況-不買,這時也可以生成最終節(jié)點“不買”。在20-40w這個節(jié)點,分類有多種情況,這時我們對于這個節(jié)點的樣本再次重復決策樹生成的過程就可以。決策樹特點模型容易可視化直觀,容易理解算法不受數(shù)據(jù)縮放影響容易過擬合泛化能力差實際應(yīng)用中,多使用集成方法

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論