Python return 忽略多个参数

标签 python function return

我创建了一个返回两个值的函数,但每当我执行它时,我只得到第一个值。这能出什么问题吗???

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 个变量......可能是 bug 或者它被卡住了我不知道发生了什么......

关于Python return 忽略多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28884105/

相关文章:

python - Sendmail Errno[61] 连接被拒绝

python - 如何使用 Selenium 和 Python 查找相对于其父元素的元素

页面加载后 Javascript 函数无法正常工作

javascript - 返回 GET 值并将其存储在 JS 中的变量中

c - 在不返回分配的指针的情况下,这段代码如何工作?

python - 在特定的 &lt;script&gt; &lt;/script&gt; 标记之间提取

python - 如何改进计算相关性的非常低效的 numpy 代码

matlab - 编译的exe错误,但在m文件MATLAB中运行

java - 编写一个返回整数最后一位数字的方法

子进程返回码中的 Python 'return not' 语句