人工智能通識實踐教程 課件 第6章 從數據到智能_第1頁
人工智能通識實踐教程 課件 第6章 從數據到智能_第2頁
人工智能通識實踐教程 課件 第6章 從數據到智能_第3頁
人工智能通識實踐教程 課件 第6章 從數據到智能_第4頁
人工智能通識實踐教程 課件 第6章 從數據到智能_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章從數據到智能實驗要求(1)掌握列表的創建、索引、查詢、遍歷等基本操作,建立對列表數據結構的理解和應用能力。(2)掌握字典的添加、查詢、刪除、遍歷基本操作,建立對字典數據結構的理解和應用能力。(3)掌握對文本數據進行清洗、轉換和標準化,以提升數據質量。(4)掌握對圖像數據進行裁剪、縮放和旋轉的方法,為圖像數據增強奠定基礎。6.1數據結構探索

列表:存儲有序的元素集合,“位序”是其核心特征。字典:以鍵值對的形式存儲數據,使數據的意義更加明確,易于理解和使用。foriin

range(4):

turtle.forward(100)turtle.right(90)importturtleturtle.pensize(5)foriin

range(4):

ifi==0:

turtle.pencolor("red")

elifi==1:

turtle.pencolor("yellow")

elifi==2:

turtle.pencolor("blue")

else:

turtle.pencolor("green")

turtle.forward(100)

turtle.right(90)turtle.exitonclick()將顏色的處理融入循環的規律0123"red""yellow""blue""green"0123"red""yellow""blue""green"【例6-1】使用turtle庫繪制彩色正方形。importturtleturtle.pensize(5)foriin

range(4):

turtle.forward(100)turtle.left(90)turtle.done()colorlist=["red","yellow","blue","green"]turtle.pencolor()

#從列表取一種顏色程序=數據結構+算法colorlist[i]實驗任務用循環結構繪制三色樹葉。檢測車輛識別碼的校驗位。石頭剪刀布游戲。構建爬蟲程序的目標網址列表。詩歌反轉。匹配花名。銷售數據排序與分析。【例6-2】電話號碼段歸屬運營商數據匯總。設有電話號碼段及其所屬運營商的數據編寫程序,將每個運營商的電話號碼段匯總至一個列表中,組織為新的字典phone_location={'130':'中國移動','131':'中國移動','132':'中國移動','133':'中國電信','134':'中國移動','135':'中國移動','136':'中國移動','137':'中國移動','138':'中國移動','139':'中國移動','150':'中國聯通','151':'中國聯通','152':'中國聯通','153':'中國聯通','154':'中國移動','155':'中國聯通','156':'中國聯通','157':'中國移動','158':'中國移動','159':'中國移動',}{'中國移動':['130','131','132','134','135','136','137','138','139','154','157','158','159'],'中國電信':['133'],'中國聯通':['150','151','152','153','155','156']}【例6-2】電話號碼段歸屬運營商數據匯總。編程要點字典的鍵:運營商名字字典的值:列表初值:[]其他:append()添加元素phone_segments={}forphone,locationinphone_location.items():

iflocationinphone_segments:#鍵值對已存在

phone_segments[location].append(phone)#獲取鍵值對,并向列表添加數據

else:

phone_segments[location]=[]#創建新的鍵值對

phone_segments[location].append(phone)#獲取該鍵值對,添加數據forphone,locationinphone_location.items():

phone_segments.setdefault(location,[]).append(phone)實驗任務按分數段統計學生人數。平均成績統計。將每個班級的平均成績匯總到一個字典中,并對其按照平均成績升序排列后輸出。grades={'ClassA':[85,90,78,92,88,76,95,89,84,91],'ClassB':[88,76,95,89,82,94,91,87,85,90],'ClassC':[90,91,85,87,93,88,84,92,89,86],'ClassD':[75,80,82,78,85,90,88,92,84,91]}ClassD:84.50ClassA:86.80ClassB:87.70ClassC:88.50實驗任務產品銷售量統計。將每個產品的總銷售量匯總到一個字典中,并對其按照銷售量降序排列后輸出。sales_data=[{'product':'筆記本電腦','amount':1200},{'product':'智能手機','amount':800},{'product':'筆記本電腦','amount':1500},{'product':'平板電腦','amount':300},{'product':'智能手機','amount':600}]筆記本電腦:2700智能手機:1400平板電腦:300實驗任務客戶訂單統計。統計每個客戶的訂單總數和總金額,將其匯總到一個字典中,并輸出。orders=[{'customer':'李偉','amount':250.00},{'customer':'王芳','amount':150.50},{'customer':'李偉','amount':100.00},{'customer':'許晴','amount':300.75},{'customer':'王芳','amount':200.00}]{'李偉':{'count':2,'total':350.0萬},'王芳':{'count':2,'total':350.5萬},'許晴':{'count':1,'total':300.75萬}}6.2數據清洗文本去除噪聲:去除標點符號、去除特殊字符、文本小寫化、去除冗余空格等文本標準化:統一日期、貨幣等格式去除重復處理缺失值:刪除或者填充正則表達式和re庫正則表達式(RegularExpression):一種用于匹配字符串中字符組合的模式,廣泛應用于文本處理、數據驗證、搜索和替換等場景。正則表達式在數據清洗中發揮著關鍵作用,主要用于數據驗證、提取、清理和標準化。它能夠驗證數據格式的正確性,如檢查電子郵件和電話號碼,提取關鍵信息,去除不必要的字符,統一不同格式的數據,以及識別和去除重復記錄。通過靈活的模式匹配,正則表達式提升了數據處理的效率和準確性,確保最終數據集的質量和可用性。正則表達式和re庫正則表達式常用預定義字符預定義字符說明預定義字符說明\d匹配數字0~9中的任意一個\D匹配非數字0~9\s匹配\t、\n、\r等空白符\S匹配非空白符\w匹配數字0~9,字母a~z和A~Z,下畫線\W匹配非數字和字母正則表達式和re庫在Python中,正則表達式處理是通過標準庫re實現。re庫提供了許多用于正則表達式匹配、替換、搜索等功能的函數。正則表達式和re庫re.sub(pattern,repl,string,count=0,flags=0):用于替換字符串string中與模式pattern匹配的部分,返回替換后的新字符串。count為可選參數,默認為0,表示替換所有匹配的部分。#1.特殊符號清洗

forchin",*.()":

txt=txt.replace(ch,"")importre

txt=re.sub(r"[,*.()]","",txt)示例:統一電話號碼格式importre

phone_numbers=['01062337890','010-6233-7890','(010)6233-7890','010.6233.7890','01062337890']

formatted_numbers=[]forphoneinphone_numbers:#遍歷電話號碼列表并格式化

#使用正則表達式去除所有非數字

digits=re.sub(r'\D','',phone)

#將純數字組成的字符串按照3-4-4的組成進行格式化

formatted_numbers.append(

"({}){}-{}".format(digits[:3],digits[3:7],digits[7:]))示例:處理缺失值—刪除法刪除數據集中年齡缺失的記錄students_cleaned=[]forstudentinstudents:ifstudent["年齡"]isnotNone:students_cleaned.append(student)刪除“家庭住址”字段forstudentinstudents:

if"家庭住址"instudent:

delstudent["家庭住址"]示例:處理缺失值—填充法對數據集中的成績缺失,使用平均值填充#計算已有成績的平均值sum_grade=0count=0forstudentinstudents:

ifstudent["成績"]isnotNone:

sum_grade+=student["成績"]

count+=1mean_grade=sum_grade/count

#用平均值填充成績缺失的學生記錄forstudentinstudents:

ifstudent["成績"]isNone:

student["成績"]=mean_grade示例:處理缺失值—填充法對數據集中的年齡缺失,使用中位數填充#提取所有已知年齡的值ages=[]forstudentinstudents:

ifstudent["年齡"]isnotNone:

ages.append(student["年齡"])

#計算已知年齡的中位數ages.sort()

#對年齡進行排序n=len(ages)ifn%2==1:

#奇數個元素,取中間值

