小编Jin*_*ing的帖子

numpy OpenBLAS设置了最大线程数

我正在使用numpy,我的模型涉及密集矩阵矩阵乘法.为了加快速度,我使用OpenBLAS多线程库来并行化numpy.dot函数.

我的设置如下,

  • 操作系统:CentOS 6.2服务器#CPU = 12,#MEM = 96GB
  • python版本:Python2.7.6
  • numpy:numpy 1.8.0
  • OpenBLAS + IntelMKL

$ OMP_NUM_THREADS=8 python test_mul.py

代码,我从https://gist.github.com/osdf/获取

test_mul.py :

import numpy
import sys
import timeit

try:
    import numpy.core._dotblas
    print 'FAST BLAS'
except ImportError:
    print 'slow blas'

print "version:", numpy.__version__
print "maxint:", sys.maxint
print

x = numpy.random.random((1000,1000))

setup = "import numpy; x = numpy.random.random((1000,1000))"
count = 5

t = timeit.Timer("numpy.dot(x, x.T)", setup=setup)
print "dot:", t.timeit(count)/count, "sec"
Run Code Online (Sandbox Code Playgroud)

当我使用OMP_NUM_THREADS = 1 python test_mul.py时,结果是

dot: 0.200172233582 sec
Run Code Online (Sandbox Code Playgroud)

OMP_NUM_THREADS = 2

dot: …
Run Code Online (Sandbox Code Playgroud)

python multithreading numpy blas intel-mkl

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

如何从matlab中精确参数化的多元高斯分布中抽取样本

我想知道如何在matlab中绘制样本,其中我有精度矩阵和mean作为输入参数.

我知道mvnrnd是一种典型的方法,但它需要协方差矩阵(即精度的倒数)作为参数.

我只有精确矩阵,由于计算问题,我无法反转我的精度矩阵,因为它需要太长时间(我的尺寸约为2000*2000)

matlab probability matrix

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

PySpark pyspark.sql.functions.col和pyspark.sql.functions.lit之间的区别

我发现很难理解这两种方法之间的区别,pyspark.sql.functions因为PySpark官方网站上的文档信息量不大.例如,以下代码:

import pyspark.sql.functions as F
print(F.col('col_name'))
print(F.lit('col_name'))
Run Code Online (Sandbox Code Playgroud)

结果是:

Column<b'col_name'>
Column<b'col_name'>
Run Code Online (Sandbox Code Playgroud)

那么这两者之间有什么区别?何时应该使用一个而不是另一个?

apache-spark-sql pyspark pyspark-sql

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

scikit-learn GMM产生正对数概率

我正在使用python scikit-learn包中的高斯混合模型来训练我的数据集,但是,当我编码时,我想到了

- G =混合物.GMM(...)

- G.fit(...)

- G.score(总和特征)

得到的对数概率是正实数...为什么?不是对数概率保证为负数?

我知道了.高斯混合模型返回给我的是对数概率"密度"而不是概率"质量",所以正值是完全合理的.

如果协方差矩阵接近单数,那么GMM将不会很好地表现,并且通常意味着数据不适合这样的生成任务

python machine-learning scikit-learn mixture-model

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

python matplotlib图稀疏矩阵模式

给定一个稀疏的二进制矩阵A(csr,coo,等等)我想制作一个图,这样我可以看到图中的位置(i,j)= white,如果A(i,j)= 1,和(i, j)= A,如果A(i,j)= 0;

对于密集的numpy数组,matshow将完成这项工作.但是,我的稀疏矩阵(例如100000 x 1000000)的维度很大,可以转换为密集阵列.我想知道如何在稀疏矩阵中绘制模式.

谢谢

python numpy matplotlib scipy sparse-matrix

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

我如何与KL-divergence聚类?

我想用KL-divergence作为我的指标来聚类我的数据.

在K-means中:

  1. 选择群集数量.

  2. 随机初始化每个群集的均值.

  3. 将每个数据点分配给c具有最小距离值的群集.

  4. 将每个群集的平均值更新为分配给它的数据点的平均值.

在Euclidean案例中,只需平均每个向量即可轻松更新均值.

但是,如果我想使用KL-divergence作为我的指标,我该如何更新我的意思呢?

machine-learning k-means

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

C中的typedef数组类型

typedef int arr[10]

据我所知,上面的语句为int [10]定义了一个新名称

arr intArray;
Run Code Online (Sandbox Code Playgroud)

相当于

int intArray[10];
Run Code Online (Sandbox Code Playgroud)

但是,我对这样做的惯例感到困惑.在我看来,这

typedef int arr[10]

令人困惑,对我来说是一个明确的方式

typedef int[10] arr

即我将"int [10]"定义为一个名为arr的新类型

但是,编译器不接受这一点.

我可以问为什么?它只是C语言的惯例吗?

c arrays typedef

5
推荐指数
2
解决办法
822
查看次数

为什么分类模型不适用于类不平衡设置?

关于如何打击阶级不平衡问题,有许多职位和资源,即对少数群体进行过度抽样或对多数群体进行抽样不足.

我也明白,使用准确性来评估不平衡问题的模型性能是错误的.

但是,我没有找到很多资源来讨论为什么ML模型首先在类不平衡问题上失败.仅仅是因为损失函数通常是所有数据点的总和,因此模型倾向于更多地强调多数类数据而不是少数类数据?

其次,在实际应用中,例如欺诈检测或点击预测(发生类失衡),为什么通过训练集的过度(欠)采样来改变分布是一件好事?难道我们不希望分类器反映真实的分布(其本质上是不平衡的)吗?假设我有一个训练的逻辑回归模型来预测欺诈,让我们假设欺诈率是2%.欺诈事件的过度抽样基本上告诉模型欺诈率不是2%,而是50%(比如说).这是一件好事吗?

总结一下.两个问题:

  1. 为什么ML模型会在类不平衡设置中失败?是否因为损失函数通常由各个数据点的损失总和组成?

  2. 为什么over(under)-sampling本质上改变了模型看待问题的方式,这是一个好方法?为什么不让模型真实地反映出类的分布?

statistics classification machine-learning

5
推荐指数
2
解决办法
734
查看次数

PySpark,DataFrame的顶部

我想要做的是给出一个DataFrame,根据一些指定的列获取前n个元素.RDD API中的top(self,num)正是我想要的.我想知道DataFrame世界中是否有相同的API?

我的第一次尝试如下

def retrieve_top_n(df, n):
    # assume we want to get most popular n 'key' in DataFrame
    return df.groupBy('key').count().orderBy('count', ascending=False).limit(n).select('key')
Run Code Online (Sandbox Code Playgroud)

但是,我已经意识到这会导致非确定性行为(我不知道确切的原因,但我认为limit(n)不能保证采取哪个n)

dataframe apache-spark pyspark spark-dataframe

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