标签: linear-regression

python中的分段线性回归

python中有一个库可以进行分段线性回归吗?我想自动为我的数据添加多行来得到这样的东西: 分段回归

顺便说一句.我知道细分的数量.

python linear-regression

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

拟合R中的对数曲线

如果我在R中有一组线性的点,我可以执行以下操作来绘制点,为它们拟合一条线,然后显示该线:

x=c(61,610,1037,2074,3050,4087,5002,6100,7015)
y=c(0.401244, 0.844381, 1.18922, 1.93864, 2.76673, 3.52449, 4.21855, 5.04368, 5.80071)

plot(x,y)    
Estimate = lm(y ~ x)    
abline(Estimate)
Run Code Online (Sandbox Code Playgroud)

现在,如果我有一组看起来像对数曲线拟合的点更合适,如下所示:

x=c(61,610,1037,2074,3050,4087,5002,6100,7015)        
y=c(0.974206,1.16716,1.19879,1.28192,1.30739,1.32019,1.35494,1.36941,1.37505)
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用以下内容获得标准回归拟合x值的对数:

logEstimate = lm(y ~ log(x))
Run Code Online (Sandbox Code Playgroud)

但是,如何将logEstimate转换回正常比例并将曲线绘制在我之前的线性曲线上?

logarithm r curve-fitting linear-regression

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

获取`lm()`返回的"mlm"对象的残余标准错误

我曾经习惯于lm()拟合多个回归模型,用于R中的多个(~100万个)响应变量.例如.

allModels <- lm(t(responseVariablesMatrix ~ modelMatrix)
Run Code Online (Sandbox Code Playgroud)

这将返回类"mlm"的对象,它类似于包含所有模型的巨大对象.我想为每个模型获得剩余的平方和,我可以使用:

summaries <- summary(allModels)
rss1s <- sapply(summaries, function(a) return(a$sigma))
Run Code Online (Sandbox Code Playgroud)

我的问题是,我认为"摘要"功能也计算了一大堆其他东西,因此非常慢.我想知道是否有更快的方法来提取模型的残差平方和?

谢谢!

regression r linear-regression lm mlm

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

多元回归系数的标准误差

我使用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
查看次数

摘要不适用于OLS估算

我的statsmodels OLS估算有问题。该模型运行时没有任何问题,但是当我尝试调用摘要时,我可以看到实际结果,当a和权重的形状不同时,我需要指定轴的TypeError。

我的代码如下所示:

from __future__ import print_function, division 
import xlrd as xl
import numpy as np
import scipy as sp
import pandas as pd
import statsmodels.formula.api as smf
import statsmodels.api as sm

file_loc = "/Users/NiklasLindeke/Python/dataset_3.xlsx"
workbook = xl.open_workbook(file_loc)
sheet = workbook.sheet_by_index(0)
tot = sheet.nrows

data = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)]

rv1 = []
rv5 = []
rv22 = []
rv1fcast = []
T = []
price = []
time = []
retnor = [] …
Run Code Online (Sandbox Code Playgroud)

python finance linear-regression statsmodels

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

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万
查看次数

在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
查看次数

岭回归: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
查看次数

python 2.7中日志日志的最佳拟合线

这是对数刻度中的网络IP频率等级图.完成此部分后,我试图使用Python 2.7在log-log标度上绘制最佳拟合线.我必须使用matplotlib的"symlog"轴刻度,否则一些值不能正确显示,一些值会被隐藏.

我正在绘制的数据的X值是URL,Y值是URL的相应​​频率.

我的数据看起来像这样:

'http://www.bing.com/search?q=d2l&src=IE-TopResult&FORM=IETR02&conversationid=  123 0.00052210688591'
`http://library.uc.ca/  118 4.57782298326e-05`
`http://www.bing.com/search?q=d2l+uofc&src=IE-TopResult&FORM=IETR02&conversationid= 114 4.30271029472e-06`
`http://www.nature.com/scitable/topicpage/genetics-and-statistical-analysis-34592   109 1.9483268261e-06`
Run Code Online (Sandbox Code Playgroud)

数据包含第一列中的URL,第二列中的相应频率(相同URL存在的次数),最后是第3列中传输的字节.首先,我只使用第1列和第2列进行此分析.共有2,465个x值或唯一网址.

以下是我的代码

import os
import matplotlib.pyplot as plt
import numpy as np
import math
from numpy import *
import scipy
from scipy.interpolate import *
from scipy.stats import linregress
from scipy.optimize import curve_fit

file = open(filename1, 'r')
lines = file.readlines()

result = {}
x=[]
y=[]
for line in lines:
  course,count,size = line.lstrip().rstrip('\n').split('\t')
  if course not in result:
      result[course] = int(count)
  else:
      result[course] += …
Run Code Online (Sandbox Code Playgroud)

python ip matplotlib curve-fitting linear-regression

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