用加权线性回归拟合(0,4π)的正弦函数
时间: 2024-11-09 18:22:34 浏览: 18
在Python中,我们可以使用`scikit-learn`库中的`LinearRegression`模型进行线性回归,但通常情况下,正弦函数是非线性的,而线性回归适用于线性关系的数据。然而,如果你仍然想尝试用线性回归近似正弦函数,特别是在给定的区间内数据可能呈现出近似的线性关系时,你可以对数据进行某种形式的变换,比如傅立叶变换或多项式展开。
以下是一个简单的例子,我们将使用`numpy`和`matplotlib`来创建数据并进行拟合:
```python
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 定义原点到4π的正弦函数
def sine_function(x):
return np.sin(x)
# 创建数据集,选择等间距的点
x_data = np.linspace(0, 4 * np.pi, 100)
y_data = sine_function(x_data) + np.random.normal(0, 0.1, x_data.shape) # 添加噪声模拟实际观测值
# 拟合数据
model = LinearRegression()
model.fit(x_data.reshape(-1, 1), y_data)
# 计算预测值
y_pred = model.predict(x_data.reshape(-1, 1))
# 绘制原始数据、拟合直线以及正弦曲线
plt.scatter(x_data, y_data, label='Data')
plt.plot(x_data, y_pred, color='red', label='Fitted Line')
plt.plot(x_data, sine_function(x_data), 'g--', label='True Sine Function')
plt.legend()
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Linear Regression Fit on Sine Data')
plt.show()
# 注意:这只是一个近似,效果并不理想
```
在这个例子中,我们试图用线性回归去拟合非线性的正弦函数,结果可能会偏差较大,因为线性回归假设的是线性关系。如果需要更精确地拟合正弦函数,应使用诸如`PolynomialFeatures`结合`LinearRegression`或者直接使用`SineCurve`这样的函数拟合器。
阅读全文