日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python制作等高线云图,matplot 画等高线图

發(fā)布時間:2025/3/15 python 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python制作等高线云图,matplot 画等高线图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

matplot 除了可以畫比較簡單的圖之外,還可以類似于等高線這樣的圖。在機器學習里面可以用于可視化分類的效果,比如在可視化svm分類的時候,就可以這樣的方式去畫圖,在可視化上往往會有很好的效果。

代碼如下:import?matplotlib.pyplot?as?plt

import?numpy?as?npdef?f(x,y):

#?the?height?functions

return?2?*?x?+y

n?=?256#?將(-3,+3)?的這個區(qū)間分成256x?=?np.linspace(-3,?3,?n)??#?x?shape?(256,)y?=?np.linspace(-3,?3,?n)??#?y?shape?(256,)#?np.meshgrid?形成一個平面網格,#?X代表這個平面點的橫坐標,Y代表這個平面點的縱坐標#?X?or?Y?shape?is?:?(256,?256)?#?這個函數(shù)的具體功能在下面講X,Y?=?np.meshgrid(x,?y)

#?接下來進行顏色填充#?使用函數(shù)plt.contourf把顏色加進去,位置參數(shù)分別為:X,?Y,?f(X,Y)。plt.contourf(X,?Y,?f(X,?Y))#?更多的參數(shù),可以畫出不同的風格,alpha=.75?表示透明度?,?cmap=plt.cm.hot?表示f(X,Y)?的值對應到color?map的暖色組中尋找對應顏色#plt.contourf(X,?Y,?f(X,?Y),?8,?alpha=.75,?cmap=plt.cm.hot)plt.show()

結果如下圖:

image.png

如果要畫的點是離散的取值怎么辦?

for example,畫一個二維平面,上面的點的取值是離散的(比如說,0或1)。在機器學習經常需要可視化這樣的東西,給一個平面,上面有很多點,有的屬于正類,有的屬于負類,那么如果可視化?"""

畫一個二維平面,上面的點的取值是離散的(比如說,0或1),

比如說機器學習經常需要可視化這樣的東西,給一個平面,上面有很多點,有的屬于正類,有的屬于負類,那么如果可視化?

下面,是一個解決方案

"""import?matplotlib.pyplot?as?plt

import?numpy?as?np

n?=?10x?=?np.linspace(-3,?3,?n)

y?=?np.linspace(-3,?3,?n)

X,Y?=?np.meshgrid(x,?y)#?X,Y指的是一個?x?屬于[-3,3],y屬于[-3,3]的二維平面#?z表示的是在這個二維平面內點的取值#?np.random.randint(0,2,X.shape)?指的是生成一個shape形狀的矩陣,里面的取值是0或1z=np.random.randint(0,2,X.shape)"""

rand?=?np.random.randint(0,2,(3,8))

print(rand)

[[1?1?0?0?1?0?1?0]

[0?1?0?1?0?1?0?0]

[0?0?1?0?0?1?0?0]]

"""plt.contourf(X,?Y,?z)

plt.show()

結果如下:

image.png

使用matplot畫圖的時候,常用的幾個numpy函數(shù):

np.meshgrid() 函數(shù)

一個簡單的示例代碼如下:x?=?np.arange(-2,2)

y?=?np.arange(?0,3)???#生成一位數(shù)組,其實也就是向量x

Out[31]:?array([-2,?-1,??0,??1])

y

Out[32]:?array([0,?1,?2])#將兩個一維數(shù)組變?yōu)槎S矩陣ret_x?,ret_y?=?np.meshgrid(x,y)

#?ret_x??可以理解為?x?縱向擴展ret_x??Out[36]:

array([[-2,?-1,??0,??1],

[-2,?-1,??0,??1],

[-2,?-1,??0,??1]])#?ret_y?可以理解為?y?橫向擴展ret_y?Out[37]:

array([[0,?0,?0,?0],

[1,?1,?1,?1],

[2,?2,?2,?2]])

如果我們想把 一個平面上面,x 屬于[-2,1],y屬于[0,2]的區(qū)域 里面的點畫出來。np.meshgrid()就可以提供這樣的功能。

它的返回值ret_x , ret_y 維度是相同的,分別表示了這個區(qū)域內點的橫坐標和縱坐標。

np.c_ or np.r_ 函數(shù)

np.c_ or np.r_ 函數(shù)的作用是按行或者是按列合并向量import?numpy?as?np

a?=?np.array([1,2,3])

b?=?np.array([5,2,1])#?np.r_按row來組合array#?a,b?必須是向量print?(np.r_[a,b])#?輸出#?[1?2?3?5?2?1]#?np.c_按colunm來組合arrayprint?(np.c_[a,b])"""

#?輸出

[[1?5]

[2?2]

[3?1]]

"""

舉個例子:

svm 非線性核分類"""

一個 非線性svm分類器 的demo

"""import?numpy?as?npimport?matplotlib.pyplot?as?pltfrom?matplotlib?import?stylefrom?sklearn?import?svm#style.use("ggplot")#?構造了一個非線性的數(shù)據(jù)X?=?np.array([[1,1],[5,5],[5,1],[1,5],[2.5,2.5],[2,3],[3,2],[2,2],[3,3]])

y?=?[1,1,1,1,0,0,0,0,0]

plt.scatter(X[:,?0],?X[:,?1],?c?=?y)#plt.show()#svc?=?svm.SVC(kernel='linear',C=1.0)?#?線性核#svc?=?svm.SVC(kernel='rbf',C=1.0,gamma=1)??#如果是非線性核 可以還不同的gamma值svc?=?svm.SVC(kernel='rbf',C=1.0,gamma='auto')

svc.fit(X,y)

h?=?0.01x_min,?x_max?=?X[:,?0].min()?-?1,?X[:,?0].max()?+?1y_min,?y_max?=?X[:,?1].min()?-?1,?X[:,?1].max()?+?1xx,?yy?=?np.meshgrid(np.arange(x_min,?x_max,?h),np.arange(y_min,?y_max,?h))

plt.subplot(1,?1,?1)

Z?=?svc.predict(np.c_[xx.ravel(),?yy.ravel()])

Z?=?Z.reshape(xx.shape)

plt.contourf(xx,?yy,?Z,?cmap=plt.cm.Paired,?alpha=0.8)

plt.scatter(X[:,?0],?X[:,?1],?c=y,?cmap=plt.cm.Paired)

plt.xlim(xx.min(),?xx.max())

plt.title("SVC?with?kernel?"+svc.kernel)

plt.show()

image.png

作者:愛秋刀魚的貓

鏈接:https://www.jianshu.com/p/0e11ecf0c0b6

總結

以上是生活随笔為你收集整理的python制作等高线云图,matplot 画等高线图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。