分類模型決策邊界中的np.meshgrid()與np.c_[]兩個函數的使用


np.meshgrid

np.c_[xx.ravel(), yy.ravel()]

代碼
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),
            np.arange(y_min, y_max, 0.02)
           )
predict = clf.predict(np.c_[xx.ravel(), yy.ravel()])
predict = predict.reshape(xx.shape)
# xx.ravel()
print("xx: ", xx, len(xx))
print("xx.reval: ", xx.ravel(), len(xx.ravel()))

print("yy: ", yy, len(yy))
print("yy.reval: ", yy.ravel(), len(yy.ravel()))

print("np.c_[xx.ravel(), yy.ravel()]", np.c_[xx.ravel(), yy.ravel()])
執行結果
xx:  [[3.3  3.32 3.34 ... 7.94 7.96 7.98]
 [3.3  3.32 3.34 ... 7.94 7.96 7.98]
 [3.3  3.32 3.34 ... 7.94 7.96 7.98]
 ...
 [3.3  3.32 3.34 ... 7.94 7.96 7.98]
 [3.3  3.32 3.34 ... 7.94 7.96 7.98]
 [3.3  3.32 3.34 ... 7.94 7.96 7.98]] 220
    
xx.reval:  [3.3  3.32 3.34 ... 7.94 7.96 7.98] 51700
    
yy:  [[1.   1.   1.   ... 1.   1.   1.  ]
 [1.02 1.02 1.02 ... 1.02 1.02 1.02]
 [1.04 1.04 1.04 ... 1.04 1.04 1.04]
 ...
 [5.34 5.34 5.34 ... 5.34 5.34 5.34]
 [5.36 5.36 5.36 ... 5.36 5.36 5.36]
 [5.38 5.38 5.38 ... 5.38 5.38 5.38]] 220
    
yy.reval:  [1.   1.   1.   ... 5.38 5.38 5.38] 51700
    
np.c_[xx.ravel(), yy.ravel()] [[3.3  1.  ]
 [3.32 1.  ]
 [3.34 1.  ]
 ...
 [7.94 5.38]
 [7.96 5.38]
 [7.98 5.38]]
解釋
xx, yy = np.meshgrid([1, 1, 1],
                     [2, 2, 2, 2, 2]
           )
  • np.meshgrid: 會返回兩個np.arange類型的列表

  • xx: 共len([2, 2, 2, 2, 2])行,每行元素均為[1, 1, 1]

  • yy:共len([1, 1, 1])列, 每列元素均為[2, 2, 2, 2, 2]

  • 返回的兩個矩陣均為:len([2, 2, 2, 2, 2])行,len([1, 1, 1])的矩陣

  • 具體請參考: https://www.cnblogs.com/klchang/p/10633972.html

  • xx.reval():將多為列表轉換為一維列表,

    xx = [
        [1, 1, 1],
        [2, 2, 2]
    ]
    
    xx.reval()
    [1, 1, 1, 2, 2, 2]
    
  • np.c_[xx.ravel(), yy.ravel()]: np.c_:是按行連接兩個矩陣,就是把兩矩陣左右相加,要求行數相等,類似於pandas中的merge()。

    a = [1, 1, 1]
    b = [2, 2, 2]
    
    np.c_[a, b] ===>
    [
        [1, 2],
        [1, 2],
        [1, 2]
    ]
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM