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

顺便说一句.我知道细分的数量.
如果我在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转换回正常比例并将曲线绘制在我之前的线性曲线上?
我曾经习惯于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)
我的问题是,我认为"摘要"功能也计算了一大堆其他东西,因此非常慢.我想知道是否有更快的方法来提取模型的残差平方和?
谢谢!
我使用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)
现在,我需要这些相同系数的标准误差.我怎样才能做到这一点?非常感谢.
我的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包.我尝试过scikit-learn,尽管他们的线性回归模型示例仅显示y是一个数组(每个观察一个因变量)的情况,但它似乎能够处理多个y.但是,当我将这种"多变量"方法的输出与我通过手动循环每个因变量并相互独立地预测它们得到的结果进行比较时,结果完全相同.我不认为应该是这种情况,因为一些因变量(> 0.5)之间存在很强的相关性.
代码只是看起来像这样,与y任一个n x 1矩阵或n x m矩阵,并且x和newx各种尺寸的矩阵(行数中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
我试过这个但是无法让它对我的数据起作用: 使用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_boston从sklearn.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
假设我想使用闭合形式解决方案计算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)
其中X和y分别对应于所述协变量和目标变量,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) 在岭回归中,我们正在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)
我可以采取哪些建议来解决这种差异?
这是对数刻度中的网络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 ×8
scikit-learn ×4
r ×2
constants ×1
finance ×1
ip ×1
lm ×1
logarithm ×1
matplotlib ×1
mlm ×1
numpy ×1
pandas ×1
regression ×1
statsmodels ×1
tensorflow ×1