median_age=ages[n//2]else:

#偶數個元素,取中間兩個數的平均值

median_age=(ages[n//2-1]+ages[n//2])/2#用中位數填充年齡缺失的學生記錄forstudentinstudents:

ifstudent["年齡"]isNone:

student["年齡"]=median_age示例:處理缺失值—填充法對數據集中的性別缺失,使用眾數填充#提取所有已知性別的值genders=[]forstudentinstudents:

ifstudent["性別"]isnotNone:

genders.append(student["性別"])

#計算眾數gender_counts={}forgenderingenders:

gender_counts[gender]=gender_counts.get(gender,0)+1

示例:處理缺失值—填充法對數據集中的性別缺失,使用眾數填充#找到出現次數最多的性別most_common_gender=Nonemax_count=0forgender,countingender_counts.items():

ifcount>max_count:

most_common_gender=gender

max_count=count#用眾數填充性別缺失的學生記錄forstudentinstudents:

ifstudent["性別"]isNone:

student["性別"]=most_common_gender實驗任務詞頻統計。中文文本去除噪聲。數據集中訂單日期和訂單金額的標準化處理。數據的缺失處理。刪除缺失值較多的員工“E009”對應的數據。用平均值填充“年齡”列中的缺失值。用眾數填充“性別”列中的缺失值。用中位數填充“薪水”列中的缺失值。6.3數據增強圖像數據增強幾何變換:旋轉、平移、縮放、裁剪、翻轉、仿射變換、透視變換顏色變化:亮度、對比度、飽和度、色調等調整噪聲添加:高斯噪聲、椒鹽噪聲模糊:高斯模糊、均值模糊、運動模糊噪聲處理與去噪:濾波器……OpenCV基礎知識OpenCV(OpenSourceComputerVisionLibrary):由Intel公司支持開發的一個開源計算機視覺處理庫(Python第三方庫),專注于圖像處理和計算機視覺的高級功能。安裝第三方庫方法在控制臺可以使用pip.exe命令:路徑已加入環境變量PATH安裝第三方庫方法在VSCode中創建虛擬環境,并激活虛擬環境,在虛擬環境下安裝第三方庫,防止不同應用間的依賴庫沖突創建虛擬環境python–mvenv.venv激活虛擬環境.venv\scripts\activate安裝第三方庫方法國內鏡像來源鏡像地址清華大學/simple阿里云/pypi/simple網易/pypi/simplepipinstallopencv-python

-i/simpleOpenCV常用圖像數據處理操作說明及示例讀取圖像數據默認讀取三通道彩色圖像,數據存儲在NumPy的三維數組中,每個通道占一個維度,順序為B、G、R。示例:img=cv2.imread(文件名)查看圖像數據的規模用“數組名.shape”查看,結果為元組,依次為圖像的高度、寬度、通道數。示例:img.shape,結果為(600,800,3)代表圖像高度為600像素,寬度為800像素,有B、G、R三通道的顏色值,其中,img.shape[0]為600,表示圖像高度;img.shape[1]為800,表示圖像寬度讀取每個通道數據數組[行切片,列切片,通道索引],切片中僅出現冒號“:”代表所有,所有行或者所有列。示例:img[:,:,0]代表藍色(B)通道中所有數據img[:,:,1]代表綠色(G)通道中所有數據img[:,:,2]代表紅色(R)通道中所有數據讀取指定像素點數據數組[行索引,列索引],示例:img[0,0],這代表第0行第0列的像素點數據,其結果為三元組,分別為該像素點的B、G、R的顏色值向指定位置寫入數據數組[行索引,列索引]=(B,G,R),將包含B、G、R顏色值的像素點數據寫入圖像數組的指定位置創建圖像使用數組創建指定格式的圖像文件,示例:cv2.imwrite(文件名,數組)顯示圖像將數組以圖像的形式呈現在窗口中,示例:cv2.imshow(窗口標題字符串,數組)【例6-3】圖像的鏡像處理。讀取原圖創建新的目標數組生成鏡像圖逐像素地遍歷原圖原圖的每個像素復制到目標圖像的右半部分,從而形成鏡像效果importcv2importnumpyasnp

#讀取原圖img=cv2.imread('image.jpg')

#獲取圖像信息imgInfo=img.shapeheight=imgInfo[0]width=imgInfo[1]channels=imgInfo[2]

#初始化目標圖像數組dst=np.zeros([height,

width*2+1,channels],np.uint8)

#對原圖進行逐像素計算foriinrange(height):

forjinrange(width):

dst[i,j]=img[i,j]#原圖

dst[i,width*2-j]=img[i,j]#鏡像圖

#在原圖、鏡像圖的中間畫一條綠色分割線foriinrange(height):

dst[i,width]=(0,255,0)

#顯示目標圖像cv2.imshow('image',dst)

#在顯示圖像后等待用戶操作,再關閉窗口cv2.waitKey(0)cv2.destroyAllWindows()實驗任務圖像顏色變換,總結圖像中各通道的意義。圖像裁剪,從一張完整的圖像中按照指定的區域或大小選擇并提取出感興趣的部分。實驗任務升級版圖像的鏡像處理。根據圖像的寬高特征,選擇鏡像軸:如果圖像的寬度大于高度,則在垂直方向上鏡像;反之,則在水平方向上鏡像。圖像縮放圖像縮放是一種常見的圖像處理技術,廣泛應用于多個領域。例如,在網頁設計中,圖像需要根據不同的設備(如手機、平板、桌面)進行縮放,以確保良好的用戶體驗。在醫學成像(如MRI或CT)中,圖像縮放可以幫助醫生觀察特定區域的細節,進行更準確的診斷。在地圖應用中,用戶可以縮放地圖以查看不同的地理細節,從而獲取更具體的信息,如街道、建筑物等。在機器學習和計算機視覺領域,圖像縮放是預處理步驟之一,以便將輸入圖像調整到統一的大小,從而提高模型的訓練效率和識別效果。此外,在訓練過程中隨機改變圖像的大小也是一種常見的數據增強技術,這可以增加訓練數據的多樣性,幫助模型更好地泛化,減少過擬合。這樣的做法有助于提升模型在未見數據上的表現。OpenCV的resize()函數參數和返回值說明src原圖,通常是一個NumPy數組dsize元組數據(width,height),代表輸出圖像的大小。如果這個參數不為(0,0)或者None,則代表將原圖縮放到dsize指定的大小;否則,原圖縮放之后的大小由fx和fy兩個參數決定,通過下面的公式來計算:dsize=(round(fx*src.cols),round(fy*src.rows))fx和fy分別代表圖像在width方向和height方向上的縮放比例interpolation因為圖像縮放后,很多像素在原圖中是沒有定義的,所以需要利用插值算法計算這些虛擬的像素。該參數用于指定圖像縮放時的插值算法:cv2.INTER_LINEAR為雙線性插值(默認);cv2.INTER_AREA為區域插值;cv2.INTER_CUBIC為4×4像素鄰域內的雙立方插值;cv2.INTER_NEAREST為最鄰近插值算法返回值一個NumPy數組,存儲縮放后的圖像OpenCV的resize()函數importcv2#讀取圖像image=cv2.imread('image.jpg')#縮小圖像resized_image=cv2.resize(image,(200,300))#顯示圖像cv2.imshow('OriginalImage',image)cv2.imshow('ResizedImage',resized_image)cv2.waitKey(0)cv2.destroyAllWindows()圖像旋轉圖像旋轉是指將圖像圍繞其中心點或指定的點進行旋轉。作為一種數據增強技術,圖像旋轉能夠提升模型的多樣性、魯棒性和泛化能力,使其在現實世界中更有效地處理不同方向和視角下的圖像。在現實場景中,圖像往往并不總是對齊或處于標準方向的。通過引入不同角度的旋轉,模型能夠學習如何應對不同方向和視角下的對象,從而增強其對傾斜圖像的識別能力。此外,圖像旋轉有助于增加訓練集的多樣性。即使原始數據中僅包含一種角度的圖像,通過旋轉或傾斜處理,模型可以接觸到更多不同角度的圖像變換,從而降低過擬合的風險。在許多實際應用場景中,例如,自動駕駛和醫學圖像分析,圖像的角度和方向常常受到攝像頭位置、觀察者視角或其他因素的影響。通過圖像旋轉,模型可以學習如何從各種可能的角度進行識別,這對于提高模型在實際應用中的性能至關重要。OpenCV圖像旋轉方法rotate():進行固定角度的旋轉(90°、180°)參數和返回值說明src原圖,通常是一個NumPy數組rotateCode旋轉代碼,指定旋轉的方向和角度:cv2.ROTATE_90_CLOCKWISE為順時針旋轉90°cv2.ROTATE_90_COUNTERCLOCKWISE為逆時針旋轉9

溫馨提示

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

評論

0/150

提交評論