機器學習乾貨君|原創
本文內容較豐富,建議收藏後閱讀
引言
“為什麼要學習函數可視化?”
這是筆者的答案:
函數可視化對學習機器學習非常重要!函數可視化有助於提升我們對機器學習模型的直觀感受。
這是神經網絡模型擬合數據過程中的一張截圖:
正如筆者在乾貨|簡單易懂的人工神經網絡原理與本質中詮釋的:神經網絡模型就是一個y=f(x)的函數。如果我們能用一個動態的圖像來實時體現出神經網絡擬合數據的過程,那我們就能很輕鬆地對這個過程產生極好的理解。這些內容都將出現在機器學習乾貨君未來的文章中。但我們仍要從基礎開始。話不多說,讓我們開始今天的教程吧!
準備工作
首先我們要配置好最基本的Python環境,可以參考筆者的這篇文章:
其次,我們要用pip的方法為Python安裝好matplotlib庫,步驟如下:
- Win+R輸入cmd打開命令提示符
- 在打開的命令提示符界面中直接輸入:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
這段命令的意義是用清華大學鏡像源下載並安裝“matplotlib”這個庫
提示安裝成功後,我們就準備完畢啦
2維曲線的可視化
這是一個拋物線y = x^2的圖像
要繪製這條曲線,首先我們要了解一下matplotlib繪製函數圖像的原理:
我們知道,計算機是運行在一定精度上的,繪製函數圖像也不例外。其實matplotlib是將空間中很多有限個符合y = x^2的點連接起來,以繪製函數圖像的。而這些點的座標是由我們自己來確定。代碼如下:
- 我們先載入matplotlib及numpy兩個庫:
import numpy as np
from matplotlib import pyplot as plt
- 其次,我們創建大量符合y = x^2的點
x = np.linspace(-10,10,1000) # 見下方解釋
y = x**2
linspace簡明解釋:這個函數將均勻創建包含1000個-10到10的數的列表
可見,x與y可以直接映射到2維空間中的1000個點上。
- 最後繪製曲線並顯示:
plt.plot(x, y)
plt.show()
我們便得到了上圖的結果。通過改變y與x的關係,我們便可以可視化任意2維曲線了!
3維曲面的可視化
這是曲面z =y^2 + x^2的圖像
與2維的情形相似,代碼如下:
- 首先,載入庫:
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D # 三維製圖我們需要載入額外的庫
- 其次,我們創建數據:
x = np.linspace(-10,10,1000)
y = np.linspace(-10,10,1000)
x, y = np.meshgrid(x,y) # 請見下方解釋
z = y**2 + x**2
meshgrid簡明解釋:原本x,y只代表三維空間中x軸,y軸上的點。meshgrid函數通過讓x,y中的數據任意組合,使x,y能夠代表xy平面上的點。
- 創建窗體的對象(這一步在2維的情形中可以省略)、繪圖、並顯示:
fig = plt.figure()
ax = Axes3D(fig) # 創建對象
ax.plot_wireframe(x,y,z) # 繪製圖像
plt.show()
我們便得到了上圖的結果。通過改變z與(x, y)的關係,我們便可以可視化任意3維曲面了!
機器學習乾貨君致力於原創易於理解的技術原理與細節文章
I Studied Hard,
So YOU Don't Have To !
歡迎大家關注: )
相關乾貨:
- 想要深入瞭解機器學習領域中5大最本質、最關鍵的算法嗎?詳見
- 想要深入瞭解鑄就AlphaGo的強化學習、監督學習和無監督學習嗎?詳見