小编Dah*_*lai的帖子

numpy:为什么(x,1)和(x,)维度之间存在差异

我想知道为什么在numpy中有维度的一维数组(长度,1)以及维度(长度)的一维数组w/o第二个值.

我经常遇到这种情况,例如在使用时np.concatenate() 需要reshape预先执行一步(或者我可以直接使用hstack/ vstack).

我想不出为什么这种行为是可取的.谁能解释一下?

编辑:
其中一条评论建议我的问题可能是重复的.我对Numpy的底层工作逻辑更感兴趣,而不是1d和2d数组之间存在区别,我认为这是所提到的线程的重点.

python numpy

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

了解scikit学习随机森林记忆要求进行预测

我有一套2000个经过训练的随机回归树(来自scikit learn's Random Forest Regressor n_estimators=1).使用multiprocessing和共享内存在大型数据集(~100000*700000 = 70GB @ 8位)上并行训练树木(50个核心)就像魅力一样.注意,我之前没有使用RF的内置多核支持,因为我正在进行功能选择.

问题是:当并行测试大矩阵(~20000*700000)时,我的内存总是耗尽(我可以访问具有500 GB RAM的服务器).

我的策略是将测试矩阵放在内存中并在所有进程之间共享.根据其中一位开发人员声明,测试的内存要求是2*n_jobs*sizeof(X),在我的情况下,*4的另一个因子是相关的,因为8位矩阵条目在RF内部向上转换为float32.

根据数字,我认为我需要测试:
14GB将测试矩阵保存在内存中+ 50(= n_jobs)*20000(n_samples)*700(= n_features)*4(向上转换为浮动)*2字节= 14 gb + 5.6 gb = ~21GB的内存.

然而它总是吹到几百GB.我在这里错过了什么?(我是scikit-learn的最新版本,所以应该解决旧的内存问题)

观察:
在一个核心上运行仅用于测试的内存使用量在30到100 GB之间波动(按测量值free)

我的代码:

#----------------
#helper functions
def initializeRFtest(*args):
    global df_test, pt_test #initialize test data and test labels as globals in shared memory
    df_test, pt_test = args


def star_testTree(model_featidx):
    return predTree(*model_featidx)

#end of helper functions
#-------------------

def RFtest(models, df_test, pt_test, features_idx, no_trees):
    #test trees …
Run Code Online (Sandbox Code Playgroud)

python memory-management random-forest scikit-learn python-multiprocessing

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

Pandas - 为什么read_csv与chunking'on'比没有小文件更快?

我正在读一个有点大表(90*85000)的字符串,整数和缺失值到熊猫.该文件很容易融入我的记忆中.我还在具有足够内存的服务器上运行脚本,观察相同的行为.

我认为批量读取文件会比分块更快或更快.然而,使用'chunksize = any_number',pandas读取文件的速度几乎快了300倍(11.138s对0.039s).

有人可以解释这种行为吗?

我的代码:

startTime = datetime.now()
df=pd.read_csv(dataFile,delim_whitespace=True)
print datetime.now() - startTime

startTime = datetime.now()
df=pd.read_csv(dataFile,delim_whitespace=True, chunksize=10)
print datetime.now() - startTime
Run Code Online (Sandbox Code Playgroud)

python csv dataframe pandas

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