python3利用Axes3D庫(kù)畫(huà)3D模型圖
Python3利用Axes3D庫(kù)畫(huà)3D模型圖,供大家參考,具體內(nèi)容如下
最近在學(xué)習(xí)機(jī)器學(xué)習(xí)相關(guān)的算法,用python實(shí)現(xiàn)。自己實(shí)現(xiàn)兩個(gè)特征的線性回歸,用Axes3D庫(kù)進(jìn)行建模。
python代碼
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 三維,兩個(gè)特征
fig = plt.figure(figsize=(8, 6)) #設(shè)置圖標(biāo)的大小
ax = fig.add_subplot(111, projection='3d') # 111的意思是把畫(huà)布分為1行1列,畫(huà)在第一個(gè)方格內(nèi)。其實(shí)就是整個(gè)畫(huà)布。
# 創(chuàng)建樣本,注意兩個(gè)特征不能線性相關(guān),否則無(wú)法用最小二乘解參數(shù)
X1 = np.arange(-4, 4, 0.1)
m = len(X1)
X2 = np.random.rand(m)*5
# print(X2)
# print(X1)
# 堆疊全1數(shù)組和X1以及X2形成樣本的矩陣,倒置,用以矩陣乘法
X = np.vstack((np.full(m, 1), X1, X2)).T
# y = 15*X1 + 3 * X2 + theta0
# 自定義樣本輸出
Y = X1 + 3 * X2 + 3*np.random.randn(m)
# 利用標(biāo)準(zhǔn)方程(最小二乘法求解theta)
theta = np.dot(np.dot(np.linalg.inv(np.dot(np.transpose(X), X)),
np.transpose(X)), Y)
print(theta)
# 構(gòu)造網(wǎng)格 meshgrid函數(shù)可以通過(guò)延伸矩陣構(gòu)造多維坐標(biāo)中的網(wǎng)格坐標(biāo)。
M, N = np.meshgrid(X1, X2)
# zip函數(shù)構(gòu)建一個(gè)多元祖[(x1,y1),(x2,y2)...],ravel函數(shù)將一個(gè)多維數(shù)組合并成一維數(shù)組
Z = np.array([theta[1] * d + theta[2]*p + theta[0] for d, p in zip(np.ravel(M), np.ravel(N))]).reshape(M.shape)
# 根據(jù)網(wǎng)格和函數(shù)構(gòu)建圖形 suface是一個(gè)完整的面
ax.plot_surface(M, N, Z)
# scatter是散點(diǎn)圖
ax.scatter(X1, X2, Y, c='r')
# 設(shè)置坐標(biāo)軸的名稱
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
圖形如下

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-08-08
使用Python的OpenCV模塊識(shí)別滑動(dòng)驗(yàn)證碼的缺口(推薦)
這篇文章主要介紹了使用Python的OpenCV模塊識(shí)別滑動(dòng)驗(yàn)證碼的缺口,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Python使用sigthief簽發(fā)證書(shū)的實(shí)現(xiàn)步驟
Windows 系統(tǒng)中的一些非常重要文件通常會(huì)被添加數(shù)字簽名,其目的是用來(lái)防止被篡改,能確保用戶通過(guò)互聯(lián)網(wǎng)下載時(shí)能確信此代碼沒(méi)有被非法篡改和來(lái)源可信,從而保護(hù)了代碼的完整性、保護(hù)了用戶不會(huì)被病毒、惡意代碼和間諜軟件所侵害,本章將演示證書(shū)的簽發(fā)與偽造2021-06-06
pycharm 復(fù)制代碼出現(xiàn)空格的解決方式
這篇文章主要介紹了pycharm 復(fù)制代碼出現(xiàn)空格的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
Python3.6基于正則實(shí)現(xiàn)的計(jì)算器示例【無(wú)優(yōu)化簡(jiǎn)單注釋版】
這篇文章主要介紹了Python3.6基于正則實(shí)現(xiàn)的計(jì)算器,涉及Python基于正則表達(dá)式的算術(shù)式遍歷、查找及數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
python 實(shí)現(xiàn)二叉搜索樹(shù)的四種方法
本文主要介紹了python 實(shí)現(xiàn)二叉搜索樹(shù)的四種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

