版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章從數(shù)據(jù)到智能實(shí)驗(yàn)要求(1)掌握列表的創(chuàng)建、索引、查詢、遍歷等基本操作,建立對列表數(shù)據(jù)結(jié)構(gòu)的理解和應(yīng)用能力。(2)掌握字典的添加、查詢、刪除、遍歷基本操作,建立對字典數(shù)據(jù)結(jié)構(gòu)的理解和應(yīng)用能力。(3)掌握對文本數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換和標(biāo)準(zhǔn)化,以提升數(shù)據(jù)質(zhì)量。(4)掌握對圖像數(shù)據(jù)進(jìn)行裁剪、縮放和旋轉(zhuǎn)的方法,為圖像數(shù)據(jù)增強(qiáng)奠定基礎(chǔ)。6.1數(shù)據(jù)結(jié)構(gòu)探索
列表:存儲有序的元素集合,“位序”是其核心特征。字典:以鍵值對的形式存儲數(shù)據(jù),使數(shù)據(jù)的意義更加明確,易于理解和使用。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()將顏色的處理融入循環(huán)的規(guī)律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()
#從列表取一種顏色程序=數(shù)據(jù)結(jié)構(gòu)+算法colorlist[i]實(shí)驗(yàn)任務(wù)用循環(huán)結(jié)構(gòu)繪制三色樹葉。檢測車輛識別碼的校驗(yàn)位。石頭剪刀布游戲。構(gòu)建爬蟲程序的目標(biāo)網(wǎng)址列表。詩歌反轉(zhuǎn)。匹配花名。銷售數(shù)據(jù)排序與分析。【例6-2】電話號碼段歸屬運(yùn)營商數(shù)據(jù)匯總。設(shè)有電話號碼段及其所屬運(yùn)營商的數(shù)據(jù)編寫程序,將每個運(yùn)營商的電話號碼段匯總至一個列表中,組織為新的字典phone_location={'130':'中國移動','131':'中國移動','132':'中國移動','133':'中國電信','134':'中國移動','135':'中國移動','136':'中國移動','137':'中國移動','138':'中國移動','139':'中國移動','150':'中國聯(lián)通','151':'中國聯(lián)通','152':'中國聯(lián)通','153':'中國聯(lián)通','154':'中國移動','155':'中國聯(lián)通','156':'中國聯(lián)通','157':'中國移動','158':'中國移動','159':'中國移動',}{'中國移動':['130','131','132','134','135','136','137','138','139','154','157','158','159'],'中國電信':['133'],'中國聯(lián)通':['150','151','152','153','155','156']}【例6-2】電話號碼段歸屬運(yùn)營商數(shù)據(jù)匯總。編程要點(diǎn)字典的鍵:運(yùn)營商名字字典的值:列表初值:[]其他:append()添加元素phone_segments={}forphone,locationinphone_location.items():
iflocationinphone_segments:#鍵值對已存在
phone_segments[location].append(phone)#獲取鍵值對,并向列表添加數(shù)據(jù)
else:
phone_segments[location]=[]#創(chuàng)建新的鍵值對
phone_segments[location].append(phone)#獲取該鍵值對,添加數(shù)據(jù)forphone,locationinphone_location.items():
phone_segments.setdefault(location,[]).append(phone)實(shí)驗(yàn)任務(wù)按分?jǐn)?shù)段統(tǒng)計學(xué)生人數(shù)。平均成績統(tǒng)計。將每個班級的平均成績匯總到一個字典中,并對其按照平均成績升序排列后輸出。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實(shí)驗(yàn)任務(wù)產(chǎn)品銷售量統(tǒng)計。將每個產(chǎn)品的總銷售量匯總到一個字典中,并對其按照銷售量降序排列后輸出。sales_data=[{'product':'筆記本電腦','amount':1200},{'product':'智能手機(jī)','amount':800},{'product':'筆記本電腦','amount':1500},{'product':'平板電腦','amount':300},{'product':'智能手機(jī)','amount':600}]筆記本電腦:2700智能手機(jī):1400平板電腦:300實(shí)驗(yàn)任務(wù)客戶訂單統(tǒng)計。統(tǒng)計每個客戶的訂單總數(shù)和總金額,將其匯總到一個字典中,并輸出。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數(shù)據(jù)清洗文本去除噪聲:去除標(biāo)點(diǎn)符號、去除特殊字符、文本小寫化、去除冗余空格等文本標(biāo)準(zhǔn)化:統(tǒng)一日期、貨幣等格式去除重復(fù)處理缺失值:刪除或者填充正則表達(dá)式和re庫正則表達(dá)式(RegularExpression):一種用于匹配字符串中字符組合的模式,廣泛應(yīng)用于文本處理、數(shù)據(jù)驗(yàn)證、搜索和替換等場景。正則表達(dá)式在數(shù)據(jù)清洗中發(fā)揮著關(guān)鍵作用,主要用于數(shù)據(jù)驗(yàn)證、提取、清理和標(biāo)準(zhǔn)化。它能夠驗(yàn)證數(shù)據(jù)格式的正確性,如檢查電子郵件和電話號碼,提取關(guān)鍵信息,去除不必要的字符,統(tǒng)一不同格式的數(shù)據(jù),以及識別和去除重復(fù)記錄。通過靈活的模式匹配,正則表達(dá)式提升了數(shù)據(jù)處理的效率和準(zhǔn)確性,確保最終數(shù)據(jù)集的質(zhì)量和可用性。正則表達(dá)式和re庫正則表達(dá)式常用預(yù)定義字符預(yù)定義字符說明預(yù)定義字符說明\d匹配數(shù)字0~9中的任意一個\D匹配非數(shù)字0~9\s匹配\t、\n、\r等空白符\S匹配非空白符\w匹配數(shù)字0~9,字母a~z和A~Z,下畫線\W匹配非數(shù)字和字母正則表達(dá)式和re庫在Python中,正則表達(dá)式處理是通過標(biāo)準(zhǔn)庫re實(shí)現(xiàn)。re庫提供了許多用于正則表達(dá)式匹配、替換、搜索等功能的函數(shù)。正則表達(dá)式和re庫re.sub(pattern,repl,string,count=0,flags=0):用于替換字符串string中與模式pattern匹配的部分,返回替換后的新字符串。count為可選參數(shù),默認(rèn)為0,表示替換所有匹配的部分。#1.特殊符號清洗
forchin",*.()":
txt=txt.replace(ch,"")importre
txt=re.sub(r"[,*.()]","",txt)示例:統(tǒng)一電話號碼格式importre
phone_numbers=['01062337890','010-6233-7890','(010)6233-7890','010.6233.7890','01062337890']
formatted_numbers=[]forphoneinphone_numbers:#遍歷電話號碼列表并格式化
#使用正則表達(dá)式去除所有非數(shù)字
digits=re.sub(r'\D','',phone)
#將純數(shù)字組成的字符串按照3-4-4的組成進(jìn)行格式化
formatted_numbers.append(
"({}){}-{}".format(digits[:3],digits[3:7],digits[7:]))示例:處理缺失值—刪除法刪除數(shù)據(jù)集中年齡缺失的記錄students_cleaned=[]forstudentinstudents:ifstudent["年齡"]isnotNone:students_cleaned.append(student)刪除“家庭住址”字段forstudentinstudents:
if"家庭住址"instudent:
delstudent["家庭住址"]示例:處理缺失值—填充法對數(shù)據(jù)集中的成績?nèi)笔?,使用平均值填?計算已有成績的平均值sum_grade=0count=0forstudentinstudents:
ifstudent["成績"]isnotNone:
sum_grade+=student["成績"]
count+=1mean_grade=sum_grade/count
#用平均值填充成績?nèi)笔У膶W(xué)生記錄forstudentinstudents:
ifstudent["成績"]isNone:
student["成績"]=mean_grade示例:處理缺失值—填充法對數(shù)據(jù)集中的年齡缺失,使用中位數(shù)填充#提取所有已知年齡的值ages=[]forstudentinstudents:
ifstudent["年齡"]isnotNone:
ages.append(student["年齡"])
#計算已知年齡的中位數(shù)ages.sort()
#對年齡進(jìn)行排序n=len(ages)ifn%2==1:
#奇數(shù)個元素,取中間值
median_age=ages[n//2]else:
#偶數(shù)個元素,取中間兩個數(shù)的平均值
median_age=(ages[n//2-1]+ages[n//2])/2#用中位數(shù)填充年齡缺失的學(xué)生記錄forstudentinstudents:
ifstudent["年齡"]isNone:
student["年齡"]=median_age示例:處理缺失值—填充法對數(shù)據(jù)集中的性別缺失,使用眾數(shù)填充#提取所有已知性別的值genders=[]forstudentinstudents:
ifstudent["性別"]isnotNone:
genders.append(student["性別"])
#計算眾數(shù)gender_counts={}forgenderingenders:
gender_counts[gender]=gender_counts.get(gender,0)+1
示例:處理缺失值—填充法對數(shù)據(jù)集中的性別缺失,使用眾數(shù)填充#找到出現(xiàn)次數(shù)最多的性別most_common_gender=Nonemax_count=0forgender,countingender_counts.items():
ifcount>max_count:
most_common_gender=gender
max_count=count#用眾數(shù)填充性別缺失的學(xué)生記錄forstudentinstudents:
ifstudent["性別"]isNone:
student["性別"]=most_common_gender實(shí)驗(yàn)任務(wù)詞頻統(tǒng)計。中文文本去除噪聲。數(shù)據(jù)集中訂單日期和訂單金額的標(biāo)準(zhǔn)化處理。數(shù)據(jù)的缺失處理。刪除缺失值較多的員工“E009”對應(yīng)的數(shù)據(jù)。用平均值填充“年齡”列中的缺失值。用眾數(shù)填充“性別”列中的缺失值。用中位數(shù)填充“薪水”列中的缺失值。6.3數(shù)據(jù)增強(qiáng)圖像數(shù)據(jù)增強(qiáng)幾何變換:旋轉(zhuǎn)、平移、縮放、裁剪、翻轉(zhuǎn)、仿射變換、透視變換顏色變化:亮度、對比度、飽和度、色調(diào)等調(diào)整噪聲添加:高斯噪聲、椒鹽噪聲模糊:高斯模糊、均值模糊、運(yùn)動模糊噪聲處理與去噪:濾波器……OpenCV基礎(chǔ)知識OpenCV(OpenSourceComputerVisionLibrary):由Intel公司支持開發(fā)的一個開源計算機(jī)視覺處理庫(Python第三方庫),專注于圖像處理和計算機(jī)視覺的高級功能。安裝第三方庫方法在控制臺可以使用pip.exe命令:路徑已加入環(huán)境變量PATH安裝第三方庫方法在VSCode中創(chuàng)建虛擬環(huán)境,并激活虛擬環(huán)境,在虛擬環(huán)境下安裝第三方庫,防止不同應(yīng)用間的依賴庫沖突創(chuàng)建虛擬環(huán)境python–mvenv.venv激活虛擬環(huán)境.venv\scripts\activate安裝第三方庫方法國內(nèi)鏡像來源鏡像地址清華大學(xué)/simple阿里云/pypi/simple網(wǎng)易/pypi/simplepipinstallopencv-python
-i/simpleOpenCV常用圖像數(shù)據(jù)處理操作說明及示例讀取圖像數(shù)據(jù)默認(rèn)讀取三通道彩色圖像,數(shù)據(jù)存儲在NumPy的三維數(shù)組中,每個通道占一個維度,順序?yàn)锽、G、R。示例:img=cv2.imread(文件名)查看圖像數(shù)據(jù)的規(guī)模用“數(shù)組名.shape”查看,結(jié)果為元組,依次為圖像的高度、寬度、通道數(shù)。示例:img.shape,結(jié)果為(600,800,3)代表圖像高度為600像素,寬度為800像素,有B、G、R三通道的顏色值,其中,img.shape[0]為600,表示圖像高度;img.shape[1]為800,表示圖像寬度讀取每個通道數(shù)據(jù)數(shù)組[行切片,列切片,通道索引],切片中僅出現(xiàn)冒號“:”代表所有,所有行或者所有列。示例:img[:,:,0]代表藍(lán)色(B)通道中所有數(shù)據(jù)img[:,:,1]代表綠色(G)通道中所有數(shù)據(jù)img[:,:,2]代表紅色(R)通道中所有數(shù)據(jù)讀取指定像素點(diǎn)數(shù)據(jù)數(shù)組[行索引,列索引],示例:img[0,0],這代表第0行第0列的像素點(diǎn)數(shù)據(jù),其結(jié)果為三元組,分別為該像素點(diǎn)的B、G、R的顏色值向指定位置寫入數(shù)據(jù)數(shù)組[行索引,列索引]=(B,G,R),將包含B、G、R顏色值的像素點(diǎn)數(shù)據(jù)寫入圖像數(shù)組的指定位置創(chuàng)建圖像使用數(shù)組創(chuàng)建指定格式的圖像文件,示例:cv2.imwrite(文件名,數(shù)組)顯示圖像將數(shù)組以圖像的形式呈現(xiàn)在窗口中,示例:cv2.imshow(窗口標(biāo)題字符串,數(shù)組)【例6-3】圖像的鏡像處理。讀取原圖創(chuàng)建新的目標(biāo)數(shù)組生成鏡像圖逐像素地遍歷原圖原圖的每個像素復(fù)制到目標(biāo)圖像的右半部分,從而形成鏡像效果importcv2importnumpyasnp
#讀取原圖img=cv2.imread('image.jpg')
#獲取圖像信息imgInfo=img.shapeheight=imgInfo[0]width=imgInfo[1]channels=imgInfo[2]
#初始化目標(biāo)圖像數(shù)組dst=np.zeros([height,
width*2+1,channels],np.uint8)
#對原圖進(jìn)行逐像素計算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)
#顯示目標(biāo)圖像cv2.imshow('image',dst)
#在顯示圖像后等待用戶操作,再關(guān)閉窗口cv2.waitKey(0)cv2.destroyAllWindows()實(shí)驗(yàn)任務(wù)圖像顏色變換,總結(jié)圖像中各通道的意義。圖像裁剪,從一張完整的圖像中按照指定的區(qū)域或大小選擇并提取出感興趣的部分。實(shí)驗(yàn)任務(wù)升級版圖像的鏡像處理。根據(jù)圖像的寬高特征,選擇鏡像軸:如果圖像的寬度大于高度,則在垂直方向上鏡像;反之,則在水平方向上鏡像。圖像縮放圖像縮放是一種常見的圖像處理技術(shù),廣泛應(yīng)用于多個領(lǐng)域。例如,在網(wǎng)頁設(shè)計中,圖像需要根據(jù)不同的設(shè)備(如手機(jī)、平板、桌面)進(jìn)行縮放,以確保良好的用戶體驗(yàn)。在醫(yī)學(xué)成像(如MRI或CT)中,圖像縮放可以幫助醫(yī)生觀察特定區(qū)域的細(xì)節(jié),進(jìn)行更準(zhǔn)確的診斷。在地圖應(yīng)用中,用戶可以縮放地圖以查看不同的地理細(xì)節(jié),從而獲取更具體的信息,如街道、建筑物等。在機(jī)器學(xué)習(xí)和計算機(jī)視覺領(lǐng)域,圖像縮放是預(yù)處理步驟之一,以便將輸入圖像調(diào)整到統(tǒng)一的大小,從而提高模型的訓(xùn)練效率和識別效果。此外,在訓(xùn)練過程中隨機(jī)改變圖像的大小也是一種常見的數(shù)據(jù)增強(qiáng)技術(shù),這可以增加訓(xùn)練數(shù)據(jù)的多樣性,幫助模型更好地泛化,減少過擬合。這樣的做法有助于提升模型在未見數(shù)據(jù)上的表現(xiàn)。OpenCV的resize()函數(shù)參數(shù)和返回值說明src原圖,通常是一個NumPy數(shù)組dsize元組數(shù)據(jù)(width,height),代表輸出圖像的大小。如果這個參數(shù)不為(0,0)或者None,則代表將原圖縮放到dsize指定的大?。环駝t,原圖縮放之后的大小由fx和fy兩個參數(shù)決定,通過下面的公式來計算:dsize=(round(fx*src.cols),round(fy*src.rows))fx和fy分別代表圖像在width方向和height方向上的縮放比例interpolation因?yàn)閳D像縮放后,很多像素在原圖中是沒有定義的,所以需要利用插值算法計算這些虛擬的像素。該參數(shù)用于指定圖像縮放時的插值算法:cv2.INTER_LINEAR為雙線性插值(默認(rèn));cv2.INTER_AREA為區(qū)域插值;cv2.INTER_CUBIC為4×4像素鄰域內(nèi)的雙立方插值;cv2.INTER_NEAREST為最鄰近插值算法返回值一個NumPy數(shù)組,存儲縮放后的圖像OpenCV的resize()函數(shù)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()圖像旋轉(zhuǎn)圖像旋轉(zhuǎn)是指將圖像圍繞其中心點(diǎn)或指定的點(diǎn)進(jìn)行旋轉(zhuǎn)。作為一種數(shù)據(jù)增強(qiáng)技術(shù),圖像旋轉(zhuǎn)能夠提升模型的多樣性、魯棒性和泛化能力,使其在現(xiàn)實(shí)世界中更有效地處理不同方向和視角下的圖像。在現(xiàn)實(shí)場景中,圖像往往并不總是對齊或處于標(biāo)準(zhǔn)方向的。通過引入不同角度的旋轉(zhuǎn),模型能夠?qū)W習(xí)如何應(yīng)對不同方向和視角下的對象,從而增強(qiáng)其對傾斜圖像的識別能力。此外,圖像旋轉(zhuǎn)有助于增加訓(xùn)練集的多樣性。即使原始數(shù)據(jù)中僅包含一種角度的圖像,通過旋轉(zhuǎn)或傾斜處理,模型可以接觸到更多不同角度的圖像變換,從而降低過擬合的風(fēng)險。在許多實(shí)際應(yīng)用場景中,例如,自動駕駛和醫(yī)學(xué)圖像分析,圖像的角度和方向常常受到攝像頭位置、觀察者視角或其他因素的影響。通過圖像旋轉(zhuǎn),模型可以學(xué)習(xí)如何從各種可能的角度進(jìn)行識別,這對于提高模型在實(shí)際應(yīng)用中的性能至關(guān)重要。OpenCV圖像旋轉(zhuǎn)方法rotate():進(jìn)行固定角度的旋轉(zhuǎn)(90°、180°)參數(shù)和返回值說明src原圖,通常是一個NumPy數(shù)組rotateCode旋轉(zhuǎn)代碼,指定旋轉(zhuǎn)的方向和角度:cv2.ROTATE_90_CLOCKWISE為順時針旋轉(zhuǎn)90°cv2.ROTATE_90_COUNTERCLOCKWISE為逆時針旋轉(zhuǎn)9
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠區(qū)消防安全管理制度
- 第三方物流企業(yè)標(biāo)準(zhǔn)化管理制度
- 化工廠車間消防安全管理制度與化工廠防火防爆防塵防毒管理制度
- 特種設(shè)備技術(shù)檔案管理制度詳細(xì)版
- 2026年電動工具電池回收技術(shù)創(chuàng)新報告
- 2026年信息安全技術(shù)與網(wǎng)絡(luò)安全防護(hù)考試題
- 2026年環(huán)境保護(hù)法規(guī)與政策考試練習(xí)題
- 2026年度煙臺萊州市事業(yè)單位公開招聘工作人員備考題庫有答案詳解
- 2025年漯河市審計局所屬事業(yè)單位人才引進(jìn)1名備考題庫及一套參考答案詳解
- 企業(yè)團(tuán)隊(duì)溝通流程模板提高協(xié)作效率
- 2026重慶高新開發(fā)建設(shè)投資集團(tuán)招聘3人備考考試試題及答案解析
- 老年人管理人員培訓(xùn)制度
- 2025年湖南常德市鼎城區(qū)面向全市選調(diào)8名公務(wù)員備考題庫及答案詳解(新)
- 2026年高考時事政治時事政治考試題庫及答案(名校卷)
- 2026四川成都市錦江區(qū)國有企業(yè)招聘18人筆試備考試題及答案解析
- 特種工安全崗前培訓(xùn)課件
- 2026屆福建省三明市第一中學(xué)高三上學(xué)期12月月考?xì)v史試題(含答案)
- (正式版)DB51∕T 3342-2025 《爐灶用合成液體燃料經(jīng)營管理規(guī)范》
- 2026北京海淀初三上學(xué)期期末語文試卷和答案
- 2025學(xué)年度人教PEP五年級英語上冊期末模擬考試試卷(含答案含聽力原文)
- 醫(yī)院醫(yī)院醫(yī)院后勤管理
評論
0/150
提交評論