Weak12 Matplotlib Homework

这里写图片描述
代码:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
x = np.linspace(0,2,1000)
y = np.power(np.sin(x-2),2)*np.exp(-np.power(x,2))
plt.plot(x,y,'g-',label='$sin^2(x-2)e^-x^2$')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title('Plotting a function ')
plt.legend()
plt.show()

输出:
这里写图片描述

这里写图片描述
生成一个10个带有20个观察值的变量X。生成参数向量b然后得到向量y=Xb+z,z是具有标准正态分布的向量。
现在只使用y和X解出b的估计值b’,式子是找出使得距离和最小的b‘(也就是最小二乘法),然后画出真实值b和估计值b’。

代码:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

X = np.random.randint(0,10,(20,10))
b = np.random.randint(0,10,(10,1))
z = np.random.normal(0,1,(20,1))
y = X@b+z
#法方程求解最小二乘法 A.T * A * b = A.T * y
b_pro = np.linalg.inv(X.T@X) @ X.T @ y
plt.plot(b,'ro',label='exact value')
plt.plot(b_pro,'bx',label='approximation')
plt.legend()
plt.show()

输出:

这里写图片描述

这里写图片描述
生成一个有10000个观测值的向量z,其分布由你喜欢的特殊分布决定。使用高斯核密度估计来算出z的分布,并且画出一个有25个区间的柱状图。
代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
z = np.random.normal(0,5,10000)
'''
arr: 需要计算直方图的一维数组
bins: 直方图的柱数,可选项,默认为10
density: 是否将得到的直方图向量归一化(按比例缩短到单位长度,方向不变)。默认为0
'''
plt.hist(z,bins=25,color='b',density=1)
#核密度估计方法估计概率密度函数(PDF)随机变量的非参数方法
gkde = stats.gaussian_kde(z)
ind = np.linspace(-20,20,10000) #[-20,20]上取点
gkdeind = gkde.evaluate(ind)
plt.plot(ind,gkdeind,color='r')
plt.title('Histogram')
plt.show()

输出:
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值