径向基函数拟合 python
时间: 2023-06-10 17:08:02 浏览: 444
径向基函数是一种广泛用于函数逼近和插值的方法。在 Python 中,我们可以使用 `scikit-learn` 包的 `RBF` 类来实现径向基函数的拟合。
首先,我们需要导入必要的库和数据:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.linear_model import Ridge
# 生成随机数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()
y += 0.2 * np.random.randn(len(y))
```
在上面的代码中,我们生成了一个包含 100 个样本的随机数据集,其中 X 和 y 分别是自变量和因变量。
然后,我们使用 `rbf_kernel` 函数计算径向基函数的核矩阵:
```python
# 计算径向基函数的核矩阵
gamma = 1.0 # gamma 参数控制径向基函数的形状
K = rbf_kernel(X, X, gamma=gamma)
```
接着,我们可以使用岭回归模型进行拟合:
```python
# 岭回归拟合
alpha = 0.1 # alpha 参数控制正则化强度
model = Ridge(alpha=alpha)
model.fit(K, y)
```
最后,我们可以使用拟合模型对新的数据进行预测,并绘制拟合曲线:
```python
# 生成测试数据
X_test = np.linspace(0, 5, 100)[:, None]
K_test = rbf_kernel(X_test, X, gamma=gamma)
# 预测并绘图
y_pred = model.predict(K_test)
plt.scatter(X, y, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.show()
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics.pairwise import rbf_kernel
from sklearn.linear_model import Ridge
# 生成随机数据
np.random.seed(0)
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()
y += 0.2 * np.random.randn(len(y))
# 计算径向基函数的核矩阵
gamma = 1.0 # gamma 参数控制径向基函数的形状
K = rbf_kernel(X, X, gamma=gamma)
# 岭回归拟合
alpha = 0.1 # alpha 参数控制正则化强度
model = Ridge(alpha=alpha)
model.fit(K, y)
# 生成测试数据
X_test = np.linspace(0, 5, 100)[:, None]
K_test = rbf_kernel(X_test, X, gamma=gamma)
# 预测并绘图
y_pred = model.predict(K_test)
plt.scatter(X, y, color='black')
plt.plot(X_test, y_pred, color='blue', linewidth=3)
plt.show()
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)