gpt4 book ai didi

python - 具有强制非零 y 截距的线性回归

转载 作者:行者123 更新时间:2023-12-05 02:51:04 33 4
gpt4 key购买 nike

我想运行线性回归,y 轴截距强制为 0.115。这是我试过的代码。我设置 fit_intercept=True 以获得非零 y 轴截距,但我可以将其设置为一个值吗?

另外,我怎样才能得到要绘制的最佳拟合线而不是连接每个点的线?

提前致谢。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
x=np.array([0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]).reshape(-1,1)
y=np.array([0.113, 0.116, 0.130, 0.150, 0.150, 0.160, 0.180, 0.210, 0.220, 0.260, 0.280])
regression=LinearRegression(fit_intercept=True).fit(x,y)
r_sq=round(regression.score(x,y),4)
m=round(regression.coef_[0],4)
b=round(regression.intercept_,4)
print("r_sq:", r_sq,"m:",m,"b:",b)
plt.figure()
plt.scatter(x,y)
plt.title('A')
plt.ylabel('X')
plt.xlabel('Y')
plt.plot(x,y,'r--',label='measured')
plt.legend(loc='best')

最佳答案

从数据中减去要修复的 y 截距并设置 fit_intercept=False

例如

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression

x = np.array([0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]).reshape(-1, 1)
y = np.array([0.113, 0.116, 0.130, 0.150, 0.150, 0.160, 0.180, 0.210, 0.220, 0.260, 0.280])

fig, ax = plt.subplots()

for fit, y_intercept in zip((True, False), (0.0, 0.115)):
regression = LinearRegression(fit_intercept=fit)
regression.fit(x, y - y_intercept)

r_sq = regression.score(x, y - y_intercept)
m = regression.coef_[0]
b = regression.intercept_ + y_intercept

print(f"Fit intercept: {regression.fit_intercept}")
print(f"r_sq: {r_sq:0.4f}\nm: {m:0.4f}\nb: {b:0.4f}")

ax.plot(x, y, "bo")
ax.plot(
x,
regression.predict(x) + y_intercept,
"r" + "--" * fit,
label=f"Fit Intercept: {regression.fit_intercept}",
)

ax.set_title("A")
ax.set_ylabel("X")
ax.set_xlabel("Y")

ax.legend(loc="best")

plt.show()

打印:

Fit intercept: True
r_sq: 0.9473
m: 0.0017
b: -0.0192
Fit intercept: False
r_sq: 0.9112
m: 0.0014
b: 0.0000

关于python - 具有强制非零 y 截距的线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63404907/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com