import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.scatter(xSortRawArr, ySortRawArr) ax.plot(xSortRawArr, ySortHatArr) plt.show()
scatter:畫原始點
plot:畫擬合曲線
這樣就實現了回歸圖的擬合效果圖。
當然由於有很多擬合情況,具體效果還是需要調參,然后看效果,以及十折交叉驗證,選擇一個泛化最好的算法
pyplot.plot()
在使用嶺回歸時,發現使用二維數組作為參數,也可以畫出曲線,例如:yArr = array([[1,2,3,4], [5,6,7,8], [9,10,11,12], [15,16,17,18]])
直接使用yArr的話,將以列數據作為y軸的數據,而x軸,則按照常樣本的個數,進行自然數增長。代碼為:
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) yArr = array([[1,2,3,4], [5,6,7,8], [9, 10, 11, 12], [15, 16, 17, 18]]) ax.plot(yArr) plt.show()
結果:
當然,可以使用自定義的x軸數據,如:xArr = arange(10,14,1),這樣的話,就是自定義x軸了。代碼如下:
import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) yArr = array([[1,2,3,4], [5,6,7,8], [9, 10, 11, 12], [15, 16, 17, 18]]) x = arange(10, 14, 1) ax.plot(x, yArr) # 此時,x軸為4個數據,因為有4個樣本;yArr有4個樣本,4個特征,特征值為y軸值 plt.show()
結果如下:
利用plot畫二維數據,有很大的優點:
1.可以比較不同特征值的變化過程;從這里可以引申出在不同迭代下權重參數的變化過程。比如在嶺回歸:
cm_regression = CmRegression() abX, abY = cm_regression.loadDataSet2('abalone.txt') ridgeWeights = cm_regression.ridgeTest(abX, abY) xArr = arange(-10, 20, 1) import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.plot(xArr, ridgeWeights) # 此時,x軸為xArr有30個數據;ridgeWeights 最為y軸值
plt.xlabel('log(lambda)')
plt.show()
運行結果: