问题很简单.我有三个方程: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

推荐答案

我不认为这可以在Sklear上完成.我宁愿使用CVXPY,因为您可以控制约束.

下面是一个例子:

import pandas as pd
import cvxpy as cp

df = pd.read_csv('JO.csv')

# Setting out matrix X and our vector y, cvxpy needs them to be numpy arrays
X = df.drop('OmegaMIX', axis=1).values
y = df['OmegaMIX'].values

# Defining the variables of the problem
beta1 = cp.Variable()
beta2 = cp.Variable()

# setting the constraints
constraints = [beta1 >= 0, beta2 >= 0, beta1 + beta2 == 1]

# Defining the linear regression problem
objective = cp.Minimize(cp.sum_squares(X[:, 0] * beta1 + X[:, 1] * beta2 - y))

# Solving the probelem
problem = cp.Problem(objective, constraints)
problem.solve()

# printing the betas
print('\u03B21 =', beta1.value)
print('\u03B22 =', beta2.value)
print('\u03B21 + \u03B22 =', (beta1.value + beta2.value))
print("Quality =", problem.value)

Python相关问答推荐

code _tkinter. Tcl错误:窗口路径名称错误.!按钮4"

剧作家Python没有得到回应

使用LineConnection动画1D数据

使用plotnine和Python构建地块

发生异常:TclMessage命令名称无效.!listbox"

pyscript中的压痕问题

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

如果满足某些条件,则用另一个数据帧列中的值填充空数据帧或数组

如何在表中添加重复的列?

如何保持服务器发送的事件连接活动?

SQLAlchemy bindparam在mssql上失败(但在mysql上工作)

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

在单次扫描中创建列表

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

python中csv. Dictreader. fieldname的类型是什么?'

跳过嵌套JSON中的级别并转换为Pandas Rame

如何在海上配对图中使某些标记周围的黑色边框

如何在Python中将超链接添加到PDF中每个页面的顶部?

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

将数字数组添加到Pandas DataFrame的单元格依赖于初始化