标签: linear-regression

Running multiple, simple linear regressions from dataframe in R

I have a dataset (data frame) with 5 columns all containing numeric values.

I'm looking to run a simple linear regression for each pair in the dataset.

For example, If the columns were named A, B, C, D, E, I want to run lm(A~B), lm(A~C), lm(A~D), ...., lm(D~E),... and, then I want to plot the data for each pair along with the regression line.

我对R很陌生,所以我在如何实现这一目标的过程中如何旋转.我应该用ddply吗?还是lapply?我真的不确定如何解决这个问题.

r linear-regression

6
推荐指数
1
解决办法
8697
查看次数

多元回归系数的标准误差

我使用sklearn.linear_model.LinearRegression进行了多元回归并获得了回归系数:

    import numpy as np
    from sklearn import linear_model
    clf = linear_model.LinearRegression()
    TST = np.vstack([x1,x2,x3,x4])
    TST = TST.transpose()
    clf.fit (TST,y)
    clf.coef_
Run Code Online (Sandbox Code Playgroud)

现在,我需要这些相同系数的标准误差.我怎样才能做到这一点?非常感谢.

python linear-regression scikit-learn

6
推荐指数
1
解决办法
3195
查看次数

scikit-learn是否执行"真实"多元回归(多个因变量)?

我想使用多个预测变量来预测多个因变量.如果我理解正确,原则上可以制作一组线性回归模型,每个模型预测一个因变量,但如果因变量是相关的,那么使用多元回归更有意义.我想做后者,但我不确定如何.

到目前为止,我还没有找到专门支持此功能的Python包.我尝试过scikit-learn,尽管他们的线性回归模型示例仅显示y是一个数组(每个观察一个因变量)的情况,但它似乎能够处理多个y.但是,当我将这种"多变量"方法的输出与我通过手动循环每个因变量并相互独立地预测它们得到的结果进行比较时,结果完全相同.我不认为应该是这种情况,因为一些因变量(> 0.5)之间存在很强的相关性.

代码只是看起来像这样,与y任一个n x 1矩阵或n x m矩阵,并且xnewx各种尺寸的矩阵(行数中x == n).

ols = linear_model.LinearRegression()
ols.fit(x,y)
ols.predict(newx)
Run Code Online (Sandbox Code Playgroud)

此功能是否实际执行多元回归?

python machine-learning linear-regression multivariate-testing scikit-learn

6
推荐指数
2
解决办法
4778
查看次数

使用scikit-learn(sklearn),如何处理线性回归的缺失数据?

我试过这个但是无法让它对我的数据起作用: 使用Scikit Learn对时间序列pandas数据框进行线性回归

我的数据包含2个DataFrame.DataFrame_1.shape = (40,5000)DataFrame_2.shape = (40,74).我正在尝试进行某种类型的线性回归,但DataFrame_2包含NaN缺少的数据值.当我DataFrame_2.dropna(how="any")的形状下降到(2,74).

sklearn中是否有可以处理NaN值的线性回归算法?

我是load_bostonsklearn.datasets哪里开始建模的X,y = boston.data, boston.target = (506,13),(506,)

这是我的简化代码:

X = DataFrame_1
for col in DataFrame_2.columns:
    y = DataFrame_2[col]
    model = LinearRegression()
    model.fit(X,y)

#ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
Run Code Online (Sandbox Code Playgroud)

我做了上面的格式来获得与矩阵匹配的形状

如果发布有DataFrame_2帮助,请在下面评论,我会添加它.

python machine-learning linear-regression pandas scikit-learn

6
推荐指数
1
解决办法
2万
查看次数

sci-kit中的规范化学习linear_models

如果True在任何线性模型中将标准化参数设置为sklearn.linear_model,则在评分步骤期间应用标准化吗?

例如:

from sklearn import linear_model
from sklearn.datasets import load_boston

a = load_boston()

l = linear_model.ElasticNet(normalize=False)
l.fit(a["data"][:400], a["target"][:400])
print l.score(a["data"][400:], a["target"][400:])
# 0.24192774524694727

l = linear_model.ElasticNet(normalize=True)
l.fit(a["data"][:400], a["target"][:400])
print l.score(a["data"][400:], a["target"][400:])
# -2.6177006348389167
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们在设置时看到预测功率的下降normalize=True,并且我无法判断这是否仅仅是score未应用归一化的函数的伪像,或者归一化值是否导致model性能下降.

python normalization linear-regression scikit-learn

6
推荐指数
1
解决办法
2977
查看次数

如何从sklearn LinearRegression导出线性回归公式

我想要模型的公式以便在其他语言/项目中使用它。有没有办法从模型中导出公式?

我将使用sklearn 线性回归模型

我最终想要做的是:给定一个公式 f() 和数据集“d”,我将拥有 Java 脚本代码,该代码将基于 f() 为我提供对 d 的预测。

python linear-regression scikit-learn

6
推荐指数
1
解决办法
7212
查看次数

在TensorFlow中将计算值缓存为常量

假设我想使用闭合形式解决方案计算TensorFlow中的最小二乘系数.通常,我会这样做,

