需要載入numpy和scipy庫(kù),若需要做可視化還需要matplotlib(附加dateutil,?pytz,?pyparsing,?cycler,?setuptools庫(kù))。不畫圖就只要前兩個(gè)。
創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),山南網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:山南等地區(qū)。山南做網(wǎng)站價(jià)格咨詢:18980820575
如果沒(méi)有這些庫(kù)的話去 下載對(duì)應(yīng)版本,之后解壓到 C:\Python27\Lib\site-packages。
import?numpy?as?np??
import?pylab?as?plt??
#import?matplotlib.pyplot?as?plt??
from?scipy.optimize?import?curve_fit??
from?scipy?import?asarray?as?ar,exp??
x?=?ar(range(10))??
y?=?ar([0,1,2,3,4,5,4,3,2,1])??
def?gaussian(x,*param):??
return?param[0]*np.exp(-np.power(x?-?param[2],?2.)?/?(2?*?np.power(param[4],?2.)))+param[1]*np.exp(-np.power(x?-?param[3],?2.)?/?(2?*?np.power(param[5],?2.)))??
popt,pcov?=?curve_fit(gaussian,x,y,p0=[3,4,3,6,1,1])??
print?popt??
print?pcov??
plt.plot(x,y,'b+:',label='data')??
plt.plot(x,gaussian(x,*popt),'ro:',label='fit')??
plt.legend()??
plt.show()
borderType= None)函數(shù)
此函數(shù)利用高斯濾波器平滑一張圖像。該函數(shù)將源圖像與指定的高斯核進(jìn)行卷積。
src:輸入圖像
ksize:(核的寬度,核的高度),輸入高斯核的尺寸,核的寬高都必須是正奇數(shù)。否則,將會(huì)從參數(shù)sigma中計(jì)算得到。
dst:輸出圖像,尺寸與輸入圖像一致。
sigmaX:高斯核在X方向上的標(biāo)準(zhǔn)差。
sigmaY:高斯核在Y方向上的標(biāo)準(zhǔn)差。默認(rèn)為None,如果sigmaY=0,則它將被設(shè)置為與sigmaX相等的值。如果這兩者都為0,則它們的值會(huì)從ksize中計(jì)算得到。計(jì)算公式為:
borderType:像素外推法,默認(rèn)為None(參考官方文檔 BorderTypes
)
在圖像處理中,高斯濾波主要有兩種方式:
1.窗口滑動(dòng)卷積
2.傅里葉變換
在此主要利用窗口滑動(dòng)卷積。其中二維高斯函數(shù)公式為:
根據(jù)上述公式,生成一個(gè)3x3的高斯核,其中最重要的參數(shù)就是標(biāo)準(zhǔn)差 ,標(biāo)準(zhǔn)差 越大,核中心的值與周圍的值差距越小,曲線越平滑。標(biāo)準(zhǔn)差 越小,核中心的值與周圍的值差距越大,曲線越陡峭。
從圖像的角度來(lái)說(shuō),高斯核的標(biāo)準(zhǔn)差 越大,平滑效果越不明顯。高斯核的標(biāo)準(zhǔn)差 越小,平滑效果越明顯。
可見,標(biāo)準(zhǔn)差 越大,圖像平滑程度越大
參考博客1:關(guān)于GaussianBlur函數(shù)
參考博客2:關(guān)于高斯核運(yùn)算
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 寬度f(wàn)loat 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值,將其打印出來(lái)
x=np.linspace(-1,1,5)
y=2*x+1
plt.plot(x,y)
plt.show()
2、plt.figure()用來(lái)畫圖,自定義畫布大小
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ù)這些畫出來(lái))
繪圖都可以調(diào)用matplotlib.pyplot庫(kù)來(lái)進(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ǔ)語(yǔ)法函數(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ù)訪問(wèn)
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ù)訪問(wèn)
對(duì)Python中plt的畫圖函數(shù)詳解
今天小編就為大家分享一篇對(duì)Python中plt的畫圖函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
plt.plot()函數(shù)詳解
plt.plot()函數(shù)詳細(xì)介紹 plt.plot(x, y, format_string, **kwargs) 參數(shù) 說(shuō)明 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ù)訪問(wèn)
python圖像處理基礎(chǔ)知識(shí)(plt庫(kù)函數(shù)說(shuō)明)_小草莓爸爸的博客_p...
1.畫圖(plt庫(kù))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ù)訪問(wèn)
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ù)訪問(wèn)
最新發(fā)布 python plt 繪圖詳解(plt.版本)
python plt繪圖詳解
繼續(xù)訪問(wèn)
python圖像處理基礎(chǔ)知識(shí)(plt庫(kù)函數(shù)說(shuō)明)
import matplotlib.pyplot as plt的一些基礎(chǔ)用法,包括直方圖
繼續(xù)訪問(wèn)
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ù)訪問(wèn)
...中plt的畫圖函數(shù)_Ethan的博客的博客_python的plt函數(shù)
1、plt.legend plt.legend(loc=0)#顯示圖例的位置,自適應(yīng)方式 說(shuō)明: 'best' : 0, (only implemented for axes legends)(自適應(yīng)方式) 'upper right' : 1, 'upper left' : 2, 'lower left' : 3, 'lower right' : 4, ...
繼續(xù)訪問(wèn)
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ù)訪問(wèn)
Python深度學(xué)習(xí)入門之plt畫圖工具基礎(chǔ)使用(注釋詳細(xì),超級(jí)簡(jiǎn)單)
Python自帶的plt是深度學(xué)習(xí)最常用的庫(kù)之一,在發(fā)表文章時(shí)必然得有圖作為支撐,plt為深度學(xué)習(xí)必備技能之一。作為深度學(xué)習(xí)入門,只需要掌握一些基礎(chǔ)畫圖操作即可,其他等要用到的時(shí)候看看函數(shù)API就行。 1 導(dǎo)入plt庫(kù)(名字長(zhǎng),有點(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ù)訪問(wèn)
python畫圖plt函數(shù)學(xué)習(xí)_dlut_yan的博客_python plt
figure()函數(shù)可以幫助我們同時(shí)處理生成多個(gè)圖,而subplot()函數(shù)則用來(lái)實(shí)現(xiàn),在一個(gè)大圖中,出現(xiàn)多個(gè)小的子圖。 處理哪個(gè)figure,則選擇哪個(gè)figure,再進(jìn)行畫圖。 參考博客 importmatplotlib.pyplotaspltimportnumpyasnp x=np.arange(-1,1,0.1...
繼續(xù)訪問(wèn)
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ù)訪問(wèn)
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ù)訪問(wèn)
python中plt的含義_對(duì)Python中plt的畫圖函數(shù)詳解
1、plt.legendplt.legend(loc=0)#顯示圖例的位置,自適應(yīng)方式說(shuō)明:'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ù)訪問(wèn)
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)軸的步長(zhǎng)和刻度。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ù)訪問(wèn)
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ù)訪問(wèn)
plt繪圖總結(jié)
matplotlib繪圖
繼續(xù)訪問(wèn)
Python的數(shù)據(jù)科學(xué)函數(shù)包(三)——matplotlib(plt)
繼續(xù)訪問(wèn)
熱門推薦 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ù)訪問(wèn)
python數(shù)據(jù)可視化實(shí)現(xiàn)步驟,Python數(shù)據(jù)可視化圖實(shí)現(xiàn)過(guò)程詳解
Python數(shù)據(jù)可視化圖實(shí)現(xiàn)過(guò)程詳解更多python視頻教程請(qǐng)到菜鳥教程畫分布圖代碼示例:# encoding=utf-8import matplotlib.pyplot as pltfrom pylab import * # 支持中文mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]‘mention...
繼續(xù)訪問(wèn)
matplotlib-plt.plot用法
文章目錄 英語(yǔ)好的直接參考這個(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ù)訪問(wèn)
python Plt學(xué)習(xí)
plt的簡(jiǎn)單學(xué)習(xí)
繼續(xù)訪問(wèn)
plt.show()和plt.imshow()的區(qū)別
問(wèn)題:plt.imshow()無(wú)法顯示圖像 解決方法:添加:plt.show(),即 plt.imshow(image) #image表示待處理的圖像 plt.show() 原理:plt.imshow()函數(shù)負(fù)責(zé)對(duì)圖像進(jìn)行處理,并顯示其格式,而plt.show()則是將plt.imshow()處理后的函數(shù)顯示出來(lái)。 ...
繼續(xù)訪問(wèn)
python題庫(kù)刷題網(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ù)庫(kù)、微服務(wù)、安全、開發(fā)與運(yùn)維9大技術(shù)領(lǐng)域。","link1":...
繼續(xù)訪問(wèn)
python xticks_Python Matplotlib.pyplot.yticks()用法及代碼示例
Matplotlib是Python中的一個(gè)庫(kù),它是數(shù)字的-NumPy庫(kù)的數(shù)學(xué)擴(kuò)展。 Pyplot是Matplotlib模塊的基于狀態(tài)的接口,該模塊提供了MATLAB-like接口。Matplotlib.pyplot.yticks()函數(shù)matplotlib庫(kù)的pyplot模塊中的annotate()函數(shù)用于獲取和設(shè)置y軸的當(dāng)前刻度位置和標(biāo)簽。用法: matplotlib.pyplot.yticks...
繼續(xù)訪問(wèn)
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ù)訪問(wèn)
plt函數(shù)
寫評(píng)論
7
794
122
clear?
close?all
%%%%%%%%%%%%%%%%%%%%%%%%%生成實(shí)驗(yàn)數(shù)據(jù)集
rand('state',0)
sigma_matrix1=eye(2);
sigma_matrix2=50*eye(2);
u1=[0,0];
u2=[30,30];
m1=100;
m2=300;%樣本數(shù)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm1數(shù)據(jù)集
Y1=multivrandn(u1,m1,sigma_matrix1);
Y2=multivrandn(u2,m2,sigma_matrix2);
scatter(Y1(:,1),Y1(:,2),'bo')
hold?on
scatter(Y2(:,1),Y2(:,2),'r*')
title('SM1數(shù)據(jù)集')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sm2數(shù)據(jù)集
u11=[0,0];
u22=[5,5];
u33=[10,10];
u44=[15,15];
m=600;
sigma_matrix3=2*eye(2);
Y11=multivrandn(u11,m,sigma_matrix3);
Y22=multivrandn(u22,m,sigma_matrix3);
Y33=multivrandn(u33,m,sigma_matrix3);
Y44=multivrandn(u44,m,sigma_matrix3);
figure(2)
scatter(Y11(:,1),Y11(:,2),'bo')
hold?on
scatter(Y22(:,1),Y22(:,2),'r*')
scatter(Y33(:,1),Y33(:,2),'go')
scatter(Y44(:,1),Y44(:,2),'c*')
title('SM2數(shù)據(jù)集')
end
function?Y?=?multivrandn(u,m,sigma_matrix)
%%生成指定均值和協(xié)方差矩陣的高斯數(shù)據(jù)
n=length(u);
c?=?chol(sigma_matrix);
X=randn(m,n);
Y=X*c+ones(m,1)*u;
end
如何用python實(shí)現(xiàn)圖像的一維高斯濾波器
現(xiàn)在把卷積模板中的值換一下,不是全1了,換成一組符合高斯分布的數(shù)值放在模板里面,比如這時(shí)中間的數(shù)值最大,往兩邊走越來(lái)越小,構(gòu)造一個(gè)小的高斯包。實(shí)現(xiàn)的函數(shù)為cv2.GaussianBlur()。對(duì)于高斯模板,我們需要制定的是高斯核的高和寬(奇數(shù)),沿x與y方向的標(biāo)準(zhǔn)差(如果只給x,y=x,如果都給0,那么函數(shù)會(huì)自己計(jì)算)。高斯核可以有效的出去圖像的高斯噪聲。當(dāng)然也可以自己構(gòu)造高斯核,相關(guān)函數(shù):cv2.GaussianKernel().
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread(‘flower.jpg‘,0) #直接讀為灰度圖像
for i in range(2000): #添加點(diǎn)噪聲
temp_x = np.random.randint(0,img.shape[0])
temp_y = np.random.randint(0,img.shape[1])
img[temp_x][temp_y] = 255
blur = cv2.GaussianBlur(img,(5,5),0)
plt.subplot(1,2,1),plt.imshow(img,‘gray‘)#默認(rèn)彩色,另一種彩色bgr
plt.subplot(1,2,2),plt.imshow(blur,‘gray‘)
本文翻譯自
上一節(jié)中探討的k-means聚類模型簡(jiǎn)單易懂,但其簡(jiǎn)單性導(dǎo)致其應(yīng)用中存在實(shí)際挑戰(zhàn)。具體而言,k-means的非概率特性及簡(jiǎn)單地計(jì)算點(diǎn)與類蔟中心的歐式距離來(lái)判定歸屬,會(huì)導(dǎo)致其在許多真實(shí)的場(chǎng)景中性能較差。本節(jié),我們將探討高斯混合模型(GMMs),其可以看成k-means的延伸,更可以看成一個(gè)強(qiáng)有力的估計(jì)工具,而不僅僅是聚類。
我們將以一個(gè)標(biāo)準(zhǔn)的import開始
我們看下k-means的缺陷,思考下如何提高聚類模型。正如上一節(jié)所示,給定簡(jiǎn)單,易于分類的數(shù)據(jù),k-means能找到合適的聚類結(jié)果。
舉例而言,假設(shè)我們有些簡(jiǎn)單的數(shù)據(jù)點(diǎn),k-means算法能以某種方式很快地將它們聚類,跟我們?nèi)庋鄯直娴慕Y(jié)果很接近:
從直觀的角度來(lái)看,我可能期望聚類分配時(shí),某些點(diǎn)比其他的更確定:舉例而言,中間兩個(gè)聚類之間似乎存在非常輕微的重疊,這樣我們可能對(duì)這些數(shù)據(jù)點(diǎn)的分配沒(méi)有完全的信心。不幸的是,k-means模型沒(méi)有聚類分配的概率或不確定性的內(nèi)在度量(盡管可能使用bootstrap 的方式來(lái)估計(jì)這種不確定性)。為此,我們必須考慮泛化這種模型。
k-means模型的一種理解思路是,它在每個(gè)類蔟的中心放置了一個(gè)圈(或者,更高維度超球面),其半徑由聚類中最遠(yuǎn)的點(diǎn)確定。該半徑充當(dāng)訓(xùn)練集中聚類分配的一個(gè)硬截?cái)啵喝魏稳ν獾臄?shù)據(jù)點(diǎn)不被視為該類的成員。我們可以使用以下函數(shù)可視化這個(gè)聚類模型:
觀察k-means的一個(gè)重要發(fā)現(xiàn),這些聚類模式必須是圓形的。k-means沒(méi)有內(nèi)置的方法來(lái)計(jì)算橢圓形或橢圓形的簇。因此,舉例而言,假設(shè)我們將相同的數(shù)據(jù)點(diǎn)作變換,這種聚類分配方式最終變得混亂:
高斯混合模型(GMM)試圖找到一個(gè)多維高斯概率分布的混合,以模擬任何輸入數(shù)據(jù)集。在最簡(jiǎn)單的情況下,GMM可用于以與k-means相同的方式聚類。
但因?yàn)镚MM包含概率模型,因此可以找到聚類分配的概率方式 - 在Scikit-Learn中,通過(guò)調(diào)用predict_proba方法實(shí)現(xiàn)。它將返回一個(gè)大小為[n_samples, n_clusters]的矩陣,用于衡量每個(gè)點(diǎn)屬于給定類別的概率:
我們可以可視化這種不確定性,比如每個(gè)點(diǎn)的大小與預(yù)測(cè)的確定性成比例;如下圖,我們可以看到正是群集之間邊界處的點(diǎn)反映了群集分配的不確定性:
本質(zhì)上說(shuō),高斯混合模型與k-means非常相似:它使用期望-最大化的方式,定性地執(zhí)行以下操作:
有了這個(gè),我們可以看看四成分的GMM為我們的初始數(shù)據(jù)提供了什么:
同樣,我們可以使用GMM方法來(lái)擬合我們的拉伸數(shù)據(jù)集;允許full的協(xié)方差,該模型甚至可以適應(yīng)非常橢圓形,伸展的聚類模式:
這清楚地表明GMM解決了以前遇到的k-means的兩個(gè)主要實(shí)際問(wèn)題。
如果看了之前擬合的細(xì)節(jié),你將看到covariance_type選項(xiàng)在每個(gè)中都設(shè)置不同。該超參數(shù)控制每個(gè)類簇的形狀的自由度;對(duì)于任意給定的問(wèn)題,必須仔細(xì)設(shè)置。默認(rèn)值為covariance_type =“diag”,這意味著可以獨(dú)立設(shè)置沿每個(gè)維度的類蔟大小,并將得到的橢圓約束為與軸對(duì)齊。一個(gè)稍微簡(jiǎn)單和快速的模型是covariance_type =“spherical”,它約束了類簇的形狀,使得所有維度都相等。盡管它并不完全等效,其產(chǎn)生的聚類將具有與k均值相似的特征。更復(fù)雜且計(jì)算量更大的模型(特別是隨著維數(shù)的增長(zhǎng))是使用covariance_type =“full”,這允許將每個(gè)簇建模為具有任意方向的橢圓。
對(duì)于一個(gè)類蔟,下圖我們可以看到這三個(gè)選項(xiàng)的可視化表示:
盡管GMM通常被歸類為聚類算法,但從根本上說(shuō)它是一種密度估算算法。也就是說(shuō),GMM適合某些數(shù)據(jù)的結(jié)果在技術(shù)上不是聚類模型,而是描述數(shù)據(jù)分布的生成概率模型。
例如,考慮一下Scikit-Learn的make_moons函數(shù)生成的一些數(shù)據(jù):
如果我們嘗試用視為聚類模型的雙成分的GMM模擬數(shù)據(jù),則結(jié)果不是特別有用:
但是如果我們使用更多成分的GMM模型,并忽視聚類的類別,我們會(huì)發(fā)現(xiàn)更接近輸入數(shù)據(jù)的擬合:
這里,16個(gè)高斯分布的混合不是為了找到分離的數(shù)據(jù)簇,而是為了對(duì)輸入數(shù)據(jù)的整體分布進(jìn)行建模。這是分布的一個(gè)生成模型,這意味著GMM為我們提供了生成與我們的輸入類似分布的新隨機(jī)數(shù)據(jù)的方法。例如,以下是從這個(gè)16分量GMM擬合到我們?cè)紨?shù)據(jù)的400個(gè)新點(diǎn):
GMM非常方便,可以靈活地建模任意多維數(shù)據(jù)分布。
GMM是一種生成模型這一事實(shí)為我們提供了一種確定給定數(shù)據(jù)集的最佳組件數(shù)的自然方法。生成模型本質(zhì)上是數(shù)據(jù)集的概率分布,因此我們可以簡(jiǎn)單地評(píng)估模型下數(shù)據(jù)的可能性,使用交叉驗(yàn)證來(lái)避免過(guò)度擬合。校正過(guò)度擬合的另一種方法是使用一些分析標(biāo)準(zhǔn)來(lái)調(diào)整模型可能性,例如 Akaike information criterion (AIC) 或 Bayesian information criterion (BIC) 。Scikit-Learn的GMM估計(jì)器實(shí)際上包含計(jì)算這兩者的內(nèi)置方法,因此在這種方法上操作非常容易。
讓我們看看在moon數(shù)據(jù)集中,使用AIC和BIC函數(shù)確定GMM組件數(shù)量:
最佳的聚類數(shù)目是使得AIC或BIC最小化的值,具體取決于我們希望使用的近似值。 AIC告訴我們,我們上面選擇的16個(gè)組件可能太多了:大約8-12個(gè)組件可能是更好的選擇。與此類問(wèn)題一樣,BIC建議使用更簡(jiǎn)單的模型。
注意重點(diǎn):這個(gè)組件數(shù)量的選擇衡量GMM作為密度估算器的效果,而不是它作為聚類算法的效果。我鼓勵(lì)您將GMM主要視為密度估算器,并且只有在簡(jiǎn)單數(shù)據(jù)集中保證時(shí)才將其用于聚類。
我們剛剛看到了一個(gè)使用GMM作為數(shù)據(jù)生成模型的簡(jiǎn)單示例,以便根據(jù)輸入數(shù)據(jù)定義的分布創(chuàng)建新樣本。在這里,我們將運(yùn)行這個(gè)想法,并從我們以前使用過(guò)的標(biāo)準(zhǔn)數(shù)字語(yǔ)料庫(kù)中生成新的手寫數(shù)字。
首先,讓我們使用Scikit-Learn的數(shù)據(jù)工具加載數(shù)字?jǐn)?shù)據(jù):
接下來(lái)讓我們繪制前100個(gè),以準(zhǔn)確回憶我們正在看的內(nèi)容:
我們有64個(gè)維度的近1,800位數(shù)字,我們可以在這些位置上構(gòu)建GMM以產(chǎn)生更多。 GMM可能難以在如此高維空間中收斂,因此我們將從數(shù)據(jù)上的可逆維數(shù)減少算法開始。在這里,我們將使用一個(gè)簡(jiǎn)單的PCA,要求它保留99%的預(yù)測(cè)數(shù)據(jù)方差:
結(jié)果是41個(gè)維度,減少了近1/3,幾乎沒(méi)有信息丟失。根據(jù)這些預(yù)測(cè)數(shù)據(jù),讓我們使用AIC來(lái)計(jì)算我們應(yīng)該使用的GMM組件的數(shù)量:
似乎大約110個(gè)components最小化了AIC;我們將使用這個(gè)模型。我們迅速將其與數(shù)據(jù)擬合并確保它已收斂合:
現(xiàn)在我們可以使用GMM作為生成模型在這個(gè)41維投影空間內(nèi)繪制100個(gè)新點(diǎn)的樣本:
最后,我們可以使用PCA對(duì)象的逆變換來(lái)構(gòu)造新的數(shù)字:
大部分結(jié)果看起來(lái)像數(shù)據(jù)集中合理的數(shù)字!
考慮一下我們?cè)谶@里做了什么:給定一個(gè)手寫數(shù)字的樣本,我們已經(jīng)模擬了數(shù)據(jù)的分布,這樣我們就可以從數(shù)據(jù)中生成全新的數(shù)字樣本:這些是“手寫數(shù)字”,不是單獨(dú)的出現(xiàn)在原始數(shù)據(jù)集中,而是捕獲混合模型建模的輸入數(shù)據(jù)的一般特征。這種數(shù)字生成模型可以證明作為貝葉斯生成分類器的一個(gè)組成部分非常有用,我們將在下一節(jié)中看到。