我创建了一个返回两个值的函数,但是每执行一次,我只会得到第一个值。有什么问题吗???

import numpy as np
from sklearn.linear_model import Lasso

def lasso_weighted(X,s,lam):
    n_samples, n_features = X.shape
    alpha = lam*2*np.sqrt(n_samples)

    g = lambda w: np.sqrt(np.abs(w))
    gprime = lambda w: 1. / (2. * np.sqrt(np.abs(w)) + np.finfo(float).eps)
    p_obj = lambda w: 1. / (2 * n_samples) * np.sum((s - np.dot(X, w)) ** 2) \
                    + alpha * np.sum(g(w))

    weights = np.ones(n_features)
   # n_lasso_iterations = 5
    counter=1
    frpr=0
    objpr=10**6
    t=10**-2

    #for k in range(n_lasso_iterations):
    while True:
        print counter
        X_w = X / weights[np.newaxis, :]
        clf = Lasso(alpha=alpha, fit_intercept=False)
        clf.fit(X_w, s)
        fr = clf.coef_ / weights
        weights = gprime(fr)
        print p_obj(fr)  # should go down
 #       if max(abs(fr-frpr))<t:
        if objpr<p_obj(fr):
            break
        counter=counter+1
        frpr=fr
        objpr=p_obj(fr)

    return objpr,frpr


所以,如果我调用我的程序

import lassoweight as ls
a,b=ls.lasso_weighted(X,S,v)


我只收到一个错误,无法解包太多值。如果我运行ls.lasso_weighted(X,S,v)然后作为输出,我只会得到return的第一个参数。如果我在退货时更改订单,我会选择另一个,但是我永远都不会两者都接受。

这是我完全看不见的愚蠢吗?
谢谢

最佳答案

好了,今天我再次打开了Canopy(昨天我也做了同样的事情),它可以正确返回2个变量。...可能是错误或卡住了,我不知道发生了什么...

10-06 14:23
查看更多