beta_hat = tf.matmul(
           tf.matmul(tf.matrix_inverse(tf.matmul(tf.transpose(X), X)), tf.transpose(X)), y
)
Run Code Online (Sandbox Code Playgroud)

其中Xy分别对应于所述协变量和目标变量,TensorFlow占位符.

如果我想进行预测,我会做类似的事情,

y_pred = tf.matmul(X, beta_hat)
Run Code Online (Sandbox Code Playgroud)

如果我要执行,

sess.run(y_pred, feed_dict={X: data_X})
Run Code Online (Sandbox Code Playgroud)

我当然会得到一个错误,我没有为占位符提供必要的值y.我想beta_hat在计算它之后可以灵活地将其视为常量(这样我就不需要为新的协变量矩阵定义一个新的占位符来进行预测).实现这一目标的一种方法是,

# Make it constant.
beta_hat = sess.run(beta_hat, feed_dict={X: data_X, y: data_y})
y_pred = tf.matmul(X, beta_hat)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更优雅的方法将张量处理为常量,这样我既不需要执行会话也不需要获取常量,也不需要为输入数据创建单独的占位符来用于预测.

以下是一些示例代码,用于演示我正在描述的情况.

import numpy as np
import tensorflow as tf


n, k = 100, 5
X = tf.placeholder(dtype=tf.float32, shape=[None, k])
y = tf.placeholder(dtype=tf.float32, shape=[None, 1])

beta = np.random.normal(size=(k, ))
data_X = np.random.normal(size=(n, k))

data_y = data_X.dot(beta)
data_y …
Run Code Online (Sandbox Code Playgroud)

python numpy constants linear-regression tensorflow

6
推荐指数
1
解决办法
711
查看次数

scipy linregress的多变量线性回归

我正在尝试训练一个非常简单的线性回归模型。

我的代码是:

from scipy import stats

xs = [[   0,    1,  153]
 [   1,    2,    0]
 [   2,    3,  125]
 [   3,    1,   93]
 [   2,   24, 5851]
 [   3,    1,  524]
 [   4,    1,    0]
 [   2,    3,    0]
 [   2,    1,    0]
 [   5,    1,    0]]

ys = [1, 1, 1, 1, 1, 0, 1, 1, 0, 1]

slope, intercept, r_value, p_value, std_err = stats.linregress(xs, ys)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/stats/stats.py", line 3100, in linregress
ssxm, ssxym, ssyxm, ssym = …
Run Code Online (Sandbox Code Playgroud)

python scipy linear-regression

6
推荐指数
1
解决办法
2858
查看次数

岭回归:Scikit-learn与直接计算不匹配alpha> 0

在岭回归中,我们正在Ax=b通过L2正则化来解决.直接计算如下:

x =(A T A + alpha*I)-1 A T b

我查看了scikit-learn代码,他们确实实现了相同的计算.但是,我似乎无法得到相同的结果alpha > 0

重现这个的最小代码.

import numpy as np
A = np.asmatrix(np.c_[np.ones((10,1)),np.random.rand(10,3)])
b = np.asmatrix(np.random.rand(10,1))
I = np.identity(A.shape[1])
alpha = 1
x = np.linalg.inv(A.T*A + alpha * I)*A.T*b
print(x.T)
>>> [[ 0.37371021  0.19558433  0.06065241  0.17030177]]

from sklearn.linear_model import Ridge
model = Ridge(alpha = alpha).fit(A[:,1:],b)
print(np.c_[model.intercept_, model.coef_])
>>> [[ 0.61241566  0.02727579 -0.06363385  0.05303027]]
Run Code Online (Sandbox Code Playgroud)

我可以采取哪些建议来解决这种差异?

python linear-regression scikit-learn

6
推荐指数
1
解决办法
2867
查看次数

Pandas DataFrame-使用OLS /线性回归时,“无法从[datetime64 [ns]]到[float64]分配日期时间”

我有一个DataFrame如下:

   Ticker        Date  Close
0    ADBE  2016-02-16  78.88
1    ADBE  2016-02-17  81.85
2    ADBE  2016-02-18  80.53
3    ADBE  2016-02-19  80.87
4    ADBE  2016-02-22  83.80
5    ADBE  2016-02-23  83.07
Run Code Online (Sandbox Code Playgroud)

...等等。该Date列是问题。我正在尝试使用Date列获取列的线性回归Close

ols1 = pd.ols(y=ADBE['Close'], x=ADBE['Date'], intercept=True)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

TypeError: cannot astype a datetimelike from [datetime64[ns]] to [float64]
Run Code Online (Sandbox Code Playgroud)

我尝试了多种方法来消除此错误,例如:

dates_input = ADBE['Date'].values.astype('datetime64[D]')

dates_input = ADBE['Date'].values.astype('float')
Run Code Online (Sandbox Code Playgroud)

第二次dates_input尝试返回的类型为,pandas.core.series.Series但是我仍然收到错误消息。

有谁知道如何使Date列工作并摆脱此TypeError?

python time-series linear-regression dataframe pandas

6
推荐指数
1
解决办法
7048
查看次数