当前位置:
首页 > Python基础教程 >
-
python关于拟合的实现
嘿,说到拟合,这可是咱们全栈开发中数据分析、机器学习里头的常客了。Python里头拟合数据,咱们常用的库就是NumPy和SciPy,当然,还有强大的机器学习库scikit-learn。今儿个,我就给你简单聊聊这几个库里头拟合数据的那些事儿。
### 用NumPy拟合线性数据
NumPy虽然主要是干数值计算这块的,但它也提供了个`polyfit`函数,能帮咱们拟合多项式。比如说,拟合个线性数据:
### 用SciPy拟合非线性数据
SciPy里头有个`curve_fit`函数,这个函数能拟合各种自定义的非线性函数。比如说,拟合个二次函数:
### 用scikit-learn拟合复杂模型
scikit-learn里头拟合模型就更方便了,它封装了好多常用的机器学习算法。比如说,拟合个线性回归模型:
怎么样,这几种拟合方法是不是都挺方便的?NumPy适合快速拟合简单的多项式,SciPy适合拟合自定义的非线性函数,而scikit-learn则适合拟合各种复杂的机器学习模型。具体用哪个,还得看你的数据和需求啦。
最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:
### 用NumPy拟合线性数据
NumPy虽然主要是干数值计算这块的,但它也提供了个`polyfit`函数,能帮咱们拟合多项式。比如说,拟合个线性数据:
import numpy as np
import matplotlib.pyplot as plt
# 假设咱们有些数据点
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 3, 2, 5, 4])
# 拟合一次多项式(就是线性拟合啦)
coefficients = np.polyfit(x, y, 1)
polynomial = np.poly1d(coefficients)
# 预测值
y_pred = polynomial(x)
# 画图瞅瞅
plt.scatter(x, y, label='Data points')
plt.plot(x, y_pred, label='Fitted line', color='red')
plt.legend()
plt.show()
import matplotlib.pyplot as plt
# 假设咱们有些数据点
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 3, 2, 5, 4])
# 拟合一次多项式(就是线性拟合啦)
coefficients = np.polyfit(x, y, 1)
polynomial = np.poly1d(coefficients)
# 预测值
y_pred = polynomial(x)
# 画图瞅瞅
plt.scatter(x, y, label='Data points')
plt.plot(x, y_pred, label='Fitted line', color='red')
plt.legend()
plt.show()
### 用SciPy拟合非线性数据
SciPy里头有个`curve_fit`函数,这个函数能拟合各种自定义的非线性函数。比如说,拟合个二次函数:
from scipy.optimize import curve_fit
# 自定义个二次函数
def quadratic(x, a, b, c):
return a * x**2 + b * x + c
# 假设咱们有些数据点
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 4, 9, 16, 25]) # 完美二次函数数据
# 拟合数据
params, covariance = curve_fit(quadratic, x, y)
# 打印拟合参数
print(f"Fitted parameters: a={params[0]}, b={params[1]}, c={params[2]}")
# 预测值
y_pred = quadratic(x, *params)
# 画图瞅瞅
plt.scatter(x, y, label='Data points')
plt.plot(x, y_pred, label='Fitted curve', color='red')
plt.legend()
plt.show()
# 自定义个二次函数
def quadratic(x, a, b, c):
return a * x**2 + b * x + c
# 假设咱们有些数据点
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 4, 9, 16, 25]) # 完美二次函数数据
# 拟合数据
params, covariance = curve_fit(quadratic, x, y)
# 打印拟合参数
print(f"Fitted parameters: a={params[0]}, b={params[1]}, c={params[2]}")
# 预测值
y_pred = quadratic(x, *params)
# 画图瞅瞅
plt.scatter(x, y, label='Data points')
plt.plot(x, y_pred, label='Fitted curve', color='red')
plt.legend()
plt.show()
### 用scikit-learn拟合复杂模型
scikit-learn里头拟合模型就更方便了,它封装了好多常用的机器学习算法。比如说,拟合个线性回归模型:
from sklearn.linear_model import LinearRegression
# 假设咱们有些数据点
x = np.array([[1], [2], [3], [4], [5]]).T # 注意,scikit-learn里头X得是个二维数组
y = np.array([1, 3, 2, 5, 4])
# 创建模型
model = LinearRegression()
# 拟合数据
model.fit(x, y)
# 打印拟合参数
print(f"Coefficient: {model.coef_[0]}, Intercept: {model.intercept_}")
# 预测值
y_pred = model.predict(x)
# 画图瞅瞅
plt.scatter(x, y, label='Data points')
plt.plot(x, y_pred, label='Fitted line', color='red')
plt.legend()
plt.show()
# 假设咱们有些数据点
x = np.array([[1], [2], [3], [4], [5]]).T # 注意,scikit-learn里头X得是个二维数组
y = np.array([1, 3, 2, 5, 4])
# 创建模型
model = LinearRegression()
# 拟合数据
model.fit(x, y)
# 打印拟合参数
print(f"Coefficient: {model.coef_[0]}, Intercept: {model.intercept_}")
# 预测值
y_pred = model.predict(x)
# 画图瞅瞅
plt.scatter(x, y, label='Data points')
plt.plot(x, y_pred, label='Fitted line', color='red')
plt.legend()
plt.show()
怎么样,这几种拟合方法是不是都挺方便的?NumPy适合快速拟合简单的多项式,SciPy适合拟合自定义的非线性函数,而scikit-learn则适合拟合各种复杂的机器学习模型。具体用哪个,还得看你的数据和需求啦。
最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比