我是Python的新手,并试图在pandas数据帧上使用sklearn执行线性回归.这就是我做的:
data = pd.read_csv('xxxx.csv')
Run Code Online (Sandbox Code Playgroud)
之后我得到了两列的DataFrame,让我们称之为'c1','c2'.现在我想对(c1,c2)的集进行线性回归,所以我输入了
X=data['c1'].values
Y=data['c2'].values
linear_model.LinearRegression().fit(X,Y)
Run Code Online (Sandbox Code Playgroud)
这导致以下错误
IndexError: tuple index out of range
Run Code Online (Sandbox Code Playgroud)
这有什么不对?另外,我想知道
我搜索并浏览了大量网站,但似乎没有一个网站指示初学者正确的语法.也许对于像我这样的新手而言,对专家来说显而易见的事情并不那么明显.
你能帮忙吗?非常感谢您的宝贵时间.
PS:我注意到大量的初学者问题在stackoverflow中被低估了.请注意这样一个事实,即专家用户看似显而易见的事情可能需要一个初学者的日子才能弄明白.按下向下箭头时请谨慎使用,以免损害本讨论社区的活力.
如果这个问题已经得到解答,我有点道歉,我已经看了一眼,找不到我想要的具体内容.
我有一些或多或少的线性数据形式
x = [0.1, 0.2, 0.4, 0.6, 0.8, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0, 20.0, 40.0, 60.0, 80.0]
y = [0.50505332505407008, 1.1207373784533172, 2.1981844719020001, 3.1746209003398689, 4.2905482471260044, 6.2816226678076958, 11.073788414382639, 23.248479770546009, 32.120462301367183, 44.036117671229206, 54.009003143831116, 102.7077685684846, 185.72880217806673, 256.12183145545811, 301.97120103079675]
Run Code Online (Sandbox Code Playgroud)
我scipy.optimize.leastsq用来拟合线性回归:
def lin_fit(x, y):
'''Fits a linear fit of the form mx+b to the data'''
fitfunc = lambda params, x: params[0] * x + params[1] #create fitting function of form mx+b
errfunc = lambda p, x, y: fitfunc(p, x) - y #create …Run Code Online (Sandbox Code Playgroud) 我正在运行67个观察和32个变量的回归.我正在使用glmnet包中的cv.glmnet函数进行变量选择.我想强制一个变量进入模型.(它在正常过程中被删除.)如何在cv.glmnet中指定此条件?
谢谢!
我的代码如下所示:
glmntfit <- cv.glmnet(mydata[,-1], mydata[,1])
coef(glmntfit, s=glmntfit$lambda.1se)
Run Code Online (Sandbox Code Playgroud)
我想要的变量是mydata [,2].
作为一个R用户,我一直想要加速scikit.
从Linear,Ridge和Lasso开始.我已经完成了这些例子.以下是基本的OLS.
设置模型似乎足够合理 - 但似乎找不到合理的方法来获得一组标准的回归输出.
我的代码中的示例:
# Linear Regression
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression
# Load the diabetes datasets
dataset = datasets.load_diabetes()
# Fit a linear regression model to the data
model = LinearRegression()
model.fit(dataset.data, dataset.target)
print(model)
# Make predictions
expected = dataset.target
predicted = model.predict(dataset.data)
# Summarize the fit of the model
mse = np.mean((predicted-expected)**2)
print model.intercept_, model.coef_, mse,
print(model.score(dataset.data, dataset.target))
Run Code Online (Sandbox Code Playgroud)
看起来像拦截和coef内置在模型中,我只需要打印(从第二行到第二行)来查看它们.那么所有其他标准回归输出如R ^ 2,调整后的R ^ 2,p值等等.如果我正确地阅读了这些例子,看起来你必须为每一个写一个函数/等式然后打印它.
那么,lin reg模型没有标准的摘要输出吗?
另外,在我打印的系数输出数组中,没有与这些系数相关的变量名称?我刚刚得到数字数组.有没有办法打印这些,我得到系数的输出和它们的变量?
我的打印输出
LinearRegression(copy_X=True, fit_intercept=True, …Run Code Online (Sandbox Code Playgroud) 这似乎是一个简单的问题,所以我希望它是一个简单的答案.我正在绘制我的点并拟合线性模型,我可以做到.然后我想在图上绘制一些汇总统计数据,例如R Squared值.我似乎只能在命令行中获得R Squared值.任何建议; 我需要查看ggplot或其他什么吗?提前致谢.
#Does the plot
plot(df$VAR1, df$VAR2)
#Adds the line
abline(lm(df$VAR2~df$VAR1), col="red")
#Shows stats on command line
summary(lm(df$VAR2~df$VAR1))
Run Code Online (Sandbox Code Playgroud) 我正在努力寻找一种更好的线性回归方法.我一直在使用Moore-Penrose伪逆和QR分解与JAMA库,但结果并不令人满意.将ojAlgo是有用的?我一直在达到我知道不应该存在的准确度限制.该算法应该能够将输入变量的影响降低到零.也许这采取迭代重加权最小二乘的形式,但我不知道该算法,也无法找到它的库.输出应该是权重矩阵或向量,使得输入矩阵与权重矩阵的矩阵乘法将产生预测矩阵.我的输入矩阵几乎总是有多行而不是列.谢谢您的帮助.
我有一个经典的线性回归问题的形式:
y = X b
其中y是响应向量 X是一个矩阵输入变量的和b是拟合参数我寻找的矢量.
Python提供b = numpy.linalg.lstsq( X , y )了解决此形式的问题.
但是,当我使用它时,我倾向于得到组件的极大或极小的值b.
我想执行相同的拟合,但约束b0到255之间的值.
它看起来像是scipy.optimize.fmin_slsqp()一个选项,但我发现它对我感兴趣的问题的大小非常缓慢(X有点像3375 by 1500希望甚至更大).
b数值的回归方法?python numpy mathematical-optimization scipy linear-regression
我想知道是否有更好的方法来测试两个变量是否是协整的,而不是以下方法:
import numpy as np
import statsmodels.api as sm
import statsmodels.tsa.stattools as ts
y = np.random.normal(0,1, 250)
x = np.random.normal(0,1, 250)
def cointegration_test(y, x):
# Step 1: regress on variable on the other
ols_result = sm.OLS(y, x).fit()
# Step 2: obtain the residual (ols_resuld.resid)
# Step 3: apply Augmented Dickey-Fuller test to see whether
# the residual is unit root
return ts.adfuller(ols_result.resid)
Run Code Online (Sandbox Code Playgroud)
以上方法有效; 但是,效率不高.当我跑步时sm.OLS,会计算很多东西,而不仅仅是残差,这当然会增加运行时间.我当然可以编写自己的代码来计算残差,但我认为这也不会非常有效.
我正在寻找一种直接测试协整的内置测试.我在想Pandas,但似乎找不到任何东西.或者也许有一个聪明的人来测试协整而不运行回归或一些有效的方法.
我必须进行大量的协整测试,并且很好地改进我当前的方法.
我正在使用多个变量/特征进行线性回归.我尝试通过让θ驱动(系数)的正规方程法(使用矩阵求逆),numpy的最小二乘numpy.linalg.lstsq工具和np.linalg.solve工具.在我的数据中,我有n = 143个特征,m = 13000个训练样例.
对于正则化的正规方程方法,我使用这个公式:
正则化用于解决矩阵不可逆性的潜在问题(XtX矩阵可能变为奇异/不可逆)
数据准备代码:
import pandas as pd
import numpy as np
path = 'DB2.csv'
data = pd.read_csv(path, header=None, delimiter=";")
data.insert(0, 'Ones', 1)
cols = data.shape[1]
X = data.iloc[:,0:cols-1]
y = data.iloc[:,cols-1:cols]
IdentitySize = X.shape[1]
IdentityMatrix= np.zeros((IdentitySize, IdentitySize))
np.fill_diagonal(IdentityMatrix, 1)
Run Code Online (Sandbox Code Playgroud)
对于最小二乘法,我使用Numpy的numpy.linalg.lstsq.这是Python代码:
lamb = 1
th = np.linalg.lstsq(X.T.dot(X) + lamb …Run Code Online (Sandbox Code Playgroud) python numpy machine-learning linear-algebra linear-regression
我正在尝试运行混合效果模型,F2_difference该模型预测其余列作为预测变量,但我收到一条错误消息
固定效应模型矩阵排名不足,因此下降7列/系数.
从这个链接,固定效果模型是排名不足,我想我应该findLinearCombos在R包中使用caret.但是,当我尝试时findLinearCombos(data.df),它给了我错误信息
qr.default(object)中的错误:外部函数调用中的NA/NaN/Inf(arg 1)另外:警告消息:在qr.default(object)中:强制引入的NAs
我的数据没有任何NA - 可能导致这种情况的原因是什么?(对不起,如果答案很明显 - 我是R的新手).
我的所有数据都是除了我试图预测的数值之外的因素.这是我的数据的一小部分样本.
sex <- c("f", "m", "f", "m")
nasal <- c("TRUE", "TRUE", "FALSE", "FALSE")
vowelLabel <- c("a", "e", "i", "o")
speaker <- c("Jim", "John", "Ben", "Sally")
word_1 <- c("going", "back", "bag", "back")
type <- c("coronal", "coronal", "labial", "velar")
F2_difference <- c(345.6, -765.8, 800, 900.5)
data.df <- data.frame(sex, nasal, vowelLabel, speaker,
word_1, type, F2_difference
stringsAsFactors = TRUE)
Run Code Online (Sandbox Code Playgroud)
编辑:这是一些更多的代码,如果它有帮助.
formula <- F2_difference ~ …Run Code Online (Sandbox Code Playgroud) python ×6
r ×4
numpy ×3
pandas ×2
regression ×2
scikit-learn ×2
scipy ×2
dataframe ×1
glmnet ×1
java ×1
lme4 ×1
math ×1
matrix ×1
mixed-models ×1
plot ×1
statistics ×1
summary ×1