sklearn提供用于回归估计的LASSO方法.但是,当我尝试使用ya矩阵拟合LassoCV(X,y)时,它会抛出错误.请参阅下面的屏幕截图以及其文档的链接.我使用的sklearn版本是0.15.2.
它的文件说y可以是一个ndarray:
y : array-like, shape (n_samples,) or (n_samples, n_targets)
Run Code Online (Sandbox Code Playgroud)
当我使用Lasso()来适应相同的X和y时,它工作正常.所以我想知道LassoCV()是否已损坏或我是否需要做其他事情?
In [2]: import numpy as np
im
In [3]: import sklearn.linear_model
In [4]: from sklearn import linear_model
In [5]: X = np.random.random((10,100))
In [6]: y = np.random.random((50, 100))
In [7]: linear_model.Lasso().fit(X,y)
Out[7]:
Lasso(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=1000,
normalize=False, positive=False, precompute='auto', tol=0.0001,
warm_start=False)
In [8]: linear_model.LassoCV().fit(X,y)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-9c8ad3459ac8> in <module>()
----> 1 linear_model.LassoCV().fit(X,y)
/chimerahomes/wenhoujx/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/sklearn/linear_model/coordinate_descent.pyc in fit(self, X, y)
1006 if y.ndim > 1:
1007 …Run Code Online (Sandbox Code Playgroud) 我正在使用MCMCglmm包中的一些贝叶斯线性混合模型R.我的数据包括使用错误测量的预测变量.因此,我想建立一个考虑到这一点的模型.我的理解是,基本的混合效应模型MCMCglmm将仅对响应变量(如ols回归)中的误差最小化.换句话说,垂直误差将被最小化.我想最小化与回归线/平面/超平面正交的误差.
MCMCglmm或者我必须使用JAGS/STAN来进行变量误差(也就是总最小二乘)模型? 我在下面列出了一个数据集,其中一个随机变量height用错误来衡量,以说明基本设置MCMCglmm.
library(nlme)
library(MCMCglmm)
data(Orthodont)
set.seed(1234)
Orthodont$height <- c(rnorm(54, 170, 10), rnorm(54, 150, 10))
prior1 <- list(
B = list(mu = rep(0, 3), V = diag(1e+08, 3)),
G = list(G1 = list(V = 1, nu = 1, alpha.mu = 0, alpha.V = 1000)),
R = list(V = 1, nu = 0.002)
)
model1 <- MCMCglmm(
fixed = distance ~ height + Sex,
random …Run Code Online (Sandbox Code Playgroud) 在机器学习中,我们说:
然而,在一些讲座我看到有人说一个模型是线性基础上的权重,即权重系数是线性和特征的程度并不重要,无论是直线(X 1)或多项式Λ(x 1 2).真的吗?如何区分线性和非线性模型?它是基于权重还是特征值?
regression machine-learning linear-regression non-linear-regression
我正在对具有多个预测变量的线性模型的预测值求和,如下面的示例所示,并希望计算该总和的组合方差,标准误差和可能的置信区间。
lm.tree <- lm(Volume ~ poly(Girth,2), data = trees)
Run Code Online (Sandbox Code Playgroud)
假设我有一组Girths:
newdat <- list(Girth = c(10,12,14,16)
Run Code Online (Sandbox Code Playgroud)
为此,我想预测总数Volume:
pr <- predict(lm.tree, newdat, se.fit = TRUE)
total <- sum(pr$fit)
# [1] 111.512
Run Code Online (Sandbox Code Playgroud)
如何获得方差total?
我不想要主效应,因为它与更精细的因子固定效果共线,所以有这些是烦人的NA.
在这个例子中:
lm(y ~ x * z)
Run Code Online (Sandbox Code Playgroud)
我想要x(数字)和z(因素)的相互作用,但不是主要的效果z.
我对178尾自由度的双尾t检验进行了线性回归.该summary函数为我的两个t值提供了两个p值.
t value Pr(>|t|)
5.06 1.04e-06 ***
10.09 < 2e-16 ***
...
...
F-statistic: 101.8 on 1 and 178 DF, p-value: < 2.2e-16
Run Code Online (Sandbox Code Playgroud)
我想用这个公式手动计算t值的p值:
p = 1 - 2*F(|t|)
p_value_1 <- 1 - 2 * pt(abs(t_1), 178)
p_value_2 <- 1 - 2 * pt(abs(t_2), 178)
Run Code Online (Sandbox Code Playgroud)
我没有获得与模型摘要中相同的p值.因此,我想知道summary函数Pr(>|t|)与我的公式有何不同,因为我找不到定义Pr(>|t|).
你能帮助我吗?非常感谢!
我试图理解线性回归......这是我试图理解的脚本:
'''
A linear regression learning algorithm example using TensorFlow library.
Author: Aymeric Damien
Project: https://github.com/aymericdamien/TensorFlow-Examples/
'''
from __future__ import print_function
import tensorflow as tf
from numpy import *
import numpy
import matplotlib.pyplot as plt
rng = numpy.random
# Parameters
learning_rate = 0.0001
training_epochs = 1000
display_step = 50
# Training Data
train_X = numpy.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
7.042,10.791,5.313,7.997,5.654,9.27,3.1])
train_Y = numpy.asarray([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
2.827,3.465,1.65,2.904,2.42,2.94,1.3])
train_X=numpy.asarray(train_X)
train_Y=numpy.asarray(train_Y)
n_samples = train_X.shape[0]
# tf Graph Input
X = tf.placeholder("float")
Y = tf.placeholder("float")
# Set model weights
W …Run Code Online (Sandbox Code Playgroud) 我想OLS regression estimation在以下URL中运行数据集的滚动1000窗口以进行评估:
https://drive.google.com/open?id=0B2Iv8dfU4fTUa3dPYW5tejA0bzg
我尝试使用以下Python脚本与pandas版本0.20.2.
# /usr/bin/python -tt
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from statsmodels.formula.api import ols
df = pd.read_csv('estimated.csv', names=('x','y'))
model = pd.stats.ols.MovingOLS(y=df.Y, x=df[['y']],
window_type='rolling', window=1000, intercept=True)
df['Y_hat'] = model.y_predict
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的Python脚本时,我收到此错误:AttributeError: module 'pandas.stats' has no attribute 'ols'.我发现这个错误的原因是因为它从Pandas版本中删除了,因为0.20.0我们可以从以下链接看到它.
https://github.com/pandas-dev/pandas/pull/11898
我们如何OLS Regression处理最新版本的熊猫?
作为一项自学练习,我尝试对从头开始的线性回归问题实施梯度下降,并在等高线上绘制结果迭代。
我的梯度下降实现给出了正确的结果(使用Sklearn测试),但是梯度下降图似乎并不垂直于轮廓线。这是预期的还是我的代码/理解中出现问题?
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def costfunction(X,y,theta):
m = np.size(y)
#Cost function in vectorized form
h = X @ theta
J = float((1./(2*m)) * (h - y).T @ (h - y));
return J;
def gradient_descent(X,y,theta,alpha = 0.0005,num_iters=1000):
#Initialisation of useful values
m = np.size(y)
J_history = np.zeros(num_iters)
theta_0_hist, theta_1_hist = [], [] #For plotting afterwards
for i in range(num_iters):
#Grad function …Run Code Online (Sandbox Code Playgroud) python optimization machine-learning linear-regression gradient-descent
我正在使用statsmodels(向其他python选项开放)运行一些线性回归。我的问题是我需要回归分析不具有截距并将其约束在(0,1)范围内,并且总和为1。
我尝试过这样的事情(至少为1):
from statsmodels.formula.api import glm
import pandas as pd
df = pd.DataFrame({'revised_guess':[0.6], "self":[0.55], "alter_1":[0.45], "alter_2":[0.2],"alter_3":[0.8]})
mod = glm("revised_guess ~ self + alter_1 + alter_2 + alter_3 - 1", data=df)
res = mod.fit_constrained(["self + alter_1 + alter_2 + alter_3 = 1"],
start_params=[0.25,0.25,0.25,0.25])
res.summary()
Run Code Online (Sandbox Code Playgroud)
但仍在努力实施“非负”系数约束。
python ×5
regression ×5
r ×4
lm ×2
bayesian ×1
mcmc ×1
mixed-models ×1
numpy ×1
optimization ×1
p-value ×1
pandas ×1
predict ×1
prediction ×1
python-3.x ×1
scikit-learn ×1
statistics ×1
statsmodels ×1
tensorflow ×1