小编use*_*384的帖子

Python scikit-learn:无法克隆对象......因为构造函数似乎没有设置参数

我修改了BernoulliRBM类scikit-learn以使用softmax可见单位组.在这个过程中,我添加了一个额外的Numpy数组visible_config作为类属性,它在构造函数中初始化如下,使用:

self.visible_config = np.cumsum(np.concatenate((np.asarray([0]),
                                visible_config), axis=0))
Run Code Online (Sandbox Code Playgroud)

其中visible_config一个Numpy数组作为构造函数的输入传递.当我直接使用该fit()函数训练模型时,代码运行没有错误.但是,当我使用该GridSearchCV结构时,我收到以下错误

Cannot clone object SoftmaxRBM(batch_size=100, learning_rate=0.01, n_components=100, n_iter=100,
  random_state=0, verbose=True, visible_config=[ 0 21 42 63]), as the constructor does not seem to set parameter visible_config
Run Code Online (Sandbox Code Playgroud)

这似乎是类的实例与sklearn.base.clone创建的副本之间的相等性检查中的问题,因为visible_config没有正确复制.我不知道如何解决这个问题.它在sklearn.base.clone使用a 的文档中说deepcopy(),所以不应该visible_config复制?有人可以解释一下我可以尝试一下吗?谢谢!

python numpy copy scikit-learn

13
推荐指数
1
解决办法
4492
查看次数

mpi4py带标签的发送/接收

如何将进程的等级作为标记传递给mpi4py.MPI.COMM_WORLD.Send()函数并使用mpi4py.MPI.COMM_WORLD.Recv()正确接收它?

我指的是使用Send和Recv函数在两个进程之间发送和接收消息的以下代码示例

#passRandomDraw.py
import numpy
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()

randNum = numpy.zeros(1)

if rank == 1:
    randNum = numpy.random.random_sample(1)
    print "Process", rank, "drew the number", randNum[0]
    comm.Send(randNum, dest=0)

if rank == 0:
    print "Process", rank, "before receiving has the number", randNum[0]
    comm.Recv(randNum, source=1)
    print "Process", rank, "received the number", randNum[0]
Run Code Online (Sandbox Code Playgroud)

我想将发送过程的等级作为标记传递,以便接收过程可以在有多个发件人的情况下识别它.这就是我的工作

#passRandomDraw.py
import numpy
from mpi4py import MPI
comm = MPI.COMM_WORLD
rank = comm.Get_rank()

randNum = numpy.zeros(1)
rnk = -1 # EDIT …
Run Code Online (Sandbox Code Playgroud)

python mpi

9
推荐指数
2
解决办法
8201
查看次数

比较使用随机数生成的Matlab和Numpy代码

有没有办法让numpy中的随机数生成器生成与Matlab相同的随机数,给定相同的种子?

我在Matlab中尝试了以下内容:

>> rng(1);
>> randn(2, 2)

ans =

    0.9794   -0.5484
   -0.2656   -0.0963
Run Code Online (Sandbox Code Playgroud)

以及与Numpy的iPython中的以下内容:

In [21]: import numpy as np
In [22]: np.random.seed(1)
In [23]: np.random.randn(2, 2)
Out[23]: 
array([[ 1.624, -0.612],
       [-0.528, -1.073]])
Run Code Online (Sandbox Code Playgroud)

两个数组中的值都不同.

或者有人建议比较Matlab和Python中使用随机数生成的相同算法的两个实现是个好主意.

谢谢!

python random matlab

6
推荐指数
2
解决办法
3294
查看次数

我可以用掩码分割 numpy 数组吗?

我想将数组拆分为带有掩码和索引的数组,
如下所示

a = array([ 0,  1,  2,  3,  4, 5]))  
b = [0,2,3]  
Run Code Online (Sandbox Code Playgroud)

进入

c = array([[0, 2, 3], [1, 3, 4], [2, 4, 5]])  
Run Code Online (Sandbox Code Playgroud)

我可以在没有循环的情况下执行此操作吗?

编辑:

更多例子...

说,我们有一个a形状的数组,[10, 10, 10]
其中a[x, y, :] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

现在给了面具 b = [0, 3, 7]

我希望输出是一个c具有形状的数组,[10, 10, 3, 3]
其中c[x, y, :, :] = [[0, 3, 7], [1, 4, 8], [2, 5, 9]]

python numpy python-3.x numpy-slicing numpy-ndarray

6
推荐指数
1
解决办法
300
查看次数

在scikit-learn中训练神经网络的早期停止

这个问题非常具体到Python库scikit-learn.如果最好将其发布到其他地方,请告诉我.谢谢!

现在的问题......

我有一个基于BaseEstimator的前馈神经网络类ffnn,我用SGD训练.它工作正常,我也可以使用GridSearchCV()并行训练它.

现在我想在函数ffnn.fit()中实现提前停止,但为此我还需要访问fold的验证数据.一种方法是更改​​sklearn.grid_search.fit_grid_point()中的行

clf.fit(X_train, y_train, **fit_params)
Run Code Online (Sandbox Code Playgroud)

变成类似的东西

clf.fit(X_train, y_train, X_test, y_test, **fit_params)
Run Code Online (Sandbox Code Playgroud)

并且还改变ffnn.fit()以获取这些参数.这也会影响sklearn中的其他分类器,这是一个问题.我可以通过检查fit_grid_point()中的某种标志来避免这种情况,该标志告诉我何时以上述两种方式之一调用clf.fit().

有人可以建议一种不同的方式来执行此操作,我不必编辑sklearn库中的任何代码吗?

或者,将X_train和y_train进一步拆分为火车/验证集并检查一个好的停止点,然后在所有X_train上重新训练模型是否正确?

谢谢!

python machine-learning neural-network scikit-learn cross-validation

4
推荐指数
1
解决办法
2291
查看次数

自定义折叠用于scikit-learn中的交叉验证

我想将GridSearchCV(n_jobs> 1)用于特定的分类器,但我有来自另一个来源的10倍交叉验证的折叠信息.有没有办法输入已分成折叠的数据,而不是使用GridSearchCV创建的折叠.

谢谢!

python scikit-learn

3
推荐指数
1
解决办法
1363
查看次数

Python中Matlab单元数据结构的替代方案

我有一个Matlab单元阵列,其每个单元包含一个N×M矩阵.M的值随细胞而变化.

使用numpy或任何标准Python数据结构在Python中表示这种类型的结构的有效方法是什么?

python matlab cell data-structures

1
推荐指数
1
解决办法
919
查看次数

如何访问另一个列表中每个列表的第n个元素?

这一定是一个非常基本的问题,所以请耐心等待.我有一个这样的列表列表

l = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
Run Code Online (Sandbox Code Playgroud)

我想访问外部列表中每个列表中的第二个值作为另一个列表

[2, 5, 8, 11]
Run Code Online (Sandbox Code Playgroud)

这样做是否有一步到位的方法?之前在Matlab中进行了很多编程,我试过了,l[:][1]但是它让我回归[4, 5, 6]

python indexing list elements

1
推荐指数
1
解决办法
1258
查看次数

将列表的列表与列表合并到列表中

我有两个列表,如下:

list_1 = [(1, 2), (3, 4), (5, 6)]
list_2 = [7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

如何将两者合并为一个列表

list_3 = [(1, 2, 7), (3, 4, 8), (5, 6, 9)]
Run Code Online (Sandbox Code Playgroud)

只使用一种理解力?

我确定有人已经问过这个,但我可能无法很好地说出我的问题以找到那篇文章.

谢谢!

python list-comprehension

0
推荐指数
1
解决办法
49
查看次数