在Python中获取线性回归中每一行的系数

Posted

技术标签:

【中文标题】在Python中获取线性回归中每一行的系数【英文标题】:Getting coefficient of each row in linear regression in Python 【发布时间】:2018-12-11 11:01:38 【问题描述】:

所以我从 CSV 文件中读取并尝试使用获取每一行的系数

df = pd.read_csv(os.path.join(path))
X = df['param_a']
y= df['param_b']
X_train, X_test, y_train, y_test= train_test_split(X,y)
reg = linear_model.LinearRegression()
reg.fit(X_train, y_train)


print('Coefficients: \n', reg.coef_)

这会返回一个错误:

"Expected 2D array, got 1D array instead:\narray=[-100    0    0  100  -20  250  200 -125 -250    0   20 -250 -200  125  -10].\nReshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample."

我正在尝试获取每个对应行的系数到我的网格。

任何人,请帮忙?谢谢

【问题讨论】:

【参考方案1】:

问题取决于您定义Xy 的方式。 您应该尝试添加一对额外的方括号。 从而改变这一点:

X = df['param_a']
y= df['param_b']

到这里:

X = df[['param_a']]
y= df[['param_b']]

希望对你有帮助

【讨论】:

它仍然向我返回相同的错误:“预期的二维数组,而不是一维数组:\narray=[-125 100 -10 250 -200 10 -125 0 125 0 250 -100 -250 125 -20]。\n如果您的数据具有单个特征,则使用 array.reshape(-1, 1) 重塑您的数据,如果数据包含单个样本,则使用 array.reshape(1, -1)。" @Forozo,它只返回一个值 [[ 0.00110844]]。是否可以获得每一行的系数?谢谢 系数并不是这样工作的。简单地说,系数向您展示了列在计算目标向量 y 中的重要性。在您的情况下,0.0011084 是一个极低的系数。我建议您为数据添加更多功能或增加数据大小。 我试图做到这一点bigdata-madesimple.com/… 每行都有一个相应的系数?我也在尝试做代码? 我假设您指的是来自 link 的这张照片,因为您可以看到第一列带有标签的特征,这意味着您在该列中看到的每个标签都指的是他的数据框中的一个特征(它由许多行组成,在你的情况下param_a 是你的特征)然后在它旁边放置特征的系数。如果他要使用您的数据框做同一张表,他会将param_a 放在特征列中,将0.00110844 放在估计系数列中。

以上是关于在Python中获取线性回归中每一行的系数的主要内容,如果未能解决你的问题,请参考以下文章

线性回归

Python和R之间的线性回归系数之间的差异

Python中具有正系数的线性回归

MATLAB怎么做多元线性回归,并对偏回归系数做t检验,并求出p值

Python - 多元线性回归 - 每个输入变量的确定系数

Python中某些特征的正系数线性回归