用Python生成y=sin(x)的十个训练样本 代码
时间: 2024-05-21 20:11:13 浏览: 22
import numpy as np
import matplotlib.pyplot as plt
# 生成 x 坐标
x = np.linspace(0, 2*np.pi, 10)
# 计算 y 坐标
y = np.sin(x)
# 绘制图像
plt.plot(x, y, 'ro')
plt.show()
相关问题
从二次回归模型Y=sin(X)+ε(X服从均匀分布U(0,2π),ε服从标准正态分布)产生500 个样本(X1,Y1),(X2,Y2),…,(X500,Y500),利用python作出Y关于X的N-W回归函数曲线.
好的,我会根据你的要求回答问题。对于你的问题,可以按照以下步骤进行实现。
首先,我们需要生成数据集。可以使用numpy包中的random模块生成服从均匀分布和标准正态分布的随机数。
代码如下:
``` python
import numpy as np
import matplotlib.pyplot as plt
# 设置随机数种子,保证每次生成的随机数相同
np.random.seed(0)
# 生成500个均匀分布的随机数
X = np.random.uniform(0, 2*np.pi, 500)
# 生成服从标准正态分布的随机数
epsilon = np.random.randn(500)
# 根据二次回归模型生成Y
Y = np.sin(X) + epsilon
```
接下来,我们需要对数据进行N-W回归分析。可以使用statsmodels包中的api进行实现。首先,我们需要安装statsmodels包:
``` python
!pip install statsmodels
```
然后,我们可以使用以下代码进行N-W回归分析:
``` python
from statsmodels.nonparametric.smoothers_lowess import lowess
# 使用LOWESS算法计算N-W回归函数
nw = lowess(Y, X, frac=0.3)
# 绘制数据散点图和N-W回归函数曲线
plt.figure(figsize=(10, 6))
plt.scatter(X, Y, alpha=0.5, label='Data')
plt.plot(nw[:, 0], nw[:, 1], 'r', label='N-W Regression')
plt.legend(loc='best')
plt.show()
```
运行完以上代码后,就可以得到Y关于X的N-W回归函数曲线的图像了。
从二次回归模型y=sin(x)+ε(服从均匀分布u(0,2π),ε服从标准正态分布)产生500个样本(x1,y1),(x2,y2),...,(x500,y500),做出y关于x的n-w回归函数曲线,python代码实现
好的,以下是代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.regression.quantile_regression import QuantReg
# 生成数据
np.random.seed(123)
x = np.random.uniform(low=0, high=2*np.pi, size=500)
y = np.sin(x) + np.random.randn(500)
# 定义n和w
n = 10
w = 0.5
# 计算分位数回归函数
def get_qr(x, y, tau):
qr = QuantReg(y, sm.add_constant(x)).fit(q=tau)
return qr.params
# 计算n-w回归函数
def nw_reg(x, y, n, w):
m = len(x)
beta_hat = np.zeros(m)
for i in range(m):
qr_tau = np.zeros(n)
for j in range(n):
qr_tau[j] = get_qr(x, y - x*beta_hat, j/n)[1]
beta_hat[i] = (1-w)*np.mean(qr_tau) + w*np.median(qr_tau)
return beta_hat
# 计算n-w回归函数曲线上的点
x_range = np.linspace(0, 2*np.pi, 100)
y_nw = nw_reg(x, y, n, w)
y_hat = np.zeros(100)
for i in range(100):
qr_tau = np.zeros(n)
for j in range(n):
qr_tau[j] = get_qr(x, y - x*y_nw, j/n)[1]
y_hat[i] = np.mean(qr_tau)
# 绘制图像
plt.scatter(x, y, alpha=0.3)
plt.plot(x_range, np.sin(x_range), color='red', linestyle='dashed', label='True Regression Function')
plt.plot(x_range, y_hat, color='green', label='NW Regression Function')
plt.legend()
plt.show()
```
其中,我们使用了StatsModels库中的QuantReg函数来进行分位数回归,然后根据n-w回归函数的公式进行计算,最后绘制出n-w回归函数曲线。