几天来,我一直试图从一个非常大的协方差矩阵中计算出最近的正半定矩阵,以便能够从中取样。
我已经尝试了MATLAB的效果,但内存使用是疯狂的,它总是崩溃最终,没有错误消息或日志文件,直到我搜索。用于计算的函数可以在这里找到。优化函数以删除中间矩阵似乎减少了内存的使用,但它最终以同样的方式崩溃。
找到了这种计算的方法,并切换到Python,希望找到一些GPU库来加速计算,但是我似乎找不到一个最新的库,它支持使用numpy函数计算特征向量。这是我使用的函数:
import numpy as np
def get_near_psd(A):
C = (A + A.T)/2
eigval
我想用python以最快的方式计算一个内核矩阵:输入是一个矩阵X= n样本,n特征,输出应该是一个对称矩阵D=n样本,n样本
我现在使用的方法,即使是基于迭代器的,对for循环的处理似乎非常慢……有人能想出更好的办法吗?
谢谢
到目前为止我的方法是:
from itertools import combinations
def computeKernel(X,dlambda):
nsamples=X.shape[0]
D=numpy.zeros((nsamples,nsamples))
for el in combinations(range(nsamples),2):
如何检查numpy数组是否有规则的形状。
在下面的示例中,x是一个*2 by 3*矩阵。但是,y并不是正则的,因为它不能被表示为适当的矩阵。
假设我有一个numpy数组,是否有一个方法(最好是内置的)来检查numpy数组是一个实际的矩阵?
In [9]: import numpy as np
In [10]: x = np.array([[1,2,3],[4,5,6]])
In [11]: x.shape
我想检查两个稀疏数组是否(几乎)相等。而对于numpy数组,您可以这样做:
import numpy as np
a = np.ones(200)
np.testing.assert_array_almost_equal(a, a)
这不适用于稀疏数组,我可以理解这一点(对于较小的矩阵返回error AttributeError: ravel not found,或者返回与数组大小相关的错误)。是否有一个等价于测试稀疏矩阵的参数?我可以将稀疏矩阵转换为密集矩阵,并使用numpy测试函数,但有时由于(内存/大小)的限制,这是不可能的。例如:
from scipy import sparse
我正在将SVD应用于Python中的一个大型稀疏矩阵。我正在使用来自scipy.sparse.linalg包的svd。奇异值从升序中排序,因此奇异向量被排列成对应于升序奇异值的奇异向量。我想知道是否有一个选项,输出奇异值的降序,这样奇异向量也安排了相应的下降奇异值?下面只是一个示例代码:
from scipy.sparse.linalg import svds
from scipy import sparse
X = numpy.random.uniform(size = [40, 20])
X = scipy.sparse.csc_matrix(X)
u, s, vt = svds(X, 1
我正在做一个声音分类项目,假设我尝试确定某个录音属于哪一类的音频记录。您可能会将其与音乐类型或主题识别(文本体)问题进行比较,我的示例长度不同,我需要为每个示例精确地分配一个标签。
我将我的特性表示为2d矩阵,其中每一列代表音频文件中的一个帧(例如。每一行都是一个仅与该时间框架相关的特性(例如。MFCC系数)。现在,虽然我的行计数是固定的,列的数量将根据记录的长度而变化。
我将训练和测试数据作为numpy数组提供,它们包含每个样本的2D n x y矩阵,其中n是常数(即13),y是变量,它依赖于当前样本的长度。
不幸的是,科学学习似乎并不是这方面的超级粉丝,一次又一次地给我带来了一个
我需要在一个新变量中插入三维矩阵。我试图通过这样做:创建一个四维矩阵,并促进第四维,分别保存这三个维度。
样本代码:
from python_speech_features import mfcc
import numpy as np
X = np.zeros((0,0,0,0),float) #4-dimensional - (0, 0, 0, 0)
ii = 0
for ii in range 1000:
data, fs = sf.read(curfile[ii])
sig = mfcc(data, fs, winstep=wins
我使用的是Python、numpy和scikit-学习。我有存储在SQL表中的键和值的数据。我把它作为返回为:[(id, value),...]的元组列表来检索。每个id在列表中只出现一次,元组按升序排列。这个过程完成了几次,所以我有多个key: value对列表。使:
dataset = []
for sample in samples:
listOfTuplePairs = getDataFromSQL(sample) # get a [(id, value),...] list
dataset.append(listOfTuplePairs)
键可以在不同的样本中重
我目前有175 x事件的地震数据,每个事件有3条痕迹(痕迹是非常规的地震数据阵列)。对于175个样本中的每个样本,我都有地震数据是否是地震的分类标签。我希望将数据格式化为numpy数组进行建模。我尝试过将每个列都是不同的跟踪放入numpy数组的数据帧中。所以列就是“追踪一”,“追踪二”,“追踪三”。这是行不通的。我尝试过很多不同的方法来安排数据与角点一起使用。我现在希望为数据创建一个numpy矩阵,然后用于建模。我曾想过这个形状可能是(175,3,7501)作为(#number of events, #number of traces,#number of samples in trace),
CONST_TRAINTING_SEQUENCE_LENGTH = 12
CONST_TESTING_CASES = 5
def dataNormalization(data):
return [(datum - data[0]) / data[0] for datum in data]
def dataDeNormalization(data, base):
return [(datum + 1) * base for datum in data]
def getDeepLearningData(ticker):
# Step 1. Load data
我的问题是:我有K个多元高斯的GMM模型,还有N个样本。我想要创建一个N*K numpy矩阵,在它的i,k单元中,在I‘to样本上有k’to高斯的pdf函数,也就是说,在这个单元中,我深入到以下矩阵中:
这就是我现在拥有的(我正在使用python):
Q = np.array([scipy.stats.multivariate_normal(mu_t[k], cov_t[k]).pdf(X) for k in range(self.K)]).T
代码中的X是一个矩阵,它的行是我的样本。
它在小尺寸的小玩具数据集上工作得很好,但是我使用的数据集是10,000,28*28张图片,在它上面,这一行运