新聞中心
高斯函數(shù)
高斯函數(shù)
站在用戶的角度思考問題,與客戶深入溝通,找到隴川網(wǎng)站設(shè)計(jì)與隴川網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋隴川地區(qū)。
設(shè)x∈R , 用 [x]表示不超過x 的最大整數(shù)則 y= [x] 稱為高斯函數(shù),也叫取整函數(shù)。
任意一個(gè)實(shí)數(shù)都能寫成整數(shù)部分與非負(fù)純小數(shù)之和,即:x= [x] + α(0α1) ,所以有:[x]=x[x]+1 ,這里[x] 是 x的整數(shù)部分,而= x- [x] 是x 的小數(shù)部分。
y=〔x〕叫高斯函數(shù),記號(hào)〔x〕表示不超過x的最大整數(shù).如 ?〔-0.128〕?=-1,〔19.98〕=19等等.含有記號(hào)〔x〕的數(shù)學(xué)問題,一方面因?yàn)樗钦麛?shù),所以經(jīng)常與數(shù)論問題聯(lián)系在一起,另一方面因?yàn)椤瞲〕滿足不等式x-1<〔x〕≤x<〔x〕+1,因而借助于不等式又容易使問題得到解決。
建議收藏!10 種 Python 聚類算法完整操作示例
聚類或聚類分析是無監(jiān)督學(xué)習(xí)問題。它通常被用作數(shù)據(jù)分析技術(shù),用于發(fā)現(xiàn)數(shù)據(jù)中的有趣模式,例如基于其行為的客戶群。有許多聚類算法可供選擇,對(duì)于所有情況,沒有單一的最佳聚類算法。相反,最好探索一系列聚類算法以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python 中安裝和使用頂級(jí)聚類算法。完成本教程后,你將知道:
聚類分析,即聚類,是一項(xiàng)無監(jiān)督的機(jī)器學(xué)習(xí)任務(wù)。它包括自動(dòng)發(fā)現(xiàn)數(shù)據(jù)中的自然分組。與監(jiān)督學(xué)習(xí)(類似預(yù)測建模)不同,聚類算法只解釋輸入數(shù)據(jù),并在特征空間中找到自然組或群集。
群集通常是特征空間中的密度區(qū)域,其中來自域的示例(觀測或數(shù)據(jù)行)比其他群集更接近群集。群集可以具有作為樣本或點(diǎn)特征空間的中心(質(zhì)心),并且可以具有邊界或范圍。
聚類可以作為數(shù)據(jù)分析活動(dòng)提供幫助,以便了解更多關(guān)于問題域的信息,即所謂的模式發(fā)現(xiàn)或知識(shí)發(fā)現(xiàn)。例如:
聚類還可用作特征工程的類型,其中現(xiàn)有的和新的示例可被映射并標(biāo)記為屬于數(shù)據(jù)中所標(biāo)識(shí)的群集之一。雖然確實(shí)存在許多特定于群集的定量措施,但是對(duì)所識(shí)別的群集的評(píng)估是主觀的,并且可能需要領(lǐng)域?qū)<摇Mǔ?,聚類算法在人工合成?shù)據(jù)集上與預(yù)先定義的群集進(jìn)行學(xué)術(shù)比較,預(yù)計(jì)算法會(huì)發(fā)現(xiàn)這些群集。
有許多類型的聚類算法。許多算法在特征空間中的示例之間使用相似度或距離度量,以發(fā)現(xiàn)密集的觀測區(qū)域。因此,在使用聚類算法之前,擴(kuò)展數(shù)據(jù)通常是良好的實(shí)踐。
一些聚類算法要求您指定或猜測數(shù)據(jù)中要發(fā)現(xiàn)的群集的數(shù)量,而另一些算法要求指定觀測之間的最小距離,其中示例可以被視為“關(guān)閉”或“連接”。因此,聚類分析是一個(gè)迭代過程,在該過程中,對(duì)所識(shí)別的群集的主觀評(píng)估被反饋回算法配置的改變中,直到達(dá)到期望的或適當(dāng)?shù)慕Y(jié)果。scikit-learn 庫提供了一套不同的聚類算法供選擇。下面列出了10種比較流行的算法:
每個(gè)算法都提供了一種不同的方法來應(yīng)對(duì)數(shù)據(jù)中發(fā)現(xiàn)自然組的挑戰(zhàn)。沒有最好的聚類算法,也沒有簡單的方法來找到最好的算法為您的數(shù)據(jù)沒有使用控制實(shí)驗(yàn)。在本教程中,我們將回顧如何使用來自 scikit-learn 庫的這10個(gè)流行的聚類算法中的每一個(gè)。這些示例將為您復(fù)制粘貼示例并在自己的數(shù)據(jù)上測試方法提供基礎(chǔ)。我們不會(huì)深入研究算法如何工作的理論,也不會(huì)直接比較它們。讓我們深入研究一下。
在本節(jié)中,我們將回顧如何在 scikit-learn 中使用10個(gè)流行的聚類算法。這包括一個(gè)擬合模型的例子和可視化結(jié)果的例子。這些示例用于將粘貼復(fù)制到您自己的項(xiàng)目中,并將方法應(yīng)用于您自己的數(shù)據(jù)。
1.庫安裝
首先,讓我們安裝庫。不要跳過此步驟,因?yàn)槟阈枰_保安裝了最新版本。你可以使用 pip Python 安裝程序安裝 scikit-learn 存儲(chǔ)庫,如下所示:
接下來,讓我們確認(rèn)已經(jīng)安裝了庫,并且您正在使用一個(gè)現(xiàn)代版本。運(yùn)行以下腳本以輸出庫版本號(hào)。
運(yùn)行該示例時(shí),您應(yīng)該看到以下版本號(hào)或更高版本。
2.聚類數(shù)據(jù)集
我們將使用 make _ classification ()函數(shù)創(chuàng)建一個(gè)測試二分類數(shù)據(jù)集。數(shù)據(jù)集將有1000個(gè)示例,每個(gè)類有兩個(gè)輸入要素和一個(gè)群集。這些群集在兩個(gè)維度上是可見的,因此我們可以用散點(diǎn)圖繪制數(shù)據(jù),并通過指定的群集對(duì)圖中的點(diǎn)進(jìn)行顏色繪制。這將有助于了解,至少在測試問題上,群集的識(shí)別能力如何。該測試問題中的群集基于多變量高斯,并非所有聚類算法都能有效地識(shí)別這些類型的群集。因此,本教程中的結(jié)果不應(yīng)用作比較一般方法的基礎(chǔ)。下面列出了創(chuàng)建和匯總合成聚類數(shù)據(jù)集的示例。
運(yùn)行該示例將創(chuàng)建合成的聚類數(shù)據(jù)集,然后創(chuàng)建輸入數(shù)據(jù)的散點(diǎn)圖,其中點(diǎn)由類標(biāo)簽(理想化的群集)著色。我們可以清楚地看到兩個(gè)不同的數(shù)據(jù)組在兩個(gè)維度,并希望一個(gè)自動(dòng)的聚類算法可以檢測這些分組。
已知聚類著色點(diǎn)的合成聚類數(shù)據(jù)集的散點(diǎn)圖接下來,我們可以開始查看應(yīng)用于此數(shù)據(jù)集的聚類算法的示例。我已經(jīng)做了一些最小的嘗試來調(diào)整每個(gè)方法到數(shù)據(jù)集。3.親和力傳播親和力傳播包括找到一組最能概括數(shù)據(jù)的范例。
它是通過 AffinityPropagation 類實(shí)現(xiàn)的,要調(diào)整的主要配置是將“ 阻尼 ”設(shè)置為0.5到1,甚至可能是“首選項(xiàng)”。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我無法取得良好的結(jié)果。
數(shù)據(jù)集的散點(diǎn)圖,具有使用親和力傳播識(shí)別的聚類
4.聚合聚類
聚合聚類涉及合并示例,直到達(dá)到所需的群集數(shù)量為止。它是層次聚類方法的更廣泛類的一部分,通過 AgglomerationClustering 類實(shí)現(xiàn)的,主要配置是“ n _ clusters ”集,這是對(duì)數(shù)據(jù)中的群集數(shù)量的估計(jì),例如2。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)合理的分組。
使用聚集聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
5.BIRCHBIRCH
聚類( BIRCH 是平衡迭代減少的縮寫,聚類使用層次結(jié)構(gòu))包括構(gòu)造一個(gè)樹狀結(jié)構(gòu),從中提取聚類質(zhì)心。
它是通過 Birch 類實(shí)現(xiàn)的,主要配置是“ threshold ”和“ n _ clusters ”超參數(shù),后者提供了群集數(shù)量的估計(jì)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)很好的分組。
使用BIRCH聚類確定具有聚類的數(shù)據(jù)集的散點(diǎn)圖
6.DBSCANDBSCAN
聚類(其中 DBSCAN 是基于密度的空間聚類的噪聲應(yīng)用程序)涉及在域中尋找高密度區(qū)域,并將其周圍的特征空間區(qū)域擴(kuò)展為群集。
它是通過 DBSCAN 類實(shí)現(xiàn)的,主要配置是“ eps ”和“ min _ samples ”超參數(shù)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,盡管需要更多的調(diào)整,但是找到了合理的分組。
使用DBSCAN集群識(shí)別出具有集群的數(shù)據(jù)集的散點(diǎn)圖
7.K均值
K-均值聚類可以是最常見的聚類算法,并涉及向群集分配示例,以盡量減少每個(gè)群集內(nèi)的方差。
它是通過 K-均值類實(shí)現(xiàn)的,要優(yōu)化的主要配置是“ n _ clusters ”超參數(shù)設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)合理的分組,盡管每個(gè)維度中的不等等方差使得該方法不太適合該數(shù)據(jù)集。
使用K均值聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
8.Mini-Batch
K-均值Mini-Batch K-均值是 K-均值的修改版本,它使用小批量的樣本而不是整個(gè)數(shù)據(jù)集對(duì)群集質(zhì)心進(jìn)行更新,這可以使大數(shù)據(jù)集的更新速度更快,并且可能對(duì)統(tǒng)計(jì)噪聲更健壯。
它是通過 MiniBatchKMeans 類實(shí)現(xiàn)的,要優(yōu)化的主配置是“ n _ clusters ”超參數(shù),設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,會(huì)找到與標(biāo)準(zhǔn) K-均值算法相當(dāng)?shù)慕Y(jié)果。
帶有最小批次K均值聚類的聚類數(shù)據(jù)集的散點(diǎn)圖
9.均值漂移聚類
均值漂移聚類涉及到根據(jù)特征空間中的實(shí)例密度來尋找和調(diào)整質(zhì)心。
它是通過 MeanShift 類實(shí)現(xiàn)的,主要配置是“帶寬”超參數(shù)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以在數(shù)據(jù)中找到一組合理的群集。
具有均值漂移聚類的聚類數(shù)據(jù)集散點(diǎn)圖
10.OPTICSOPTICS
聚類( OPTICS 短于訂購點(diǎn)數(shù)以標(biāo)識(shí)聚類結(jié)構(gòu))是上述 DBSCAN 的修改版本。
它是通過 OPTICS 類實(shí)現(xiàn)的,主要配置是“ eps ”和“ min _ samples ”超參數(shù)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我無法在此數(shù)據(jù)集上獲得合理的結(jié)果。
使用OPTICS聚類確定具有聚類的數(shù)據(jù)集的散點(diǎn)圖
11.光譜聚類
光譜聚類是一類通用的聚類方法,取自線性線性代數(shù)。
它是通過 Spectral 聚類類實(shí)現(xiàn)的,而主要的 Spectral 聚類是一個(gè)由聚類方法組成的通用類,取自線性線性代數(shù)。要優(yōu)化的是“ n _ clusters ”超參數(shù),用于指定數(shù)據(jù)中的估計(jì)群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,找到了合理的集群。
使用光譜聚類聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
12.高斯混合模型
高斯混合模型總結(jié)了一個(gè)多變量概率密度函數(shù),顧名思義就是混合了高斯概率分布。它是通過 Gaussian Mixture 類實(shí)現(xiàn)的,要優(yōu)化的主要配置是“ n _ clusters ”超參數(shù),用于指定數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我們可以看到群集被完美地識(shí)別。這并不奇怪,因?yàn)閿?shù)據(jù)集是作為 Gaussian 的混合生成的。
使用高斯混合聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
在本文中,你發(fā)現(xiàn)了如何在 python 中安裝和使用頂級(jí)聚類算法。具體來說,你學(xué)到了:
python中plt.post是什么函數(shù)
2018-05-04 11:11:36
122點(diǎn)贊
qiurisiyu2016
碼齡7年
關(guān)注
matplotlib
1、plt.plot(x,y)
plt.plot(x,y,format_string,**kwargs)?
x軸數(shù)據(jù),y軸數(shù)據(jù),format_string控制曲線的格式字串?
format_string 由顏色字符,風(fēng)格字符,和標(biāo)記字符
import matplotlib.pyplot as plt
plt.plot([1,2,3,6],[4,5,8,1],’g-s’)?
plt.show()
結(jié)果
**kwards:?
color 顏色?
linestyle 線條樣式?
marker 標(biāo)記風(fēng)格?
markerfacecolor 標(biāo)記顏色?
markersize 標(biāo)記大小 等等?
plt.plot([5,4,3,2,1])? ?
plt.show()
結(jié)果
plt.plot([20,2,40,6,80])? ?#缺省x為[0,1,2,3,4,...]
plt.show()
結(jié)果
plt.plot()參數(shù)設(shè)置
Property Value Type
alpha 控制透明度,0為完全透明,1為不透明
animated [True False]
antialiased or aa [True False]
clip_box a matplotlib.transform.Bbox instance
clip_on [True False]
clip_path a Path instance and a Transform instance, a Patch
color or c 顏色設(shè)置
contains the hit testing function
dash_capstyle [‘butt’ ‘round’ ‘projecting’]
dash_joinstyle [‘miter’ ‘round’ ‘bevel’]
dashes sequence of on/off ink in points
data 數(shù)據(jù)(np.array xdata, np.array ydata)
figure 畫板對(duì)象a matplotlib.figure.Figure instance
label 圖示
linestyle or ls 線型風(fēng)格[‘-’ ‘–’ ‘-.’ ‘:’ ‘steps’ …]
linewidth or lw 寬度float value in points
lod [True False]
marker 數(shù)據(jù)點(diǎn)的設(shè)置[‘+’ ‘,’ ‘.’ ‘1’ ‘2’ ‘3’ ‘4’]
markeredgecolor or mec any matplotlib color
markeredgewidth or mew float value in points
markerfacecolor or mfc any matplotlib color
markersize or ms float
markevery [ None integer (startind, stride) ]
picker used in interactive line selection
pickradius the line pick selection radius
solid_capstyle [‘butt’ ‘round’ ‘projecting’]
solid_joinstyle [‘miter’ ‘round’ ‘bevel’]
transform a matplotlib.transforms.Transform instance
visible [True False]
xdata np.array
ydata np.array
zorder any number
確定x,y值,將其打印出來
x=np.linspace(-1,1,5)
y=2*x+1
plt.plot(x,y)
plt.show()
2、plt.figure()用來畫圖,自定義畫布大小
fig1 = plt.figure(num='fig111111', figsize=(10, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#0000FF')
plt.plot(x,y1) ? ? ? ? ? #在變量fig1后進(jìn)行plt.plot操作,圖形將顯示在fig1中
fig2 = plt.figure(num='fig222222', figsize=(6, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#FF0000')
plt.plot(x,y2) ? ? ? ? ? #在變量fig2后進(jìn)行plt.plot操作,圖形將顯示在fig2中
plt.show()
plt.close()
結(jié)果
fig1 = plt.figure(num='fig111111', figsize=(10, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#0000FF')
plt.plot(x,y1)
plt.plot(x,y2)
fig2 = plt.figure(num='fig222222', figsize=(6, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#FF0000')
plt.show()
plt.close()
結(jié)果:
3、plt.subplot(222)
將figure設(shè)置的畫布大小分成幾個(gè)部分,參數(shù)‘221’表示2(row)x2(colu),即將畫布分成2x2,兩行兩列的4塊區(qū)域,1表示選擇圖形輸出的區(qū)域在第一塊,圖形輸出區(qū)域參數(shù)必須在“行x列”范圍? ? ? ? ? ? ? ? ? ? ? ?,此處必須在1和2之間選擇——如果參數(shù)設(shè)置為subplot(111),則表示畫布整個(gè)輸出,不分割成小塊區(qū)域,圖形直接輸出在整塊畫布上
plt.subplot(222)?
plt.plot(y,xx)? ? #在2x2畫布中第二塊區(qū)域輸出圖形
plt.show()
plt.subplot(223)? #在2x2畫布中第三塊區(qū)域輸出圖形
plt.plot(y,xx)
plt.subplot(224)? # 在在2x2畫布中第四塊區(qū)域輸出圖形
plt.plot(y,xx)
4、plt.xlim設(shè)置x軸或者y軸刻度范圍
如
plt.xlim(0,1000)? #? 設(shè)置x軸刻度范圍,從0~1000 ? ? ? ? #lim為極限,范圍
plt.ylim(0,20)? ?# 設(shè)置y軸刻度的范圍,從0~20
5、plt.xticks():設(shè)置x軸刻度的表現(xiàn)方式
fig2 = plt.figure(num='fig222222', figsize=(6, 3), dpi=75, facecolor='#FFFFFF', edgecolor='#FF0000')
plt.plot(x,y2)
plt.xticks(np.linspace(0,1000,15,endpoint=True))? # 設(shè)置x軸刻度
plt.yticks(np.linspace(0,20,10,endpoint=True))
結(jié)果
6、ax2.set_title('xxx')設(shè)置標(biāo)題,畫圖
#產(chǎn)生[1,2,3,...,9]的序列
x = np.arange(1,10)
y = x
fig = plt.figure()
ax1 = fig.add_subplot(221)
#設(shè)置標(biāo)題
ax1.set_title('Scatter Plot1')
plt.xlabel('M')
plt.ylabel('N')
ax2 = fig.add_subplot(222)
ax2.set_title('Scatter Plot2clf')
#設(shè)置X軸標(biāo)簽
plt.xlabel('X') ? ? ? ? ? #設(shè)置X/Y軸標(biāo)簽是在對(duì)應(yīng)的figure后進(jìn)行操作才對(duì)應(yīng)到該figure
#設(shè)置Y軸標(biāo)簽
plt.ylabel('Y')
#畫散點(diǎn)圖
ax1.scatter(x,y,c = 'r',marker = 'o') ? ? ? ? ?#可以看出畫散點(diǎn)圖是在對(duì)figure進(jìn)行操作
ax2.scatter(x,y,c = 'b',marker = 'x')
#設(shè)置圖標(biāo)
plt.legend('show picture x1 ')
#顯示所畫的圖
plt.show()
結(jié)果
7、plt.hist()繪制直方圖(可以將高斯函數(shù)這些畫出來)
繪圖都可以調(diào)用matplotlib.pyplot庫來進(jìn)行,其中的hist函數(shù)可以直接繪制直方圖
調(diào)用方式:
n, bins, patches = plt.hist(arr, bins=10, normed=0, facecolor='black', edgecolor='black',alpha=1,histtype='bar')
hist的參數(shù)非常多,但常用的就這六個(gè),只有第一個(gè)是必須的,后面四個(gè)可選
arr: 需要計(jì)算直方圖的一維數(shù)組
bins: 直方圖的柱數(shù),可選項(xiàng),默認(rèn)為10
normed: 是否將得到的直方圖向量歸一化。默認(rèn)為0
facecolor: 直方圖顏色
edgecolor: 直方圖邊框顏色
alpha: 透明度
histtype: 直方圖類型,‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’
返回值 :
n: 直方圖向量,是否歸一化由參數(shù)normed設(shè)定
bins: 返回各個(gè)bin的區(qū)間范圍
patches: 返回每個(gè)bin里面包含的數(shù)據(jù),是一個(gè)list
from skimage import data
import matplotlib.pyplot as plt
img=data.camera()
plt.figure("hist")
arr=img.flatten()
n, bins, patches = plt.hist(arr, bins=256, normed=1,edgecolor='None',facecolor='red')??
plt.show()
例:
mu, sigma = 0, .1
s = np.random.normal(loc=mu, scale=sigma, size=1000)
a,b,c = plt.hist(s, bins=3)
print("a: ",a)
print("b: ",b)
print("c: ",c)
plt.show()
結(jié)果:
a:? [ 85. 720. 195.]? ? ? ? ?#每個(gè)柱子的值
b:? [-0.36109509 -0.1357318? ?0.08963149? 0.31499478]? ?#每個(gè)柱的區(qū)間范圍
c:? a list of 3 Patch objects? ? ? ?#總共多少柱子
8、ax1.scatter(x,y,c = 'r',marker = 'o')?
使用注意:確定了figure就一定要確定象限,然后用scatter,或者不確定象限,直接使用plt.scatter
x = np.arange(1,10)
y = x
fig = plt.figure()
a=plt.subplot()? ? ? ? ? ? #默認(rèn)為一個(gè)象限
# a=fig.add_subplot(222)
a.scatter(x,y,c='r',marker='o')
plt.show()
結(jié)果
x = np.arange(1,10)
y = x
plt.scatter(x,y,c='r',marker='o')
plt.show()
結(jié)果
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1,10)
y = x
plt.figure()
plt.scatter(x,y,c='r',marker='o')
plt.show()
結(jié)果
文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配
Python入門技能樹基礎(chǔ)語法函數(shù)
211242 人正在系統(tǒng)學(xué)習(xí)中
打開CSDN APP,看更多技術(shù)內(nèi)容
plt的一些函數(shù)的使用_班花i的博客_plt函數(shù)
plt.函數(shù) Fwuyi的博客 6513 1plt.figure( )函數(shù):創(chuàng)建畫布 2plt.plot(x, y, format_string, label="圖例名"):繪制點(diǎn)和線, 并控制樣式。 其中x是x軸數(shù)據(jù),y是y軸數(shù)據(jù),xy一般是列表和數(shù)組。format_string 是字符串的格式包括線...
繼續(xù)訪問
Python的數(shù)據(jù)科學(xué)函數(shù)包(三)——matplotlib(plt)_hxxjxw的博客...
import matplotlib.pyplot as plt plt.imshow(img) plt.show() plt.imshow()有一個(gè)cmap參數(shù),即指定顏色映射規(guī)則。默認(rèn)的cmap即顏料板是十色環(huán) 哪怕是單通道圖,值在0-1之間,用plt.imshow()仍然可以顯示彩色圖,就是因?yàn)轭伾成涞年P(guān)...
繼續(xù)訪問
對(duì)Python中plt的畫圖函數(shù)詳解
今天小編就為大家分享一篇對(duì)Python中plt的畫圖函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
plt.plot()函數(shù)詳解
plt.plot()函數(shù)詳細(xì)介紹 plt.plot(x, y, format_string, **kwargs) 參數(shù) 說明 x X軸數(shù)據(jù),列表或數(shù)組,可選 y Y軸數(shù)據(jù),列表或數(shù)組 format_string 控制曲線的格式字符串,可選 **kwargs 第二組或更多(x,y,format_string),可畫多條曲線 format_string 由顏色字符、風(fēng)格字符、標(biāo)記字符組成 顏色字符 'b' 藍(lán)色 'm' 洋紅色 magenta 'g' 綠色 'y.
繼續(xù)訪問
python圖像處理基礎(chǔ)知識(shí)(plt庫函數(shù)說明)_小草莓爸爸的博客_p...
1.畫圖(plt庫)1.1 plt.figure(num=’’,figsize=(x, y),dpi= ,facecolor=’’,edgecolor=’’)num:表示整個(gè)圖標(biāo)的標(biāo)題 figsize:表示尺寸 facecolor:表示1.2 plt.plot(x,y,format_string,**kwargs)...
繼續(xù)訪問
plt的一些函數(shù)使用_neo3301的博客_plt函數(shù)
1、plt.plot(x,y) plt.plot(x,y,format_string,**kwargs) x軸數(shù)據(jù),y軸數(shù)據(jù),format_string控制曲線的格式字串 format_string 由顏色字符,風(fēng)格字符,和標(biāo)記字符 import matplotlib.pyplot as plt ...
繼續(xù)訪問
最新發(fā)布 python plt 繪圖詳解(plt.版本)
python plt繪圖詳解
繼續(xù)訪問
python圖像處理基礎(chǔ)知識(shí)(plt庫函數(shù)說明)
import matplotlib.pyplot as plt的一些基礎(chǔ)用法,包括直方圖
繼續(xù)訪問
plt.subplot() 函數(shù)解析_Ensoleile。的博客_plt.subplot
plt.subplot()函數(shù)用于直接制定劃分方式和位置進(jìn)行繪圖。 函數(shù)原型 subplot(nrows, ncols, index, **kwargs),一般我們只用到前三個(gè)參數(shù),將整個(gè)繪圖區(qū)域分成 nrows 行和 ncols 列,而 index 用于對(duì)子圖進(jìn)行編號(hào)。
繼續(xù)訪問
...中plt的畫圖函數(shù)_Ethan的博客的博客_python的plt函數(shù)
1、plt.legend plt.legend(loc=0)#顯示圖例的位置,自適應(yīng)方式 說明: 'best' : 0, (only implemented for axes legends)(自適應(yīng)方式) 'upper right' : 1, 'upper left' : 2, 'lower left' : 3, 'lower right' : 4, ...
繼續(xù)訪問
plt.函數(shù)
1 plt.figure( ) 函數(shù):創(chuàng)建畫布 2 plt.plot(x, y, format_string, label="圖例名"):繪制點(diǎn)和線, 并控制樣式。 其中x是x軸數(shù)據(jù),y是y軸數(shù)據(jù),xy一般是列表和數(shù)組。format_string 是字符串的格式包括線條顏色、點(diǎn)類型、線類型三個(gè)部分。向參數(shù)label傳入圖例名,使用plt.legend( )創(chuàng)建圖例。 2.1 畫一條含x、y的線條 import matplotlib.pyplot as plt x = [1, 2, 3, 4] y
繼續(xù)訪問
Python深度學(xué)習(xí)入門之plt畫圖工具基礎(chǔ)使用(注釋詳細(xì),超級(jí)簡單)
Python自帶的plt是深度學(xué)習(xí)最常用的庫之一,在發(fā)表文章時(shí)必然得有圖作為支撐,plt為深度學(xué)習(xí)必備技能之一。作為深度學(xué)習(xí)入門,只需要掌握一些基礎(chǔ)畫圖操作即可,其他等要用到的時(shí)候看看函數(shù)API就行。 1 導(dǎo)入plt庫(名字長,有點(diǎn)難記) import matplotlib.pyplot as plt 先隨便畫一個(gè)圖,保存一下試試水: plt.figure(figsize=(12,8), dpi=80) plt.plot([1,2,6,4],[4,5,6,9]) plt.savefig('./plt_pn
繼續(xù)訪問
python畫圖plt函數(shù)學(xué)習(xí)_dlut_yan的博客_python plt
figure()函數(shù)可以幫助我們同時(shí)處理生成多個(gè)圖,而subplot()函數(shù)則用來實(shí)現(xiàn),在一個(gè)大圖中,出現(xiàn)多個(gè)小的子圖。 處理哪個(gè)figure,則選擇哪個(gè)figure,再進(jìn)行畫圖。 參考博客 importmatplotlib.pyplotaspltimportnumpyasnp x=np.arange(-1,1,0.1...
繼續(xù)訪問
plt.plot()函數(shù)_安之若醇的博客_plt.plot()函數(shù)
plt.plot()函數(shù)是matplotlib.pyplot用于畫圖的函數(shù)傳一個(gè)值列表:import numpy as npimport matplotlib.pyplot as pltt=[1,2,3,4,5]y=[3,4,5,6,7]plt.plot(t, y)當(dāng)x省略的時(shí)候,默認(rèn)[0,1…,N-1]遞增可以傳元組也可以傳...
繼續(xù)訪問
python畫圖plt函數(shù)學(xué)習(xí)
python中的繪圖工具 :matplotli,專門用于畫圖。 一. 安裝與導(dǎo)入 工具包安裝:conda install matplotli 導(dǎo)入:import matplotlib.pyplot as plt 畫圖主要有:列表繪圖;多圖繪圖;數(shù)組繪圖 二. 列表繪圖 1. 基礎(chǔ)繪圖:plt.plot;plt.show import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] plt.plot(x, y) plt.show()
繼續(xù)訪問
python中plt的含義_對(duì)Python中plt的畫圖函數(shù)詳解
1、plt.legendplt.legend(loc=0)#顯示圖例的位置,自適應(yīng)方式說明:'best' : 0, (only implemented for axes legends)(自適應(yīng)方式)'upper right' : 1,'upper left' : 2,'lower left' : 3,'lower right' : 4,'right' : 5,'cent...
繼續(xù)訪問
Python中plt繪圖包的基本使用方法
其中,前兩個(gè)輸入?yún)?shù)表示x軸和y軸的坐標(biāo),plot函數(shù)將提供的坐標(biāo)點(diǎn)連接,即成為要繪制的各式線型。常用的參數(shù)中,figsize需要一個(gè)元組值,表示空白畫布的橫縱坐標(biāo)比;plt.xticks()和plt.yticks()函數(shù)用于設(shè)置坐標(biāo)軸的步長和刻度。plt.xlabel()、plt.ylabel()和plt.title()函數(shù)分別用于設(shè)置x坐標(biāo)軸、y坐標(biāo)軸和圖標(biāo)的標(biāo)題信息。的數(shù)據(jù)處理時(shí),發(fā)現(xiàn)了自己對(duì)plt的了解和使用的缺失,因此進(jìn)行一定的基礎(chǔ)用法的學(xué)習(xí),方便之后自己的使用,而不需要頻繁的查閱資料。...
繼續(xù)訪問
python-plt.xticks與plt.yticks
栗子: plt.figure(figsize=(10, 10)) for i in range(25): plt.subplot(5, 5, i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(train_images[i], cmap=plt.cm.binary) plt.xlabel(class_names[train_labels[i]]) plt.show() 設(shè)置x或y軸對(duì)應(yīng)顯
繼續(xù)訪問
plt繪圖總結(jié)
matplotlib繪圖
繼續(xù)訪問
Python的數(shù)據(jù)科學(xué)函數(shù)包(三)——matplotlib(plt)
繼續(xù)訪問
熱門推薦 python plt 畫圖
使用csv數(shù)據(jù)文件在百度網(wǎng)盤 import pandas as pd unrate = pd.read_csv('unrate.csv') # pd.to_datetime() 轉(zhuǎn)換成日期格式,即由 1948/1/1 轉(zhuǎn)換為 1948-01-01 unrate['DATE'] = pd.to_datetime(unrate['DATE']) print(unrate.head(12)) ...
繼續(xù)訪問
python數(shù)據(jù)可視化實(shí)現(xiàn)步驟,Python數(shù)據(jù)可視化圖實(shí)現(xiàn)過程詳解
Python數(shù)據(jù)可視化圖實(shí)現(xiàn)過程詳解更多python視頻教程請(qǐng)到菜鳥教程畫分布圖代碼示例:# encoding=utf-8import matplotlib.pyplot as pltfrom pylab import * # 支持中文mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]‘mention...
繼續(xù)訪問
matplotlib-plt.plot用法
文章目錄 英語好的直接參考這個(gè)網(wǎng)站 matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None, **kwargs) 將x,y繪制為線條或標(biāo)記 參數(shù): x, y:數(shù)據(jù)點(diǎn)的水平/垂直坐標(biāo)。x值是可選的,默認(rèn)為range(len(y))。通常,這些參數(shù)是 一維數(shù)組。它們也可以是標(biāo)量,也可以是二維的(在這種情況下,列代表單獨(dú)的數(shù)據(jù)集)。 這些參數(shù)不能作為關(guān)鍵字傳遞。 fmt:格式字符串,格式字符串只是用于快速設(shè)置基本行屬性的縮
繼續(xù)訪問
python Plt學(xué)習(xí)
plt的簡單學(xué)習(xí)
繼續(xù)訪問
plt.show()和plt.imshow()的區(qū)別
問題:plt.imshow()無法顯示圖像 解決方法:添加:plt.show(),即 plt.imshow(image) #image表示待處理的圖像 plt.show() 原理:plt.imshow()函數(shù)負(fù)責(zé)對(duì)圖像進(jìn)行處理,并顯示其格式,而plt.show()則是將plt.imshow()處理后的函數(shù)顯示出來。 ...
繼續(xù)訪問
python題庫刷題網(wǎng)站_python在線刷題網(wǎng)站
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技術(shù)人對(duì)外發(fā)布原創(chuàng)技術(shù)內(nèi)容的最大平臺(tái);社區(qū)覆蓋了云計(jì)算、大數(shù)據(jù)、人工智能、IoT、云原生、數(shù)據(jù)庫、微服務(wù)、安全、開發(fā)與運(yùn)維9大技術(shù)領(lǐng)域。","link1":...
繼續(xù)訪問
python xticks_Python Matplotlib.pyplot.yticks()用法及代碼示例
Matplotlib是Python中的一個(gè)庫,它是數(shù)字的-NumPy庫的數(shù)學(xué)擴(kuò)展。 Pyplot是Matplotlib模塊的基于狀態(tài)的接口,該模塊提供了MATLAB-like接口。Matplotlib.pyplot.yticks()函數(shù)matplotlib庫的pyplot模塊中的annotate()函數(shù)用于獲取和設(shè)置y軸的當(dāng)前刻度位置和標(biāo)簽。用法: matplotlib.pyplot.yticks...
繼續(xù)訪問
python的plt函數(shù)_plt.plot畫圖函數(shù)
[‘font.sans-serif’]=[‘SimHei’]plt.rcParams[‘a(chǎn)xes.unicode_minus’] = False#設(shè)置橫縱坐標(biāo)的名稱以及對(duì)應(yīng)字體格式font1 = {‘weight’ : ‘normal’,‘size’ : 15,...
繼續(xù)訪問
plt函數(shù)
寫評(píng)論
7
794
122
數(shù)字圖像處理Python實(shí)現(xiàn)圖像灰度變換、直方圖均衡、均值濾波
import CV2
import copy
import numpy as np
import random
使用的是pycharm
因?yàn)樽罱戳恕躲y翼殺手2049》,里面Joi實(shí)在是太好看了所以原圖像就用Joi了
要求是灰度圖像,所以第一步先把圖像轉(zhuǎn)化成灰度圖像
# 讀入原始圖像
img = CV2.imread('joi.jpg')
# 灰度化處理
gray = CV2.cvtColor(img, CV2.COLOR_BGR2GRAY)
CV2.imwrite('img.png', gray)
第一個(gè)任務(wù)是利用分段函數(shù)增強(qiáng)灰度對(duì)比,我自己隨便寫了個(gè)函數(shù)大致是這樣的
def chng(a):
if a 255/3:
b = a/2
elif a 255/3*2:
b = (a-255/3)*2 + 255/6
else:
b = (a-255/3*2)/2 + 255/6 +255/3*2
return b
rows = img.shape[0]
cols = img.shape[1]
cover = copy.deepcopy(gray)
for i in range(rows):
for j in range(cols):
cover[i][j] = chng(cover[i][j])
CV2.imwrite('cover.png', cover)
下一步是直方圖均衡化
# histogram equalization
def hist_equal(img, z_max=255):
H, W = img.shape
# S is the total of pixels
S = H * W * 1.
out = img.copy()
sum_h = 0.
for i in range(1, 255):
ind = np.where(img == i)
sum_h += len(img[ind])
z_prime = z_max / S * sum_h
out[ind] = z_prime
out = out.astype(np.uint8)
return out
covereq = hist_equal(cover)
CV2.imwrite('covereq.png', covereq)
在實(shí)現(xiàn)濾波之前先添加高斯噪聲和椒鹽噪聲(代碼來源于網(wǎng)絡(luò))
不知道這個(gè)椒鹽噪聲的名字是誰起的感覺隔壁小孩都饞哭了
用到了random.gauss()
percentage是噪聲占比
def GaussianNoise(src,means,sigma,percetage):
NoiseImg=src
NoiseNum=int(percetage*src.shape[0]*src.shape[1])
for i in range(NoiseNum):
randX=random.randint(0,src.shape[0]-1)
randY=random.randint(0,src.shape[1]-1)
NoiseImg[randX, randY]=NoiseImg[randX,randY]+random.gauss(means,sigma)
if NoiseImg[randX, randY] 0:
NoiseImg[randX, randY]=0
elif NoiseImg[randX, randY]255:
NoiseImg[randX, randY]=255
return NoiseImg
def PepperandSalt(src,percetage):
NoiseImg=src
NoiseNum=int(percetage*src.shape[0]*src.shape[1])
for i in range(NoiseNum):
randX=random.randint(0,src.shape[0]-1)
randY=random.randint(0,src.shape[1]-1)
if random.randint(0,1)=0.5:
NoiseImg[randX,randY]=0
else:
NoiseImg[randX,randY]=255
return NoiseImg
covereqg = GaussianNoise(covereq, 2, 4, 0.8)
CV2.imwrite('covereqg.png', covereqg)
covereqps = PepperandSalt(covereq, 0.05)
CV2.imwrite('covereqps.png', covereqps)
下面開始均值濾波和中值濾波了
就以n x n為例,均值濾波就是用這n x n個(gè)像素點(diǎn)灰度值的平均值代替中心點(diǎn),而中值就是中位數(shù)代替中心點(diǎn),邊界點(diǎn)周圍補(bǔ)0;前兩個(gè)函數(shù)的作用是算出這個(gè)點(diǎn)的灰度值,后兩個(gè)是對(duì)整張圖片進(jìn)行
#均值濾波模板
def mean_filter(x, y, step, img):
sum_s = 0
for k in range(x-int(step/2), x+int(step/2)+1):
for m in range(y-int(step/2), y+int(step/2)+1):
if k-int(step/2) 0 or k+int(step/2)+1 img.shape[0]
or m-int(step/2) 0 or m+int(step/2)+1 img.shape[1]:
sum_s += 0
else:
sum_s += img[k][m] / (step*step)
return sum_s
#中值濾波模板
def median_filter(x, y, step, img):
sum_s=[]
for k in range(x-int(step/2), x+int(step/2)+1):
for m in range(y-int(step/2), y+int(step/2)+1):
if k-int(step/2) 0 or k+int(step/2)+1 img.shape[0]
or m-int(step/2) 0 or m+int(step/2)+1 img.shape[1]:
sum_s.append(0)
else:
sum_s.append(img[k][m])
sum_s.sort()
return sum_s[(int(step*step/2)+1)]
def median_filter_go(img, n):
img1 = copy.deepcopy(img)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
img1[i][j] = median_filter(i, j, n, img)
return img1
def mean_filter_go(img, n):
img1 = copy.deepcopy(img)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
img1[i][j] = mean_filter(i, j, n, img)
return img1
完整main代碼如下:
if __name__ == "__main__":
# 讀入原始圖像
img = CV2.imread('joi.jpg')
# 灰度化處理
gray = CV2.cvtColor(img, CV2.COLOR_BGR2GRAY)
CV2.imwrite('img.png', gray)
rows = img.shape[0]
cols = img.shape[1]
cover = copy.deepcopy(gray)
for i in range(rows):
for j in range(cols):
cover[i][j] = chng(cover[i][j])
CV2.imwrite('cover.png', cover)
covereq = hist_equal(cover)
CV2.imwrite('covereq.png', covereq)
covereqg = GaussianNoise(covereq, 2, 4, 0.8)
CV2.imwrite('covereqg.png', covereqg)
covereqps = PepperandSalt(covereq, 0.05)
CV2.imwrite('covereqps.png', covereqps)
meanimg3 = mean_filter_go(covereqps, 3)
CV2.imwrite('medimg3.png', meanimg3)
meanimg5 = mean_filter_go(covereqps, 5)
CV2.imwrite('meanimg5.png', meanimg5)
meanimg7 = mean_filter_go(covereqps, 7)
CV2.imwrite('meanimg7.png', meanimg7)
medimg3 = median_filter_go(covereqg, 3)
CV2.imwrite('medimg3.png', medimg3)
medimg5 = median_filter_go(covereqg, 5)
CV2.imwrite('medimg5.png', medimg5)
medimg7 = median_filter_go(covereqg, 7)
CV2.imwrite('medimg7.png', medimg7)
medimg4 = median_filter_go(covereqps, 7)
CV2.imwrite('medimg4.png', medimg4)
OpenCV Python 系列教程4 - OpenCV 圖像處理(上)
學(xué)習(xí)目標(biāo):
OpenCV 中有 150 多種色彩空間轉(zhuǎn)化的方法,這里只討論兩種:
HSV的色相范圍為[0,179],飽和度范圍為[0,255],值范圍為[0,255]。不同的軟件使用不同的規(guī)模。如果要比較 OpenCV 值和它們,你需要標(biāo)準(zhǔn)化這些范圍。
HSV 和 HLV 解釋
運(yùn)行結(jié)果:該段程序的作用是檢測藍(lán)色目標(biāo),同理可以檢測其他顏色的目標(biāo)
結(jié)果中存在一定的噪音,之后的章節(jié)將會(huì)去掉它
這是物體跟蹤中最簡單的方法。一旦你學(xué)會(huì)了等高線的函數(shù),你可以做很多事情,比如找到這個(gè)物體的質(zhì)心,用它來跟蹤這個(gè)物體,僅僅通過在相機(jī)前移動(dòng)你的手來畫圖表,還有很多其他有趣的事情。
菜鳥教程 在線 HSV- BGR 轉(zhuǎn)換
比如要找出綠色的 HSV 值,可以使用上面的程序,得到的值取一個(gè)上下界。如上面的取下界 [H-10, 100, 100],上界 [H+10, 255, 255]
或者使用其他工具如 GIMP
學(xué)習(xí)目標(biāo):
對(duì)圖像進(jìn)行閾值處理,算是一種最簡單的圖像分割方法,基于圖像與背景之間的灰度差異,此項(xiàng)分割是基于像素級(jí)的分割
threshold(src, thresh, maxval, type[, dst]) - retval, dst
計(jì)算圖像小區(qū)域的閾值。所以我們對(duì)同一幅圖像的不同區(qū)域得到不同的閾值,這給我們?cè)诓煌庹障碌膱D像提供了更好的結(jié)果。
三個(gè)特殊的輸入?yún)?shù)和一個(gè)輸出參數(shù)
adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) - dst
opencv-threshold-python
OpenCV 圖片集
本節(jié)原文
學(xué)習(xí)目標(biāo):
OpenCV 提供兩種變換函數(shù): cv2.warpAffine 和 cv2.warpPerspective
cv2.resize() 完成縮放
文檔說明
運(yùn)行結(jié)果
說明 : cv2.INTER_LINEAR 方法比 cv2.INTER_CUBIC 還慢,好像與官方文檔說的不一致? 有待驗(yàn)證。
速度比較: INTER_CUBIC INTER_NEAREST INTER_LINEAR INTER_AREA INTER_LANCZOS4
改變圖像的位置,創(chuàng)建一個(gè) np.float32 類型的變換矩陣,
warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) - dst
運(yùn)行結(jié)果:
旋轉(zhuǎn)角度( )是通過一個(gè)變換矩陣變換的:
OpenCV 提供的是可調(diào)旋轉(zhuǎn)中心的縮放旋轉(zhuǎn),這樣你可以在任何你喜歡的位置旋轉(zhuǎn)。修正后的變換矩陣為
這里
OpenCV 提供了 cv2.getRotationMatrix2D 控制
cv2.getRotationMatrix2D(center, angle, scale) → retval
運(yùn)行結(jié)果
cv2.getAffineTransform(src, dst) → retval
函數(shù)關(guān)系:
\begin{bmatrix} x'_i \ y'_i \end{bmatrix}\begin{bmatrix} x'_i \ y'_i \end{bmatrix} =
其中
運(yùn)行結(jié)果:圖上的點(diǎn)便于觀察,兩圖中的紅點(diǎn)是相互對(duì)應(yīng)的
透視變換需要一個(gè) 3x3 變換矩陣。轉(zhuǎn)換之后直線仍然保持筆直,要找到這個(gè)變換矩陣,需要輸入圖像上的 4 個(gè)點(diǎn)和輸出圖像上的對(duì)應(yīng)點(diǎn)。在這 4 個(gè)點(diǎn)中,有 3 個(gè)不應(yīng)該共線。通過 cv2.getPerspectiveTransform 計(jì)算得到變換矩陣,得到的矩陣 cv2.warpPerspective 變換得到最終結(jié)果。
本節(jié)原文
平滑處理(smoothing)也稱模糊處理(bluring),是一種簡單且使用頻率很高的圖像處理方法。平滑處理的用途:常見是用來 減少圖像上的噪點(diǎn)或失真 。在涉及到降低圖像分辨率時(shí),平滑處理是很好用的方法。
圖像濾波:盡量保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可靠性。
消除圖像中的噪聲成分叫做圖像的平滑化或?yàn)V波操作。信號(hào)或圖像的能量大部分集中在幅度譜的低頻和中頻段,在高頻段,有用的信息會(huì)被噪聲淹沒。因此一個(gè)能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。
濾波的目的:抽出對(duì)象的特征作為圖像識(shí)別的特征模式;為適應(yīng)圖像處理的要求,消除圖像數(shù)字化時(shí)混入的噪聲。
濾波處理的要求:不能損壞圖像的輪廓及邊緣等重要信息;圖像清晰視覺效果好。
平滑濾波是低頻增強(qiáng)的空間濾波技術(shù),目的:模糊和消除噪音。
空間域的平滑濾波一般采用簡單平均法,即求鄰近像元點(diǎn)的平均亮度值。鄰域的大小與平滑的效果直接相關(guān),鄰域越大平滑效果越好,但是鄰域過大,平滑也會(huì)使邊緣信息的損失的越大,從而使輸出圖像變得模糊。因此需要選擇合適的鄰域。
濾波器:一個(gè)包含加權(quán)系數(shù)的窗口,利用濾波器平滑處理圖像時(shí),把這個(gè)窗口放在圖像上,透過這個(gè)窗口來看我們得到的圖像。
線性濾波器:用于剔除輸入信號(hào)中不想要的頻率或者從許多頻率中選擇一個(gè)想要的頻率。
低通濾波器、高通濾波器、帶通濾波器、帶阻濾波器、全通濾波器、陷波濾波器
boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]]) - dst
均值濾波是方框?yàn)V波歸一化后的特殊情況。歸一化就是要把處理的量縮放到一個(gè)范圍內(nèi)如 (0,1),以便統(tǒng)一處理和直觀量化。非歸一化的方框?yàn)V波用于計(jì)算每個(gè)像素鄰近內(nèi)的積分特性,比如密集光流算法中用到的圖像倒數(shù)的協(xié)方差矩陣。
運(yùn)行結(jié)果:
均值濾波是典型的線性濾波算法,主要方法為鄰域平均法,即用一片圖像區(qū)域的各個(gè)像素的均值來代替原圖像中的各個(gè)像素值。一般需要在圖像上對(duì)目標(biāo)像素給出一個(gè)模板(內(nèi)核),該模板包括了其周圍的臨近像素(比如以目標(biāo)像素為中心的周圍8(3x3-1)個(gè)像素,構(gòu)成一個(gè)濾波模板,即 去掉目標(biāo)像素本身 )。再用模板中的全體像素的平均值來代替原來像素值。即對(duì)待處理的當(dāng)前像素點(diǎn)(x,y),選擇一個(gè)模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當(dāng)前像素點(diǎn)(x,y),作為處理后圖像在該點(diǎn)上的灰度個(gè)g(x,y),即個(gè)g(x,y)=1/m ∑f(x,y) ,其中m為該模板中包含當(dāng)前像素在內(nèi)的像素總個(gè)數(shù)。
均值濾波本身存在著固有的缺陷,即它不能很好地保護(hù)圖像細(xì)節(jié),在圖像去噪的同時(shí)也破壞了圖像的細(xì)節(jié)部分,從而使圖像變得模糊,不能很好地去除噪聲點(diǎn)。
cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) → dst
結(jié)果:
高斯濾波:線性濾波,可以消除高斯噪聲,廣泛應(yīng)用于圖像處理的減噪過程。高斯濾波就是對(duì)整幅圖像進(jìn)行加權(quán)平均的過程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過 加權(quán)平均 后得到。高斯濾波的具體操作是:用一個(gè)模板(或稱卷積、掩模)掃描圖像中的每一個(gè)像素,用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。
高斯濾波有用但是效率不高。
高斯模糊技術(shù)生成的圖像,其視覺效果就像是經(jīng)過一個(gè)半透明屏幕在觀察圖像,這與鏡頭焦外成像效果散景以及普通照明陰影中的效果都明顯不同。高斯平滑也用于計(jì)算機(jī)視覺算法中的預(yù)先處理階段,以增強(qiáng)圖像在不同比例大小下的圖像效果(參見尺度空間表示以及尺度空間實(shí)現(xiàn))。從數(shù)學(xué)的角度來看,圖像的高斯模糊過程就是圖像與正態(tài)分布做卷積。由于正態(tài)分布又叫作高斯分布,所以這項(xiàng)技術(shù)就叫作高斯模糊。
高斯濾波器是一類根據(jù)高斯函數(shù)的形狀來選擇權(quán)值的線性平滑濾波器。 高斯平滑濾波器對(duì)于抑制服從正態(tài)分布的噪聲非常有效。
一維零均值高斯函數(shù)為: 高斯分布參數(shù) 決定了高斯函數(shù)的寬度。
高斯噪聲的產(chǎn)生
GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) - dst
線性濾波容易構(gòu)造,并且易于從頻率響應(yīng)的角度來進(jìn)行分析。
許多情況,使用近鄰像素的非線性濾波會(huì)得到更好的結(jié)果。比如在噪聲是散粒噪聲而不是高斯噪聲,即圖像偶爾會(huì)出現(xiàn)很大值的時(shí)候,用高斯濾波器進(jìn)行圖像模糊時(shí),噪聲像素不會(huì)被消除,而是轉(zhuǎn)化為更為柔和但仍然可見的散粒。
中值濾波(Median filter)是一種典型的非線性濾波技術(shù),基本思想是用像素點(diǎn)鄰域灰度值的中值來代替該像素點(diǎn)的灰度值,該方法在去除脈沖噪聲、椒鹽噪聲『椒鹽噪聲又稱脈沖噪聲,它隨機(jī)改變一些像素值,是由圖像傳感器,傳輸信道,解碼處理等產(chǎn)生的黑白相間的亮暗點(diǎn)噪聲。椒鹽噪聲往往由圖像切割引起?!坏耐瑫r(shí)又能保留圖像邊緣細(xì)節(jié),
中值濾波是基于排序統(tǒng)計(jì)理論的一種能有效抑制噪聲的非線性信號(hào)處理技術(shù),其基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,讓周圍的像素值接近的真實(shí)值,從而消除孤立的噪聲點(diǎn),對(duì)于 斑點(diǎn)噪聲(speckle noise)和椒鹽噪聲(salt-and-pepper noise) 來說尤其有用,因?yàn)樗灰蕾囉卩徲騼?nèi)那些與典型值差別很大的值。中值濾波器在處理連續(xù)圖像窗函數(shù)時(shí)與線性濾波器的工作方式類似,但濾波過程卻不再是加權(quán)運(yùn)算。
中值濾波在一定的條件下可以克服常見線性濾波器如最小均方濾波、方框?yàn)V波器、均值濾波等帶來的圖像細(xì)節(jié)模糊,而且對(duì)濾除脈沖干擾及圖像掃描噪聲非常有效,也常用于保護(hù)邊緣信息, 保存邊緣的特性使它在不希望出現(xiàn)邊緣模糊的場合也很有用,是非常經(jīng)典的平滑噪聲處理方法。
與均值濾波比較:
說明:中值濾波在一定條件下,可以克服線性濾波器(如均值濾波等)所帶來的圖像細(xì)節(jié)模糊,而且對(duì)濾除脈沖干擾即圖像掃描噪聲最為有效。在實(shí)際運(yùn)算過程中并不需要圖像的統(tǒng)計(jì)特性,也給計(jì)算帶來不少方便。 但是對(duì)一些細(xì)節(jié)多,特別是線、尖頂?shù)燃?xì)節(jié)多的圖像不宜采用中值濾波。
雙邊濾波(Bilateral filter)是一種非線性的濾波方法,是結(jié)合 圖像的空間鄰近度和像素值相似度 的一種折衷處理,同時(shí)考慮空域信息和灰度相似性,達(dá)到保邊去噪的目的。具有簡單、非迭代、局部的特點(diǎn)。
雙邊濾波器的好處是可以做邊緣保存(edge preserving),一般過去用的維納濾波或者高斯濾波去降噪,都會(huì)較明顯地模糊邊緣,對(duì)于高頻細(xì)節(jié)的保護(hù)效果并不明顯。雙邊濾波器顧名思義比高斯濾波多了一個(gè)高斯方差 sigma-d ,它是基于空間分布的高斯濾波函數(shù),所以在邊緣附近,離的較遠(yuǎn)的像素不會(huì)太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存。 但是由于保存了過多的高頻信息,對(duì)于彩色圖像里的高頻噪聲,雙邊濾波器不能夠干凈的濾掉,只能夠?qū)τ诘皖l信息進(jìn)行較好的濾波。
運(yùn)行結(jié)果
學(xué)習(xí)目標(biāo):
形態(tài)變換是基于圖像形狀的一些簡單操作。它通常在二進(jìn)制圖像上執(zhí)行。
膨脹與腐蝕實(shí)現(xiàn)的功能
侵蝕的基本思想就像土壤侵蝕一樣,它會(huì)侵蝕前景物體的邊界(總是試圖保持前景為白色)。那它是做什么的?內(nèi)核在圖像中滑動(dòng)(如在2D卷積中)。只有當(dāng)內(nèi)核下的所有像素都是 1 時(shí),原始圖像中的像素( 1 或 0 )才會(huì)被視為 1 ,否則它將被侵蝕(變?yōu)榱悖?/p>
erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) - dst
與腐蝕的操作相反。如果內(nèi)核下的至少一個(gè)像素為“1”,則像素元素為“1”。因此它增加了圖像中的白色區(qū)域或前景對(duì)象的大小增加。通常,在去除噪音的情況下,侵蝕之后是擴(kuò)張。因?yàn)?,侵蝕會(huì)消除白噪聲,但它也會(huì)縮小我們的物體。所以我們擴(kuò)大它。由于噪音消失了,它們不會(huì)再回來,但我們的物體區(qū)域會(huì)增加。它也可用于連接對(duì)象的破碎部分
統(tǒng)計(jì)學(xué)入門級(jí):常見概率分布+python繪制分布圖
如果隨機(jī)變量X的所有取值都可以逐個(gè)列舉出來,則稱X為離散型隨機(jī)變量。相應(yīng)的概率分布有二項(xiàng)分布,泊松分布。
如果隨機(jī)變量X的所有取值無法逐個(gè)列舉出來,而是取數(shù)軸上某一區(qū)間內(nèi)的任一點(diǎn),則稱X為連續(xù)型隨機(jī)變量。相應(yīng)的概率分布有正態(tài)分布,均勻分布,指數(shù)分布,伽馬分布,偏態(tài)分布,卡方分布,beta分布等。(真多分布,好恐怖~~)
在離散型隨機(jī)變量X的一切可能值中,各可能值與其對(duì)應(yīng)概率的乘積之和稱為該隨機(jī)變量X的期望值,記作E(X) 。比如有隨機(jī)變量,取值依次為:2,2,2,4,5。求其平均值:(2+2+2+4+5)/5 = 3。
期望值也就是該隨機(jī)變量總體的均值。 推導(dǎo)過程如下:
= (2+2+2+4+5)/5
= 1/5 2 3 + 4/5 + 5/5
= 3/5 2 + 1/5 4 + 1/5 5
= 0.6 2 + 0.2 4 + 0.2 5
= 60% 2 + 20% 4 + 20%*5
= 1.2 + 0.8 + 1
= 3
倒數(shù)第三步可以解釋為值為2的數(shù)字出現(xiàn)的概率為60%,4的概率為20%,5的概率為20%。 所以E(X) = 60% 2 + 20% 4 + 20%*5 = μ = 3。
0-1分布(兩點(diǎn)分布),它的隨機(jī)變量的取值為1或0。即離散型隨機(jī)變量X的概率分布為:P{X=0} = 1-p, P{X=1} = p,即:
則稱隨機(jī)變量X服從參數(shù)為p的0-1分布,記作X~B(1,p)。
在生活中有很多例子服從兩點(diǎn)分布,比如投資是否中標(biāo),新生嬰兒是男孩還是女孩,檢查產(chǎn)品是否合格等等。
大家非常熟悉的拋硬幣試驗(yàn)對(duì)應(yīng)的分布就是二項(xiàng)分布。拋硬幣試驗(yàn)要么出現(xiàn)正面,要么就是反面,只包含這兩個(gè)結(jié)果。出現(xiàn)正面的次數(shù)是一個(gè)隨機(jī)變量,這種隨機(jī)變量所服從的概率分布通常稱為 二項(xiàng)分布 。
像拋硬幣這類試驗(yàn)所具有的共同性質(zhì)總結(jié)如下:(以拋硬幣為例)
通常稱具有上述特征的n次重復(fù)獨(dú)立試驗(yàn)為n重伯努利試驗(yàn)。簡稱伯努利試驗(yàn)或伯努利試驗(yàn)概型。特別地,當(dāng)試驗(yàn)次數(shù)為1時(shí),二項(xiàng)分布服從0-1分布(兩點(diǎn)分布)。
舉個(gè)栗子:拋3次均勻的硬幣,求結(jié)果出現(xiàn)有2個(gè)正面的概率 。
已知p = 0.5 (出現(xiàn)正面的概率) ,n = 3 ,k = 2
所以拋3次均勻的硬幣,求結(jié)果出現(xiàn)有2個(gè)正面的概率為3/8。
二項(xiàng)分布的期望值和方差 分別為:
泊松分布是用來描述在一 指定時(shí)間范圍內(nèi)或在指定的面積或體積之內(nèi)某一事件出現(xiàn)的次數(shù)的分布 。生活中服從泊松分布的例子比如有每天房產(chǎn)中介接待的客戶數(shù),某微博每月出現(xiàn)服務(wù)器癱瘓的次數(shù)等等。 泊松分布的公式為 :
其中 λ 為給定的時(shí)間間隔內(nèi)事件的平均數(shù),λ = np。e為一個(gè)數(shù)學(xué)常數(shù),一個(gè)無限不循環(huán)小數(shù),其值約為2.71828。
泊松分布的期望值和方差 分別為:
使用Python繪制泊松分布的概率分布圖:
因?yàn)檫B續(xù)型隨機(jī)變量可以取某一區(qū)間或整個(gè)實(shí)數(shù)軸上的任意一個(gè)值,所以通常用一個(gè)函數(shù)f(x)來表示連續(xù)型隨機(jī)變量,而f(x)就稱為 概率密度函數(shù) 。
概率密度函數(shù)f(x)具有如下性質(zhì) :
需要注意的是,f(x)不是一個(gè)概率,即f(x) ≠ P(X = x) 。在連續(xù)分布的情況下,隨機(jī)變量X在a與b之間的概率可以寫成:
正態(tài)分布(或高斯分布)是連續(xù)型隨機(jī)變量的最重要也是最常見的分布,比如學(xué)生的考試成績就呈現(xiàn)出正態(tài)分布的特征,大部分成績集中在某個(gè)范圍(比如60-80分),很小一部分往兩端傾斜(比如50分以下和90多分以上)。還有人的身高等等。
正態(tài)分布的定義 :
如果隨機(jī)變量X的概率密度為( -∞x+∞):
則稱X服從正態(tài)分布,記作X~N(μ,σ2)。其中-∞μ+∞,σ0, μ為隨機(jī)變量X的均值,σ為隨機(jī)變量X的標(biāo)準(zhǔn)差。 正態(tài)分布的分布函數(shù)
正態(tài)分布的圖形特點(diǎn) :
使用Python繪制正態(tài)分布的概率分布圖:
正態(tài)分布有一個(gè)3σ準(zhǔn)則,即數(shù)值分布在(μ-σ,μ+σ)中的概率為0.6827,分布在(μ-2σ,μ+2σ)中的概率為0.9545,分布在(μ-3σ,μ+3σ)中的概率為0.9973,也就是說大部分?jǐn)?shù)值是分布在(μ-3σ,μ+3σ)區(qū)間內(nèi),超出這個(gè)范圍的可能性很小很小,僅占不到0.3%,屬于極個(gè)別的小概率事件,所以3σ準(zhǔn)則可以用來檢測異常值。
當(dāng)μ=0,σ=1時(shí),有
此時(shí)的正態(tài)分布N(0,1) 稱為標(biāo)準(zhǔn)正態(tài)分布。因?yàn)棣?,σ都是確定的取值,所以其對(duì)應(yīng)的概率密度曲線是一條 形態(tài)固定 的曲線。
對(duì)標(biāo)準(zhǔn)正態(tài)分布,通常用φ(x)表示概率密度函數(shù),用Φ(x)表示分布函數(shù):
假設(shè)有一次物理考試特別難,滿分100分,全班只有大概20個(gè)人及格。與此同時(shí)語文考試很簡單,全班絕大部分都考了90分以上。小明的物理和語文分別考了60分和80分,他回家后告訴家長,這時(shí)家長能僅僅從兩科科目的分值直接判斷出這次小明的語文成績要比物理好很多嗎?如果不能,應(yīng)該如何判斷呢?此時(shí)Z-score就派上用場了。 Z-Score的計(jì)算定義 :
即 將隨機(jī)變量X先減去總體樣本均值,再除以總體樣本標(biāo)準(zhǔn)差就得到標(biāo)準(zhǔn)分?jǐn)?shù)啦。如果X低于平均值,則Z為負(fù)數(shù),反之為正數(shù) 。通過計(jì)算標(biāo)準(zhǔn)分?jǐn)?shù),可以將任何一個(gè)一般的正態(tài)分布轉(zhuǎn)化為標(biāo)準(zhǔn)正態(tài)分布。
小明家長從老師那得知物理的全班平均成績?yōu)?0分,標(biāo)準(zhǔn)差為10,而語文的平均成績?yōu)?2分,標(biāo)準(zhǔn)差為4。分別計(jì)算兩科成績的標(biāo)準(zhǔn)分?jǐn)?shù):
物理:標(biāo)準(zhǔn)分?jǐn)?shù) = (60-40)/10 = 2
語文:標(biāo)準(zhǔn)分?jǐn)?shù) = (85-95)/4 = -2.5
從計(jì)算結(jié)果來看,說明這次考試小明的物理成績?cè)谌客瑢W(xué)中算是考得很不錯(cuò)的,而語文考得很差。
指數(shù)分布可能容易和前面的泊松分布混淆,泊松分布強(qiáng)調(diào)的是某段時(shí)間內(nèi)隨機(jī)事件發(fā)生的次數(shù)的概率分布,而指數(shù)分布說的是 隨機(jī)事件發(fā)生的時(shí)間間隔 的概率分布。比如一班地鐵進(jìn)站的間隔時(shí)間。如果隨機(jī)變量X的概率密度為:
則稱X服從指數(shù)分布,其中的參數(shù)λ0。 對(duì)應(yīng)的分布函數(shù) 為:
均勻分布的期望值和方差 分別為:
使用Python繪制指數(shù)分布的概率分布圖:
均勻分布有兩種,分為 離散型均勻分布和連續(xù)型均勻分布 。其中離散型均勻分布最常見的例子就是拋擲骰子啦。拋擲骰子出現(xiàn)的點(diǎn)數(shù)就是一個(gè)離散型隨機(jī)變量,點(diǎn)數(shù)可能有1,2,3,4,5,6。每個(gè)數(shù)出現(xiàn)的概率都是1/6。
設(shè)連續(xù)型隨機(jī)變量X具有概率密度函數(shù):
則稱X服從區(qū)間(a,b)上的均勻分布。X在等長度的子區(qū)間內(nèi)取值的概率相同。對(duì)應(yīng)的分布函數(shù)為:
f(x)和F(x)的圖形分別如下圖所示:
均勻分布的期望值和方差 分別為:
分享題目:包含python寫高斯函數(shù)的詞條
標(biāo)題URL:http://www.dlmjj.cn/article/dooieoi.html