《人工智能數(shù)學基礎》程序代碼_第1頁
《人工智能數(shù)學基礎》程序代碼_第2頁
《人工智能數(shù)學基礎》程序代碼_第3頁
《人工智能數(shù)學基礎》程序代碼_第4頁
《人工智能數(shù)學基礎》程序代碼_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

#【例1-1-1】importnumpyasnpa=np.arange(100)b=a[2:100:8]#從索引2開始到索引100停止,步長為8print(b)#【例1-1-2】importnumpyasnpa=np.arange(100)s=slice(2,100,8)#從索引2開始到索引100停止,間隔為8print(a[s])#【例1-2】importnumpyasnpx=np.array([[1,2,3],[4,5,6],[7,8,9]])y=x[[0,1,2],[0,1,2]]#訪問(0,0),(1,1),(2,2)位置元素print(x)print(y)#【例1-3】importnumpyasnpx=np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])print('數(shù)組是:')print(x)print('大于6的元素是:')#輸出大于6的元素print(x[x>6])#【例1-4】importnumpyasnpa=[[1,2],[3,4]]b=[[5,6],[7,8]]print(np.matmul(a,b))#【例1-5】fromscipy.specialimportcbrtres=cbrt([1000,27,8,125])print(res)#【例1-6】fromscipy.cluster.vqimportkmeans,vq,whitenfromnumpyimportvstack,arrayfromnumpy.randomimportrand#具有3個特征值的樣本數(shù)據(jù)生成data=vstack((rand(100,3)+array([.5,.5,.5]),rand(100,3)))#計算K=4時的中心點centroids,_=kmeans(data,4)print(centroids)#將樣本數(shù)據(jù)中的每個值分配給一個中心點,形成3個聚類。#返回值clx標出了對應索引樣本的聚類,dist表示對應索引樣本與聚類中心的距離。clx,dist=vq(data,centroids)#打印聚類print(clx)#【例1-7】importegratefromnumpyimportexpf=lambdax:x**3i=egrate.quad(f,0,1)print(i)#【例1-8】fromsympyimport*x,y=symbols('x,y')z=x**2+y**2+x*y+2dx=diff(z,x)#對x求偏導print(dx)result=dx.subs({x:1,y:2})print(result)dy=diff(z,y)#對y求偏導print(dy)result=dy.subs({x:1,y:2})print(result)#【例1-9】importnumpyasnpfromscipyimportinterpolateasintpimportmatplotlib.pyplotaspltx=np.linspace(0,4,12)y=np.cos(x**2+4)print(x)print(y)f1=erp1d(x,y,kind='linear')#使用interp1d類創(chuàng)建擬合函數(shù)f2=erp1d(x,y,kind='cubic')#使用interp1d類創(chuàng)建擬合函數(shù)xnew=np.linspace(0,4,30)plt.plot(x,y,'o',xnew,f1(xnew),'-',xnew,f2(xnew),'--')plt.legend(['data','linear','cubic','nearest'],loc='best')plt.show()#【例1-10】importnumpyasnpsamples=np.random.normal(size=500)bins=np.arange(-10,10)histogram=np.histogram(samples,bins=bins,density=True)[0]bins=0.5*(bins[1:]+bins[:-1])fromscipyimportstatspdf=stats.norm.pdf(bins)#norm是一個分布對象importmatplotlib.pyplotaspltplt.plot(bins,histogram)plt.plot(bins,pdf)plt.show()#【例1-11】importnumpyasnpsamples=[65,23,57,92,54,38,87,78,58,92,57,85,82,73,92]print(np.mean(samples))print(stats.scoreatpercentile(samples,40))print(stats.scoreatpercentile(samples,80))#【例1-12】plt.rcParams["font.sans-serif"]=["SimHei"]#設置字體plt.rcParams["axes.unicode_minus"]=False#該語句解決圖像中的“-”負號的亂碼問題importmatplotlib.pyplotasplt#創(chuàng)建圖形對象fig=plt.figure()#添加子圖區(qū)域,參數(shù)值表示[left,bottom,width,height]ax=fig.add_axes([0,0,1,1])#準備數(shù)據(jù)langs=['數(shù)學','程序設計','外語','數(shù)據(jù)庫','機器人']students=[24,45,27,35,39]#繪制柱狀圖ax.bar(langs,students)plt.show()#【例1-13】frommatplotlibimportpyplotaspltimportnumpyasnpplt.rcParams["font.sans-serif"]=["SimHei"]plt.rcParams["axes.unicode_minus"]=Falsefig=plt.figure()ax=fig.add_axes([0,0,1,1])#使得X/Y軸的間距相等ax.axis('equal')#準備數(shù)據(jù)langs=['數(shù)學','程序設計','外語','數(shù)據(jù)庫','機器人']students=[24,45,27,35,39]#繪制餅狀圖ax.pie(students,labels=langs,autopct='%1.2f%%')plt.show()#【例1-14】importmatplotlib.pyplotaspltplt.rcParams["font.sans-serif"]=["SimHei"]plt.rcParams["axes.unicode_minus"]=Falsex=["星期一","星期二","星期三","星期四","星期五","星期六","星期天"]y=[46,57,74,69,72,33,62]plt.plot(x,y,"g",marker='D',markersize=5,label="人數(shù)")plt.xlabel("星期")plt.ylabel("晚自習人數(shù)")plt.title("晚自習情況統(tǒng)計")#顯示圖例plt.legend(loc="best")plt.show()#【例1-15】frommpl_toolkitsimportmplot3dimportnumpyasnpimportmatplotlib.pyplotaspltfig=plt.figure()ax=plt.axes(projection='3d')z=np.linspace(0,1,100)x=z*np.sin(20*z)y=z*np.cos(20*z)c=x**2+y**2ax.scatter3D(x,y,z,c=c)ax.set_title('3維散點圖')plt.show()#【例1-16】importmatplotlib.pyplotaspltnp.random.seed(10)x1=np.random.normal(100,50,500)x2=np.random.normal(80,50,500)x3=np.random.normal(90,10,500)x4=np.random.normal(70,30,500)x5=np.random.normal(80,20,500)#創(chuàng)建繪制小提琴圖的數(shù)據(jù)序列data_to_plot=[x1,x2,x3,x4,x5]#創(chuàng)建一個畫布fig=plt.figure()#創(chuàng)建一個繪圖區(qū)域ax=fig.add_axes([0,0,1,1])#創(chuàng)建一個小提琴圖bp=ax.violinplot(data_to_plot)plt.show()#【實驗一數(shù)據(jù)可視化-1】importmatplotlib.pyplotaspltimportnumpyasnpx=np.arange(-np.pi,np.pi,0.1)y=np.sin(x)plt.plot(x,y)plt.show()#【實驗一數(shù)據(jù)可視化-2】importmatplotlib.pyplotaspltimportnumpyasnpx=np.arange(-np.pi,np.pi,0.1)y=np.sin(x)plt.plot(x,y,color="green",linewidth=2.0,linestyle='-.')plt.show()#【實驗一數(shù)據(jù)可視化-3】importmatplotlib.pyplotaspltimportnumpyasnpx=np.arange(-np.pi,np.pi,0.1)y=np.sin(x)sin,cos=np.sin(x),np.cos(x)plt.plot(x,sin,label='sin(x)')plt.plot(x,cos,color='red',linewidth=2.0,linestyle=':',label='cos(x)')plt.grid(True)plt.legend()plt.show()#【實驗一數(shù)據(jù)可視化-4】importmatplotlib.pyplotaspltimportnumpyasnpx=np.arange(-np.pi,np.pi,0.1)y=np.sin(x)sin,cos=np.sin(x),np.cos(x)plt.plot(x,sin,label='sin(x)')plt.plot(x,cos,color='red',linewidth=2.0,linestyle=':',label='cos(x)')plt.xlim(-4,4)plt.ylim(-1.5,1.5)plt.xlabel('x')plt.ylabel('y')plt.title('sinx')plt.plot(x,y)plt.show()#【例2-1】fromsympyimport*n=symbols('n')a=limit((2*n**2-n+2)/(4*n**2+3*n-2),n,oo)print(a)#【例2-2】fromsympyimport*x=symbols('x')a=limit(((3-x)/(2-x))**(2*x),x,oo)print(a)#【例2-3】fromsympyimport*x=Symbol('x')#定義符號表達式f=sin(x)/x#定義函數(shù)式result=limit(f,x,0)#求x趨于0時極限print('x-->0,limit:',result)result1=limit(f,x,oo)#求x趨于無窮時極限print('x-->oo,limit:',result1)plot(f,(x,-100,100))#【例2-4】importsympyfromsympyimport*x=symbols('x')f=sin(x)**2print(f.diff())#【例2-5】fromsympyimport*x=symbols('x')f=5*x**4+sin(x)print(f.diff(x,2))print(f.diff(x,2).evalf(subs={x:1}))#【例2-6】fromsympyimport*x,y=symbols('xy')F=exp(y)+x*y-y**2dydx=idiff(F,y,x)print(dydx)#【例2-7】fromsympyimport*t=symbols('t')x=exp(t)*cos(t)y=exp(t)*sin(t)f=diff(y,t)/diff(x,t)print(f)#【例2-8】fromsympyimport*x,y=symbols('xy')F=exp(-2*x)*cos(x+2*y)dFdx=F.diff(x)print(dFdx)print(dFdx.evalf(subs={x:0,y:pi/4}))dFdy=F.diff(y)print(dFdy)print(dFdy.evalf(subs={x:0,y:pi/4}))#【例2-10】fromsympyimport*x,y=symbols('xy')F=2*x**3*y-3*x*y**3dFdx=F.diff(x)dFdy=F.diff(y)print("[",dFdx,",",dFdy,"]")#【例2-11】fromsympyimport*x=Symbol('x')f=2*(x**3)-6*(x**2)-18*x+7plot(f,(x,-10,10))dfdx=f.diff(x)print(dfdx)plot(dfdx,(x,-10,10))root=solve(dfdx,x)print('導數(shù)為0的x值為',root)#【例2-12】fromsympyimport*x=Symbol('x')f=x**3-3*x**2-1plot(f,(x,-2,2))dfdx2=f.diff(x,2)print(dfdx2)plot(dfdx2,(x,-2,2))root=solve(dfdx2,x)print('拐點橫坐標為:',root)#【例2-13】fromscipyimportoptimizefun1=lambdax:x**3-6*x**2+9*x+5fun2=lambdax:-(x**3-6*x**2+9*x+5)xmin=optimize.minimize(fun1,0)xmax=optimize.minimize(fun2,0)print('極小值點和極小值為',xmin.x[0],xmin.fun)print('極大值點和極大值為',xmax.x[0],xmax.fun)print('最小值為',min(fun1(-2),xmin.x[0],xmax.x[0],fun1(3)))print('最大值為',max(fun1(-2),xmin.x[0],xmax.x[0],fun1(3)))#【例2-17】importsympyfromsympyimport*x=symbols('x')fx=4*x**3-2**x+3*sin(x)-2/(x**2)-1/sqrt(x)Fx=integrate(fx,x)Fx=simplify(Fx)print(Fx)#【例2-18】importsympyfromsympyimport*x=symbols('x')fx=exp(x)*sin(2*x)Fx=integrate(fx,x)Fx=simplify(Fx)print(Fx)#【例2-19】importsympyfromsympyimport*x=symbols('x')fx=(x+1)*log(x)Fx=integrate(fx,x)Fx=simplify(Fx)print(Fx)#【例2-21】importsympyfromsympyimport*x=symbols('x')fx=(x+2)/sqrt(2*x+1)Fx=integrate(fx,(x,0,4))print(Fx)#【例2-22】importsympyfromsympyimport*x=symbols('x')fx=x*exp(-x)Fx=integrate(fx,(x,0,oo))print(Fx)#【例2-24】importsympyfromsympyimport*x,y,z=symbols('xyz')f=x*yFx=integrate(f,(z,0,1-x-y),(y,0,1-x),(x,0,1))print(Fx)#【例2-28】importsympyfromsympyimport*n=Symbol('n',integer=True)x=Symbol('x')expr=(-1)**n*(x**n)/nan=(-1)**n/n#計算收斂半徑r=limit(abs(an.subs(n,n+1)/an),n,oo)print('r=',r)#判定兩端點是否收斂c1=Sum(expr.subs(x,r),(n,1,oo)).is_convergent()c2=Sum(expr.subs(x,-r),(n,1,oo)).is_convergent()print('x=r:',c1)print('x=-r:',c2)#【實驗二定積分近似值】defsum_fun_xi(xi,f):returnsum([f(each)foreachinxi])defintegral(a,b,n,func):h=(b-a)/float(n)xk=[a+i*hforiinrange(1,n)]returnh/2*(func(a)+2*sum_fun_xi(xk,func)+func(b))if__name__=="__main__":func=lambdax:x**2a,b=1,2n=100print(integral(a,b,n,func))importmatplotlib.pyplotaspltplt.figure("play")ax1=plt.subplot(111)plt.sca(ax1)tmpx=[2+float(8-2)/50*eachforeachinrange(50+1)]plt.plot(tmpx,[func(each)foreachintmpx],linestyle='-',color='black')forranginrange(n):tmpx=[a+float(8-2)/n*rang,a+float(8-2)/n*rang,a+float(8-2)/n*(rang+1),a+float(8-2)/n*(rang+1)]tmpy=[0,func(tmpx[1]),func(tmpx[2]),0]c=['r','y','b','g']plt.fill(tmpx,tmpy,color=c[rang%4])plt.grid(True)plt.show()#【例3-1】importnumpyasnpD=np.array([[1,2,4],[3,1,5],[-2,2,7]])print(D)print(np.linalg.det(D))#【例3-3】importnumpyasnpD=np.array([[5,4,2,1],[2,1,4,2],[3,5,8,6],[1,-1,0,1]])print(D)print(np.linalg.det(D))#【例3-4】importnumpyasnpimportcopydefcramer(d,b):ifd.shape[0]!=d.shape[1]:print('此矩陣不是方陣!')returnifnp.linalg.det(d)==0:print('系數(shù)方陣為0')returnd_i=[]foriinrange(b.shape[0]):d_i.append(copy.deepcopy(d))d_i[i][:,i]=bx=[]foriinrange(b.shape[0]):x.append(np.linalg.det(d_i[i])/np.linalg.det(d))print(x)d=np.array([[2,1,1],[1,2,1],[1,1,2]])b=np.array([15,16,17])cramer(d,b)#【例3-5】importnumpyasnpa=np.array([[1,1,1,0],[2,1,-1,1],[1,2,-1,1],[0,1,2,3]])b=np.array([5,1,2,3])print(np.linalg.solve(a,b))#【例3-7-1】fromnumpyimport*a1=mat([[1,0,3,-1],[2,1,0,2]])a2=mat([[4,1,0],[-1,1,3],[2,0,1],[1,3,4]])a3=(3*a1)*a2print(a3)#【例3-7-2】importnumpyasnpa1=np.mat([[1,0,3,-1],[2,1,0,2]])a2=np.mat([[4,1,0],[-1,1,3],[2,0,1],[1,3,4]])a3=np.dot(3*a1,a2)print(a3)#【例3-8】importnumpyasnpinput=\np.array([[2,1,1,3,6],[12,3,3,6,7],[7,2,3,1,5],[2,3,5,1,2],[0,3,2,2,1]])kernel=np.array([[2,1,3],[2,0,2],[4,2,1]])print(input.shape,kernel.shape)defmy_conv(input,kernel):output_size=(len(input)-len(kernel)+1)res=np.zeros([output_size,output_size],np.float32)foriinrange(len(res)):forjinrange(len(res)):res[i][j]=compute_conv(input,kernel,i,j)returnresdefcompute_conv(input,kernel,i,j):res=0forkkinrange(3):forkinrange(3):res+=input[i+kk][j+k]*kernel[kk][k]returnresprint("卷積后的矩陣為:\n",my_conv(input,kernel))#【例3-9】importnumpyasnpa=np.array([[1,2,3],[4,5,6],[7,8,9]])print(a.T)#【例3-11-1】fromnumpyimport*a=mat([[1,2,-2],[2,-3,2],[-2,-1,1]]);a1=a.I#求逆a2=a1.T#求轉置print(a2)#【例3-11-2】importnumpyasnpa=mat([[1,2,-2],[2,-3,2],[-2,-1,1]]);a1=np.linalg.inv(a)#求逆a2=a1.T#求轉置print(a2)#【例3-12】importnumpyasnpa=np.mat([[1,3,-2,2],[0,2,-1,3],[-2,0,1,5]])r=np.linalg.matrix_rank(a)print("矩陣的秩為:",r)#【例3-17】importnumpyasnpA=np.array([[-1,1,0],[-4,3,0],[1,0,2]])print('打印A:\n{}'.format(A))a,b=np.linalg.eig(A)print('特征值a:\n{}'.format(a))print('特征向量b:\n{}'.format(b))#【例3-21】importnumpyasnpA=np.array([[5,2,-4],[2,1,-2],[-4,-2,5]])B=np.linalg.eigvals(A)#求A的特征根print(A)print(B)ifnp.all(B>0):print('是正定矩陣')else:print('不是正定矩陣')#【實驗三矩陣相乘-1】importnumpyasnpa1=np.mat([[4,-1,2,1],[1,1,0,3],[0,3,1,4]])a2=np.mat([[1,2],[0,1],[3,0],[-1,2]])b1=a1*a2print(b1)#【實驗三矩陣相乘-2】importnumpyasnpa1=np.mat([[4,-1,2,1],[1,1,0,3],[0,3,1,4]])a2=np.mat([[1,2],[0,1],[3,0],[-1,2]])b2=np.dot(a1,a2)print(b2)#【實驗三矩陣相乘-3】a1=[[4,-1,2,1],[1,1,0,3],[0,3,1,4]]a2=[[1,2],[0,1],[3,0],[-1,2]]b3=[[0,0],[0,0],[0,0]]foriinrange(3):forjinrange(2):forkinrange(4):b3[i][j]=b3[i][j]+a1[i][k]*a2[k][j]print(b3)#【例4-1】importitertoolsprint("任取1個組合:")fori,valinenumerate(list(binations('ABCD',1))):print("序號:%s值:%s"%(i+1,''.join(val)))print("任取2個組合:")fori,valinenumerate(list(binations('ABCD',2))):print("序號:%s值:%s"%(i+1,''.join(val)))print("任取3個組合:")fori,valinenumerate(list(binations('ABCD',3))):print("序號:%s值:%s"%(i+1,''.join(val)))print("任取4個組合:")fori,valinenumerate(list(binations('ABCD',4))):print("序號:%s值:%s"%(i+1,''.join(val)))print("任取2個排列:")fori,valinenumerate(list(itertools.permutations('ABCD',2))):print("序號:%s值:%s"%(i+1,''.join(val)))#【例4-2】fromscipy.specialimport*print(comb(5,2))#5個中取2個的組合數(shù)print(perm(5,2))#5個中取2個的排序數(shù)#【例4-3】importnumpyasnpa=np.array([[3,7,8,3],[9,1,2,37]])print('數(shù)組是:')print(a)print('調用sort()函數(shù):')print(np.sort(a))print('按列排序:')print(np.sort(a,axis=0))#在sort函數(shù)中排序字段dt=np.dtype([('name','S10'),('age',int)])a=np.array([("yhw",21),("yl",25),("wm",17),("ysb",27)],dtype=dt)print('數(shù)組是:')print(a)print('按name排序:')print(np.sort(a,order='name'))#【例4-4】importnumpyasnpx=np.array([[2,4,5],[6,7,4],[7,3,9]])print(x)print('大于5的元素的索引:')y=np.where(x>5)print(y)print('使用這些索引來獲取滿足條件的元素:')print(x[y])#定義條件,選擇偶數(shù)元素condition=np.mod(x,2)==0print('按元素的條件值:')print(condition)print('使用條件提取元素:')print(np.extract(condition,x))#【例4-5】fromscipyimportstatsasstsimportnumpyasnpimportmatplotlib.pyplotaspltdata=[3850,3950,4050,3880,3755,3710,3890,4130,3940,4225,3920,3880]month=['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']print('眾數(shù)為:',sts.mode(data))#print('中位數(shù)為:',np.median(data))plt.rcParams["font.sans-serif"]=["SimHei"]#設置字體plt.rcParams["axes.unicode_minus"]=False#該語句解決圖像中的“-”負號的亂碼問題plt.plot(month,data)plt.title("楊老師的工資")plt.show()#【例4-6】fromscipyimportstatsasstsimportnumpyasnpimportmatplotlib.pyplotaspltdata=[3850,3950,4050,3880,3755,3710,3890,4130,3940,4225,3920,3880]month=['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']print('平均工資為:',sts.tmean(data))print('工資極差為:',np.ptp(data))#【例4-7】fromscipyimportstatsasstsimportnumpyasnpdata=[3850,3950,4050,3880,3755,3710,3890,4130,3940,4225,3920,3880]month=['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']print('平均工資標準差為:',sts.tstd(data))#【例4-8】importnumpyasnpimportmatplotlib.pyplotaspltimportrandom#中文顯示plt.rcParams['font.sans-serif']=['simhei']#用代碼實現(xiàn)重復50次拋硬幣的試驗,觀察每次正面朝上的概率#定義做50次試驗,每次拋500次(可以設置不同次數(shù))batch=int(input("請輸入試驗次數(shù):"))samples=500*np.ones(batch,dtype=32)result=[]result_mean=[]#統(tǒng)計每次試驗正面朝上的概率forkinrange(batch):foriinrange(samples[k]):result.append(random.randint(0,1))result_mean.append(np.mean(result))xaxis=list(range(batch))plt.plot(xaxis,result_mean)plt.xlabel('拋硬幣數(shù)')plt.ylabel('正面朝上概率')plt.show()#【例4-11】#A為"發(fā)送信號為0",B為"發(fā)送信號為1",C為"接收信號為0",D為"接收信號為1"P_A=0.5P_B=0.5P_C_A=0.8P_C_B=0.1P_D_A=0.2P_D_B=0.9#正確傳輸信號0、1的概率分別為:P_A_C=(P_C_A*P_A)/(P_C_A*P_A+P_C_B*P_B)P_B_D=(P_D_B*P_B)/(P_D_B*P_B+P_D_A*P_A)print("正確傳輸信號0的概率為:%.3f"%P_A_C)print("正確傳輸信號1的概率為:%.3f"%P_B_D)#接收機正確獲取信源信息的概率P(R)為:print("接收機正確獲取信源信息的概率為:%.2f"%((P_A_C**3)*(P_B_D**2)))#【例4-17】importnumpyasnpimportmatplotlib.pyplotaspltimportmathfromscipyimportstatsn=20p=0.3k=np.arange(0,41)print(k)print("*"*20)binomial=stats.binom.pmf(k,n,p)print(binomial)plt.plot(k,binomial,'o-')plt.title('binomial:n=%i,p=%.2f'%(n,p),fontsize=15)plt.xlabel('numberofsuccess')plt.ylabel('probalilityofsuccess',fontsize=15)plt.grid(True)plt.show()#【例4-19】importnumpyasnpimportmatplotlib.pyplotaspltimportmathx=np.random.poisson(lam=5,size=10000)#lam為λsize為kpillar=20a=plt.hist(x,bins=pillar,density=True,range=[0,pillar],alpha=0.5)plt.plot(a[1][0:pillar],a[0])plt.grid()plt.show()#【例4-24】importnumpyasnpimportmatplotlib.pyplotaspltmu=1#期望為1sigma=3#標準差為3num=10000#個數(shù)為10000rand_data=np.random.normal(mu,sigma,num)count,bins,ignored=plt.hist(rand_data,30,density=True)plt.plot(bins,1/(sigma*np.sqrt(2*np.pi))*np.exp(-(bins-mu)**2/(2*sigma**2)),linewidth=2,color='r')plt.show()#【例4-25】fromscipy.statsimportnormfromscipy.optimizeimportfsolveprint("p=",norm.cdf(6,3,5)-norm.cdf(2,3,5))f=lambdac:norm.cdf(2*c,3,5)-norm.cdf(-3*c,3,5)-0.6print("c=",fsolve(f,0))#【例4-30】importnumpyasnpnum=[88,90,70,75,93,85,85,88,86,85]#求眾數(shù)c=np.bincount(num)#用在numpy中建立元素出現(xiàn)次數(shù)的索引的方法求眾數(shù)num_mod=np.argmax(c)#求中位數(shù)num_med=np.median(num)#求均值num_mea=np.mean(num)#求極差num_ptp=np.ptp(num)#求方差num_var=np.var(num,ddof=1)#用n-1計算方差#求標準差num_std=np.std(num,ddof=1)print("眾數(shù):",num_mod)print("中位數(shù):",num_med)print("均值:",num_mea)print("極差:",num_ptp)print("方差:%5.2f"%num_var)print("標準差:%5.2f"%num_std)#【例4-31-1】importnumpyasnpfromscipy.statsimportpearsonrx=np.array([1,3,8,10,16,18,20])y=np.array([4,5,6,9,11,15,17])r,p=pearsonr(x,y)print(r)print(p)#【例4-31-2】importnumpyasnpfromscipy.statsimportpearsonrx=np.array([1,3,8,10,16,18,20])y=np.array([4,5,6,9,11,15,17])n=len(x)s_xy=np.sum(np.sum(x*y))s_x=np.sum(np.sum(x))s_y=np.sum(np.sum(y))s_x1=np.sum(np.sum(x*x))s_y1=np.sum(np.sum(y*y))r=(n*s_xy-s_x*s_y)/np.sqrt((n*s_x1-s_x*s_x)*(n*s_y1-s_y*s_y))print(r)#【例4-37】fromscipyimportstatsasstsCI=erval(0.95,loc=8.34,scale=0.03)print('置信區(qū)間為:',CI)#【實驗四數(shù)據(jù)統(tǒng)計與分析-1】fromnumpyimportreshape,hstack,mean,median,ptp,var,std,cov,corrcoefimportpandasaspdimportxlrddf=pd.read_excel("d:\shuju.xlsx")#統(tǒng)計數(shù)據(jù)存放在d:\shuju.xlsx中a=df.values#將二維數(shù)據(jù)轉化為一維數(shù)據(jù)h=a[:,::2]#提取奇數(shù)列身高數(shù)據(jù)w=a[:,1::2]#提取偶數(shù)列體重數(shù)據(jù)h=reshape(h,(-1,1))#轉換成列向量w=reshape(w,(-1,1))hw=hstack([h,w])print([mean(h),median(h),ptp(h),var(h),std(h)])#計算均值,中位數(shù),極差,方差,標準差print("協(xié)方差為:%f\n相關系數(shù)為:%f"%(cov(hw.T)[0,1],corrcoef(hw.T)[0,1]))#【實驗四數(shù)據(jù)統(tǒng)計與分析-2】fromnumpyimportreshape,c_importpandasaspdimportxlrddf=pd.read_excel("d:\shuju.xlsx")a=df.values#將二維數(shù)據(jù)轉化為一維數(shù)據(jù)h=a[:,::2]#提取奇數(shù)列身高數(shù)據(jù)w=a[:,1::2]#提取偶數(shù)列體重數(shù)據(jù)h=reshape(h,(-1,1))#轉換成列向量w=reshape(w,(-1,1))df=pd.DataFrame(c_[h,w],columns=["身高","體重"])print("求得的描述統(tǒng)計量如下:\n",df.describe())print("偏度為:\n",df.skew())print("峰度為:\n",df.kurt())print("25%分位數(shù)為:\n",df.quantile(0.25))print("50%分位數(shù)為:\n",df.quantile(0.5))print("90%分位數(shù)為:\n",df.quantile(0.9))#【實驗四數(shù)據(jù)統(tǒng)計與分析-3】fromnumpyimportreshape,c_importpandasaspdimportmatplotlib.pyplotaspltimportxlrdplt.rcParams["font.sans-serif"]=["SimHei"]#設置字體plt.rcParams["axes.unicode_minus"]=Falsedf=pd.read_excel("d:\shuju.xlsx")a=df.values#將二維數(shù)據(jù)轉化為一維數(shù)據(jù)h=a[:,::2]#提取奇數(shù)列身高數(shù)據(jù)w=a[:,1::2]#提取偶數(shù)列體重數(shù)據(jù)h=reshape(h,(-1,1))#轉換成列向量w=reshape(w,(-1,1))#plt.rc('font',size=16)#plt.rc("font",family="SimHei")plt.subplot(121)plt.xlabel("身高")plt.hist(h,10)plt.subplot(122)ps=plt.hist(w,6)plt.xlabel("體重")print("體重的頻數(shù)表為:",ps)plt.savefig("figure4_8.png",dpi=500)plt.show()#【例5-1】importnumpyasnpfromscipy.optimizeimportfminimportmathdeff(x):return3*math.pow(x,4)-8*math.pow(x,3)+6*math.pow(x,2)+7print(fmin(func=f,x0=1))#【例5-2】importnumpyasnpfromscipy.optimizeimportfminimportmathdeff(x):returnmath.pow(x[0],3)+\math.pow(x[1],3)+3*math.pow(x[0],2)+3*math.pow(x[1],2)-9*x[0]#func為函數(shù)名,x0為函數(shù)參數(shù)的起始點print(fmin(func=f,x0=np.array([0,0])))#【例5-3】importsympyassyimportnumpyasnpfromsympy.functionsimportsin,cosimportmatplotlib.pyplotaspltplt.style.use("ggplot")x=sy.Symbol('x')f=cos(x)#求階乘deffactorial(n):ifn<=0:return1else:returnn*factorial(n-1)deftaylor(function,x0,n):i=0p=0whilei<=n:p=p+(function.diff(x,i).subs(x,x0))/(factorial(i))*(x-x0)**ii+=1returnpdefplot():x_lims=[-5,5]x1=np.linspace(x_lims[0],x_lims[1],800)y1=[]forjinrange(1,10,2):func=taylor(f,0,j)print('Taylorexpansionatn='+str(j),func)forkinx1:y1.append(func.subs(x,k))plt.plot(x1,y1,label='order'+str(j))y1=[]plt.plot(x1,np.sin(x1),label='sinofx')plt.xlim(x_lims)plt.ylim([-5,5])plt.xlabel('x')plt.ylabel('y')plt.legend()plt.grid(True)plt.title('Taylorseriesapproximation')plt.show()plot()#【例5-5】importnumpyasnpfromscipy.optimizeimportfminimportmathf=lambdax:math.pow(x[0],2)-4*x[0]+math.pow(x[1],2)-2*x[1]+5#func為函數(shù)名,x0為函數(shù)參數(shù)的起始點print(fmin(func=f,x0=np.array([0,0])))#【例5-6】importmathimportnumpyasnpdeffunc_2d(x):#定義目標函數(shù):x為二維自變量return-math.exp(-(x[0]**2+x[1]**2))defgrad_2d(x):#定義梯度,由目標函數(shù)求偏導而得,返回二維向量deriv0=2*x[0]*math.exp(-(x[0]**2+x[1]**2))deriv1=2*x[1]*math.exp(-(x[0]**2+x[1]**2))returnnp.array([deriv0,deriv1])defgradient_descent_2d(grad,cur_x=np.array([0.1,0.1]),\learning_rate=0.01,precision=0.0001,max_iters=10000):print(f"{cur_x}作為初始值開始迭代...")foriinrange(max_iters):grad_cur=grad(cur_x)ifnp.linalg.norm(grad_cur,ord=2)<precision:break#當梯度趨近為0時,視為收斂cur_x=cur_x-grad_cur*learning_rateprint("第",i,"次迭代:x值為",cur_x)print("最小值點x=",cur_x)returncur_xif__name__=='__main__':gradient_descent_2d(grad_2d,cur_x=np.array([1,-1]),\learning_rate=0.2,precision=0.000001,max_iters=10000)#【例5-9】importnumpyasnpfromscipyimportoptimizez=np.array([1,1,1])a=np.array([[1,4,2],[3,2,0]])b=np.array([8,6])x1_bound=x2_bound=x3_bound=(0,None)res=optimize.linprog(z,A_ub=-a,b_ub=-b,bounds=(x1_bound,x2_bound,x3_bound))print(res)#【例5-10】#導入sympy包,用于求導,方程組求解等等fromsympyimport*#設置變量x1=symbols("x1")x2=symbols("x2")alpha=symbols("alpha")#構造拉格朗日函數(shù)L=60-10*x1-4*x2+x1*x1+x2*x2-x1*x2-alpha*(x1+x2-8)#求導difyL_x1=diff(L,x1)#對變量x1求導difyL_x2=diff(L,x2)#對變量x2求導difyL_alpha=diff(L,alpha)#對alpha求導#求解aa=solve([difyL_x1,difyL_x2,difyL_alpha],[x1,x2,alpha])print(aa)x1=aa.get(x1)x2=aa.get(x2)alpha=aa.get(alpha)print("最優(yōu)解為:",60-10*x1-4*x2+x1*x1+x2*x2-x1*x2-alpha*(x1+x2-8))#【例5-11】fromscipy.optimizeimportminimizeimportnumpyasnpdeffun(args):a,b,c,d=argsv=lambdax:(a+x[0])/(b+x[1])-c*x[0]+d*x[2]returnvdefcon(args):#約束條件分為eq和ineq#eq表示函數(shù)結果等于0;ineq表示表達式大于等于0x1min,x1max,x2min,x2max,x3min,x3max=argscons=({'type':'ineq','fun':lambdax:x[0]-x1min},\{'type':'ineq','fun':lambdax:-x[0]+x1max},\{'type':'ineq','fun':lambdax:x[1]-x2min},\{'type':'ineq','fun':lambdax:-x[1]+x2max},\{'type':'ineq','fun':lambdax:x[2]-x3min},\{'type':'ineq','fun':lambdax:-x[2]+x3max})returnconsif__name__=="__main__":#定義常量值args=(2,1,3,4)#a,b,c,d#設置參數(shù)范圍/約束條件args1=(0.1,0.9,0.1,0.9,0.1,0.9)#x1min,x1max,x2min,x2maxcons=con(args1)#設置初始猜測值x0=np.asarray((0.5,0.5,0.5))res=minimize(fun(args),x0,method='SLSQP',constraints=cons)print(res.fun)print(res.success)print(res.x)#【實驗五利用牛頓迭代法法求解方程的根】importmath#函數(shù)式deff1(x,f):iff==0:returnx**2-3*x+2-math.exp(x)else:return2*x-3-math.exp(x)#函數(shù)式的求導#計算循環(huán)次數(shù)count=0#設初始值為2x1=2print("迭代初始值為:x=2")i=x1-f1(x1,0)/f1(x1,1)while(abs(x1-i)>=1e-8)&(f1(x1,1)!=0):#print的格式化輸出,count和x1去補前面兩個空位print("迭代次數(shù):%f,迭代值為:%f"%(count,x1))x2=x1-f1(x1,0)/f1(x1,1)i=x1#暫時存儲x1的值x1=x2count+=1#【例6-4】importnumpyasnpA=np.array([[-0.2,0.07,0.083],[0.1,-0.1,0.067],[1,1,1]])b=np.array([0,0,1])x=np.linalg.solve(A,b)print(x)#【例6-8-1】fromnumpyimport*importnumpyasnpQ=mat([[0.3,0.3,0],[0.15,0.25,0.3],[0.1,0.1,0.3]])A=np.eye(3)-QN=A.Iprint(N)#【例6-8-2】fromnumpyimport*importnumpyasnpN=mat([[1.618,0.686,0.294],[0.441,1.601,0.686],[0.294,0.327,1.569]])R=mat([[0,0.4],[0,0.3],[0.35,0.15]])B=N*Rprint(B)#【例6--8-3】fromnumpyimport*importnumpyasnpB=mat([[0.1029,0.8971],[0.2401,0.7596],[0.54915,0.45105]])A=mat([400,120,280])C=A*Bprint(C)#【例6-9】importjiebaseg_list=jieba.cut("我來到南京信息職業(yè)技術學院",cut_all=True)print("全模式:"+"/".join(seg_list))#全模式seg_list=jieba.cut("我來到南京信息職業(yè)技術學院",cut_all=False)print("精確模式:"+"/".join(seg_list))#精確模式seg_list=jieba.cut("他來到了南京紫金山山頂")#默認是精確模式print("默認模式:"+"/".join(seg_list))seg_list=jieba.cut_for_search("小明碩士畢業(yè)于北京清華大學")#搜索引擎模式print("搜索引擎模式:"+"/".join(seg_list))#【實驗六馬爾科夫分析】importnumpyasnpA=np.array([[-0.1,0.1,0.1],[0.2,-1,0.2],[1,1,1]])b=np.array([0,0,1])x=np.linalg.solve(A,b)print(x)#【例7-1】importpandasaspdimportnumpyasnp#一數(shù)值中缺兩個值da=pd.DataFrame(data=[0,np.nan,np.nan,1])#利用線性插值函數(shù)進行插值補全erpolate()#【例7-2】importnumpyasnpfromscipyimportinterpolateimportpylabasplx=np.linspace(0,10,11)y=np.sin(x)xnew=np.linspace(0,10,101)pl.plot(x,y,"ro")f=erp1d(x,y,kind="quadratic")ynew=f(xnew)pl.plot(xnew,ynew)pl.show()#【例7-3】fromerpolateimportlagrangex=[1,2,3,4,5,0]y=[1,2,2,6,-1,-1]a=lagrange(x,y)#輸出拉格朗日多項式print(a)#輸出拉格朗日多項式在1,2,3處的值print(a(1),a(2),a(3))#【例7-4】importnumpyasnpfromscipyimportinterpolateimportpylabasplx=np.linspace(0,10,11)y=np.cos(x)xnew=np.linspace(0,10,101)pl.plot(x,y,"ro")pl.rcParams['font.sans-serif']=['SimHei']#指定默認字體pl.rcParams['axes.unicode_minus']=False#解決負數(shù)坐標顯示問題#x值a=["nearest","slinear","quadratic","cubic"]b=["階梯插值","線性插值","2階樣條插值","3階樣條插值"]fork,vinzip(a,b):#插值方式f=erp1d(x,y,kind=k)ynew=f(xnew)pl.plot(xnew,ynew,label=str(v))pl.legend()pl.show()#【例7-5】importnumpyasnpfrommpl_toolkits.mplot3dimportAxes3Dimportmatplotlibasmplfromscipyimportinterpolateimportmatplotlib.cmascmimportmatplotlib.pyplotaspltdeffunc(x,y):return(x+y)*np.exp(-5.0*(x**2+y**2))x=np.linspace(-1,1,20)y=np.linspace(-1,1,20)x,y=np.meshgrid(x,y)fvals=func(x,y)fig=plt.figure(figsize=(9,6))#Drawsub-graph1ax=plt.subplot(1,2,1,projection='3d')surf=ax.plot_surface(x,y,fvals,rstride=2,cstride=2)ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel('f(x,y)')#二維插值newfunc=erp2d(x,y,fvals,kind='cubic')#計算100*100的網(wǎng)格上的插值xnew=np.linspace(-1,1,100)ynew=np.linspace(-1,1,100)fnew=newfunc(xnew,ynew)xnew,ynew=np.meshgrid(xnew,ynew)ax2=plt.subplot(1,2,2,projection='3d')surf2=ax2.plot_surface(xnew,ynew,fne

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論