You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用固定斜率进行线性回归并计算截距?

固定斜率的线性回归求解截距方法

你需求的固定斜率求截距的线性回归完全可行,而且有比你设想的近似方法更简单、准确的实现方式,核心是通过最小化残差平方和推导解析解,或者用scikit-learn做变通拟合,以下是具体实现:

方法一:直接用解析解计算(最简便)

固定斜率为(k)时,拟合直线(y = kx + b)的最优截距(b),本质是最小化所有样本的残差平方和(\sum_{i=1}^n (y_i - (kx_i + b))^2)。对(b)求导并令导数为0,可直接推导出:
[b = \text{mean}(y_i - k \cdot x_i)]

代码实现

import numpy as np

# 替换为你的固定斜率值
fixed_slope = 1.5
XX = np.array(plotx_aj).reshape((-1, 1))
YY = np.array(ploty_aj)

# 计算最优截距
optimal_intercept = np.mean(YY - fixed_slope * XX.flatten())

# 生成拟合直线的预测值
y_fit = fixed_slope * XX.flatten() + optimal_intercept

方法二:用scikit-learn变通拟合

如果想沿用scikit-learn的回归框架,可以将原问题转化为拟合常数项的问题:把方程变形为(y - kx = b),此时(b)相当于一个没有自变量的模型输出,只需构造全1的特征矩阵来拟合。

代码实现

from sklearn.linear_model import LinearRegression
import numpy as np

fixed_slope = 1.5
XX = np.array(plotx_aj).reshape((-1, 1))
YY = np.array(ploty_aj)

# 构造新的目标变量:y - kx
Y_transformed = YY - fixed_slope * XX.flatten()
# 构造全1的特征矩阵(对应常数项b的输入)
X_constant = np.ones_like(XX)

# 关闭截距拟合,因为我们已经把截距作为目标变量处理
model = LinearRegression(fit_intercept=False)
model.fit(X_constant, Y_transformed)

optimal_intercept = model.coef_[0]

这两种方法都比你设想的旋转近似法更高效、准确,不需要复杂的轮廓点处理,直接基于原始数据计算即可。

内容的提问来源于stack exchange,提问作者matthieu balikdjian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:13:00