程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python的meshgrid用法和3D庫 mpl_toolkits.mplot3d 與PolynomialFeatures多項式庫學習

編輯:Python

meshgrid

 

1 import numpy as np

2 from matplotlib import pyplot as plt
3 from mpl_toolkits.mplot3d import Axes3D
4 x = np.array([0,1,2])
5 y = np.array([0,1])
6 X,Y = np.meshgrid(x,y)#X,Y擴展成了矩陣,
7 print(X)
8 print(Y)
9 theta0, theta1, theta2 = 2, 3, 4
10 ax = Axes3D(plt.figure())#用來畫三維圖
11 Z = theta0 + theta1*X + theta2*Y#求z值
12 plt.plot(X,Y,'r.')#此時你會發現繪畫出的是3*2個點,這些點組成一個網格,切每個點的坐標是X*Y的笛卡爾積
13 ax.plot_surface(X,Y,Z)#用來畫三維圖
14 plt.show()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

​具體也可以參考這篇博客

mpl_toolkits.mplot3d

​關於3D繪圖的博客

繪圖時用到劃分面板的方法

使用add_subplot

 

import numpy as np

import matplotlib.pyplot as plt
x = np.arange(0, 100)
fig = plt.figure()
ax1 = fig.add_subplot(221)
ax1.plot(x, x)
ax2 = fig.add_subplot(222)
ax2.plot(x, -x)
ax3 = fig.add_subplot(223)
ax3.plot(x, x ** 2)
ax4 = fig.add_subplot(224)
ax4.plot(x, np.log(x))
plt.show()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

 

使用subplot方法

import numpy as np

from matplotlib import pyplot as plt
x = np.arange(10)
plt.subplot(221)
plt.plot(x,x)
plt.subplot(223)
plt.plot(x,-x)
plt.show()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

 

 

 

PolynomialFeatures

1 import numpy as np

2 import matplotlib.pyplot as plt
3 from sklearn.preprocessing import PolynomialFeatures#多項式
4 from sklearn.linear_model import LinearRegression
5
6 # 載入數據
7 data = np.genfromtxt("job.csv", delimiter=",")
8 x_data = data[1:,1]
9 y_data = data[1:,2]
10 plt.scatter(x_data,y_data)
11 plt.show()
12 #維度必須是二維
13 x_data = x_data[:,np.newaxis]
14 y_data = y_data[:,np.newaxis]
15 # 定義多項式回歸,degree的值可以調節多項式的特征
16 poly = PolynomialFeatures(degree=4)
17 # 特征處理
18 x_poly = poly.fit_transform(x_data)
19 # 定義回歸模型
20 model = LinearRegression()
21 # 訓練模型
22 model.fit(x_poly,y_data)
23 plt.plot(x_data,y_data,'b.')
24 plt.plot(x_data,model.predict(poly.fit_transform(x_data)),'r')
25 plt.show()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

 

作者:你的雷哥

本文版權歸作者所有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連接,否則保留追究法律責任的權利。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved