Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如果glmnet确实需要浮动,为什么在我提供浮动时glmnet.py会在cvglmnet抛出TypeError?_Python 3.x_Typeerror - Fatal编程技术网

Python 3.x 如果glmnet确实需要浮动,为什么在我提供浮动时glmnet.py会在cvglmnet抛出TypeError?

Python 3.x 如果glmnet确实需要浮动,为什么在我提供浮动时glmnet.py会在cvglmnet抛出TypeError?,python-3.x,typeerror,Python 3.x,Typeerror,我正在尝试在Glmnet Vignette之后使用Glmnet包运行glm for logistic回归,我的响应变量“y”的类型有问题。 我想同时执行glmnet函数和cvglmnet函数。vignette说,“对于二项逻辑回归,响应变量y应该是两个水平的因子,或者是计数或比例的两列矩阵。”。 我从一个数据帧的一列中得到y值。类似地,我的输入矩阵x来自一个数据帧的几列。所以我的y.values是一个形状为(290)的numpy.ndarray,由1和2组成,是一个整数数组 若要检查我的类型,请

我正在尝试在Glmnet Vignette之后使用Glmnet包运行glm for logistic回归,我的响应变量“y”的类型有问题。 我想同时执行glmnet函数和cvglmnet函数。vignette说,“对于二项逻辑回归,响应变量y应该是两个水平的因子,或者是计数或比例的两列矩阵。”。 我从一个数据帧的一列中得到y值。类似地,我的输入矩阵x来自一个数据帧的几列。所以我的y.values是一个形状为(290)的numpy.ndarray,由1和2组成,是一个整数数组

若要检查我的类型,请执行以下操作:

isinstance(y.values,scipy.ndarray)
True
isinstance(y.values,np.ndarray)
True
isinstance(y.values,int)
False
type(y.values[1])
numpy.int64
isinstance(y.values, float)
False
如果我跑

fit = glmnet(x = fold1_sp.copy(), y = y.values, family = 'binomial')
我犯了一个错误

ValueError: y input must be a scipy float64 ndarray
我发现他们试图解决这个问题,提到任何对scipy float 64 ndarray的搜索都会返回numpy float ndarray结果,因为它们基本上是相同的对象类型,所以我转换为numpy float:

fit = glmnet(x = fold1_sp.copy(), y = np.float64(y.values), family = 'binomial')
它运行得很好。 但这样我的y数组是由浮点数1'和浮点数2'组成的

如果我现在尝试使用cvglmnet函数,它会抱怨它需要一个整数

cvfit = cvglmnet(x = fold1_sp.copy(), y = np.float64(y.values), family = 'binomial', ptype = 'class')
引发以下错误:

TypeError: 'numpy.float64' object cannot be interpreted as an integer
这至少对我来说是奇怪的,因为它之前要求一个浮点,如果我使用y作为整数使用原始的y.values,那么它再次抱怨它需要scipy float64

那么我如何克服这个类型错误问题呢

非常感谢

这有用吗

cvglmnet(x = fold1_sp.copy(), y = np.int64(y.values), family = 'binomial', ptype = 'class')

没有@MLS,它会抛出类似的错误消息:
ValueError:y输入必须是scipy float64 ndarray
我发现glmnet_python的github存储库中存在一个问题,该问题显然已关闭,没有解决问题。