numpy生成隨機數據實例
一、總結
一句話總結:
A、用np的隨機數函數:有正有負:np.random.randn(3,3) #三行三列正態分布隨機數據
B、y3 = 0.89*x + 1.47 + 0.2*np.random.randn(100):注意x有多少維,隨機數就應該是多少,比如x是100維,隨機數也是100維
1、生成 y = 0.89x + 1.47 的隨機數據?
x = np.linspace(-1,1,100)
y3 = 0.89*x + 1.47 + 0.2*np.random.randn(100) # x是n為數據,隨機數也整成n維數據,這樣方便一一相加
2、如下代碼生成y = 0.89x + 1.47隨機數據的問題?
|||-begin
x = np.linspace(-1,1,100)
y3 = 0.89*x + 1.47 + 0.2*np.random.randn(1)
|||-end
導致每個y加的隨機數一樣,沒達到隨機數的目的,可以變成y3 = 0.89*x + 1.47 + 0.2*np.random.randn(100)
二、numpy生成隨機數據實例
博客對應課程的視頻位置:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1,1,100) # print(x)
In [15]:
# 設置散點圖y數據
y = [] for i in range(len(x)): yy = 0.89*x[i] + 1.47 + 0.2*np.random.randn(1) # print(yy) y.append(yy) # print(np.array(y)) # 這樣做太笨了 # 這里不行,因為10*np.random.randn(1) 固定了,導致每一個x都加了一樣的10*np.random.randn(1)
In [45]:
y3 = 0.89*x + 1.47 + 0.2*np.random.randn(100) y3
Out[45]:
In [2]:
y = 0.89*x + 1.47 + 0.2*np.random.randn(100) y
Out[2]:
In [11]:
# for i in range(100):
# print(np.random.randn(1))
In [3]:
# 設置直線數據
y2 = 0.89*x + 1.47
In [4]:
plt.scatter(x,y) # yy = 0.89*x[i] + 1.47 plt.plot(x,y2,c='r') plt.show()
In [5]:
# 隨機生成直線的x和y
random_w = np.random.randn(120) random_b = np.random.randn(120) #print(random_x) #print(random_y)
In [7]:
# 讓直線變動,動態生成圖
from matplotlib import animation from matplotlib import pylab %pylab fig,ax=plt.subplots() # print(fig,ax) line,=ax.plot(x,y2) def animate(i): # line.set_ydata((0.89+i)*x + 1.47) # line.set_ydata((0.89+0.5*i)*x + 1.47+0.3*i) line.set_ydata((random_w[i])*x + random_b[i]) # print(i) return line, def init(): line.set_ydata(y2) return line, ani=animation.FuncAnimation(fig=fig,func=animate,frames=100,init_func=init,interval=200,blit=False) ani.save('test.gif', writer='imagemagick', fps=30) plt.show()
In [ ]: