如何在Python中执行二次回归?
二次方程是一种对自变量集之间的关系进行建模的方法是二次回归,或者我们可以说获得最适合数据集合的抛物线方程的技术称为二次回归。我们使用 R 平方度量来衡量二次回归的相对预测能力。
二次方程方程的形式为:
y=
where a, b , c are constants and a ≠ 0.
术语二次是指具有 2 次方的方程。
使用的数据集:点击这里
Python中的二次回归
代码从导入必要的包开始,然后使用 read_csv() 读取 CSV 文件并可视化数据。使用 seaborn 散点图可视化数据。向数据添加多项式线以查看拟合。 np.polyfit() 和 np.poly1d() 用于创建二次拟合和二次方程。
Syntax: numpy.polyfit (X, Y, deg, rcond=None, full=False, w=None, cov=False)
parameters:
- X: array like object, it represents the x coordinates.
- Y:array like object, it represents the y coordinates.
- deg: integer, degree of the polynomial .
R平方度量用于衡量预测能力。 R 平方值确定因值的方差比例。 r2 值一般在 0 到 1 之间。接近 1 的 r 平方值相当不错。
Python3
# importing packages and modules
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import r2_score
import scipy.stats as stats
dataset = pd.read_csv('ball.csv')
sns.scatterplot(data=dataset, x='time',
y='height', hue='time')
plt.title('time vs height of the ball')
plt.xlabel('time')
plt.ylabel('height')
plt.show()
# degree 2 polynomial fit or quadratic fit
model = np.poly1d(np.polyfit(dataset['time'],
dataset['height'], 2))
# polynomial line visualization
polyline = np.linspace(0, 10, 100)
plt.scatter(dataset['time'], dataset['height'])
plt.plot(polyline, model(polyline))
plt.show()
print(model)
# r square metric
print(r2_score(dataset['height'],
model(dataset['time'])))
输出:
2
2.008 x - 21.69 x + 121.7
0.8133556222534604
R 平方值高于 0.7,因此这意味着二次拟合适合数据。