问题很简单.我有三个方程:OmegaMIX=Beta1Omega1+beta2Omega2,我想通过线性回归找到最佳系数,其中截距为0.我已经得到了代码,但是Beta1和Beta2是概率,所以它一定是Beta1+Beta2=1,但事实并非如此.这怎么能设置呢? 这是现有的代码:
from sklearn import linear_model
inputfilename = 'JO.csv' #input
df = pd.read_csv(inputfilename)
x = df.drop('OmegaMIX',axis=1) #Reference temperature
y = df['OmegaMIX'] #Multiparametric LIRs
regr = linear_model.LinearRegression(positive=True,fit_intercept=False)
regr.fit(x, y)
print('\u03B21 = ', regr.coef_[0])
print('\u03B22 = ', regr.coef_[1])
print("Quality = ", regr.score(x, y, sample_weight=None))
输出结果为:
β1 = 0.33995522604783796
β2 = 0.5794270911721245
Quality = 0.9995968335914979
输入文件为:
OmegaMIX,Omega1,Omega2
2.70,4.43,2.09
1.84,3.00,1.37
0.50,1.19,0.17