Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 线性回归系数_Python_Machine Learning_Scikit Learn_Linear Regression_Statsmodels - Fatal编程技术网

Python 线性回归系数

Python 线性回归系数,python,machine-learning,scikit-learn,linear-regression,statsmodels,Python,Machine Learning,Scikit Learn,Linear Regression,Statsmodels,我目前正在使用statsmodels(尽管我也很乐意使用Scikit)来创建线性回归。在这个特殊的模型上,我发现当向模型中添加多个因子时,OLS算法会抛出一个野系数。这些系数都是非常高和非常低的,这似乎通过平均值优化了算法。这导致所有因素在统计上都不显著。我只是想知道是否有一种方法可以对系数设置上限或下限,这样OLS必须在这些新边界内进行优化?我不知道是否可以设置一个条件,使OLS的系数绝对值都小于一个常数 不过,正则化是解决此类问题的一个很好的选择。基本上,L1或L2正则化会惩罚优化函数中的系

我目前正在使用statsmodels(尽管我也很乐意使用Scikit)来创建线性回归。在这个特殊的模型上,我发现当向模型中添加多个因子时,OLS算法会抛出一个野系数。这些系数都是非常高和非常低的,这似乎通过平均值优化了算法。这导致所有因素在统计上都不显著。我只是想知道是否有一种方法可以对系数设置上限或下限,这样OLS必须在这些新边界内进行优化?

我不知道是否可以设置一个条件,使OLS的系数绝对值都小于一个常数

不过,正则化是解决此类问题的一个很好的选择。基本上,L1或L2正则化会惩罚优化函数中的系数之和,这会使最低有效变量的系数接近于零,因此不会提高成本函数的值

看一看,和回归。它们分别使用L1、L2和这两种形式的正则化

您可以在statsmodels中尝试以下操作:

#导入OLS
从statsmodels.regression.linear_模型导入OLS
#初始化模型
reg=OLS(endog=y,exog=X)
#拟合模型
reg=reg.fit_正则化()

我正在尝试使用statsmodels.regression.linear\u model.OLS.fit\u正则化(method='elastic\u net',alpha=0.0,L1\u wt=0,start\u params=None,profile\u scale=False,refit=False),但我不确定在哪里指定我的训练数据。对于OLS,它看起来是这样的:sm.OLS(Y_-train,X_-train)。你知道怎么做吗?model=sm.OLS(Y\u train,X\u train)res=model.fit\u正则化(method='elastic\u net',alpha=0.0,L1\u wt=0,start\u params=None,profile\u scale=False,refit=False),我在答案中添加了一些代码。这是否回答了您的问题?最后,由于拟合已被正则化,因此.summary()函数似乎不再有效。我仍然可以看到带有.params的参数,但是我需要看到模型的P值和r^2值。有没有其他方法可以获得这些信息?谢谢你的帮助。我想这可能是最新的:sm.regression.linear\u model.OLSResults