數據分析之繪製邊界以及np.c_和np.r_用法

這裏記錄一下繪製分類邊界的方法。記錄一下meshgrid,pcolormesh的使用方法

import numpy as np
# 抓取數據
iris = datasets.load_iris()
x = iris.data[:, 1:3]
y = iris.target[:]
k = 15 # 設置KNN k=15,計算周圍臨近的15個點

# 圖片,x,y每一步的步長
h = 0.02

# 顏色分類
    cmap_light = ListedColormap(["#FFAAAA", "#AAFFAA", "#AAAAFF"])
    cmap_bold = ListedColormap(["#FF0000", "#00FF00", "#0000FF"])
    model = KNeighborsClassifier(n_neighbors=15) # 設置訪問周圍15個點
    model.fit(x, y) # 自適應, 訓練數據

# 四個數描述圖片顯示範圍
xmin, xmax = x[:, 0].min() , x[:, 0].max()
ymin, ymax = x[:, 1].min() , x[:, 1].max()

# 生成網格
xx, yy = np.meshgrid(np.arange(xmin, xmax, h),np.arange(ymin, ymax, h))

# 預測
# np.c_是按照列合併,列數相等,np.r_按照行合併,行數相等
z = model.predict(np.c_[xx.ravel(), yy.ravel()])
z = z.reshape(xx.shape)

# 顯示背景顏色
plt.pcolormesh(xx, yy, z, cmap=cmap_light)

 # 顯示點
    
plt.scatter(x[:,0], x[:,1], c=y, cmap=cmap_bold)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title(u"分類")
plt.show()

對於代碼中的np.c_,其並不是一個方法,更像是一個數組元素的訪問方式,因爲其使用[],而不是()。

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a)
print(np.c_[a, b])

在這裏插入圖片描述
這裏可以看到,反悔了一個新數組,並且將兩個數組中的元素通過列合併。
在這裏插入圖片描述

同上,np.r_則在行上合併,
在這裏插入圖片描述
這裏從兩行數據,變成了四行數據。

總結:

np.r_是按行連接兩個矩陣,就是把兩矩陣上下相加,要求列數相等=>因爲是在行合併,所以列數相等
在這裏插入圖片描述
這裏列數不相等就直接報錯。
在這裏插入圖片描述

np.c_是按列連接兩個矩陣,就是把兩矩陣左右相加,要求行數相等
在這裏插入圖片描述
這裏行數不相等的話就直接報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章