python 中的倒置标准最小二乘回归 (ISR)
Inverted Standard Least-Squares Regression (ISR) in python
嗨,我只是想执行倒最小二乘回归
Y -> m *x + c
python 中是否已经有任何可用的包或函数?
你可以试试statsmodels
它有一些回归算法,如果它没有你要找的东西,检查其他人的实现并用它来实现你的
我假设 inverted least squares regression
你的意思是最小化最佳拟合线和数据之间的水平距离而不是垂直距离的回归。如果是这种情况,您可以简单地 运行 x
在 y
上的回归,然后设置 m* = 1/m
和 a*=-a/m
。这是一个例子:
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression
# DATA
x = np.linspace(0, 1, 100).reshape((-1,1))
y = 0.5*x + np.random.normal(0, 0.1, size=x.shape)
# INVERTED LINEAR REGRESSION
model = LinearRegression(fit_intercept=True)
model.fit(y,x)
m = 1/model.coef_[0][0]
a = -model.intercept_/model.coef_[0][0]
# PLOT
plt.scatter(x,y, color='r', s=12, alpha=0.5)
plt.plot(x, m*x + a)
plt.xlabel('x')
plt.ylabel('y')
嗨,我只是想执行倒最小二乘回归
Y -> m *x + c
python 中是否已经有任何可用的包或函数?
你可以试试statsmodels
它有一些回归算法,如果它没有你要找的东西,检查其他人的实现并用它来实现你的
我假设 inverted least squares regression
你的意思是最小化最佳拟合线和数据之间的水平距离而不是垂直距离的回归。如果是这种情况,您可以简单地 运行 x
在 y
上的回归,然后设置 m* = 1/m
和 a*=-a/m
。这是一个例子:
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression
# DATA
x = np.linspace(0, 1, 100).reshape((-1,1))
y = 0.5*x + np.random.normal(0, 0.1, size=x.shape)
# INVERTED LINEAR REGRESSION
model = LinearRegression(fit_intercept=True)
model.fit(y,x)
m = 1/model.coef_[0][0]
a = -model.intercept_/model.coef_[0][0]
# PLOT
plt.scatter(x,y, color='r', s=12, alpha=0.5)
plt.plot(x, m*x + a)
plt.xlabel('x')
plt.ylabel('y')