我正在尝试使用python通过主成分分析(PCA)来实现人脸识别。我遵循本教程中的步骤:
下面是我的代码:
import os
from PIL import Image
import numpy as np
import glob
import numpy.linalg as linalg
#Step1: put database images into a 2D array
filenames = glob.glob('C:\\Users\\Karim\\Downloads\\att_faces\\New folder/*.pgm')
filenames.sort()
我有两个排名为2的Tensor,在第二个维度上大小相等,但在第一个维度上不相等。例如,形状[a, n]的张量A和形状[b, n]的张量B。它们可以看作是包含长度为n的向量的两个数组。
我有一个函数f,它接受两个输入,每一个都是形状[n]的张量,并返回一个标量。我想将这个函数应用于A和B中的每一对向量,结果是形状为[a, b]的张量C,这样,对于C中的每个位置(i, j),C[i, j] = f(A[i], B[j])。
如果这些只是常规的Numpy数组,我可以用下面的代码来完成:
# Assume a, b, and n are integers, and A and B are Numpy
我有一个numpy数组,类似于:
import numpy as np
a = np.array([[1,0,1,0],
[1,1,0,0],
[1,0,1,0],
[0,0,1,1]])
我想计算每一对行之间的euclidian distance。
from scipy.spatial import distance
for i in range(0,a.shape[0]):
d = [np.sqrt(np.sum((a[i]-a[j])**2)) for j in range(i+1,a.shape[0]
我在Numpy中有一个16x16x4的数组。
维度1:水平位置0,15
维度2:垂直位置0,15
维度3: RGB值0-255 0,3
将16x16替换为2048x1285,并:
for x in range(0,15):
for y in range(0,15):
不会切断它(在7分钟以上的时间内完成此操作,并在每个感兴趣的点进行大量填充)。迭代一个PIL图像是相当快的,但是一个numpy数组拖曳(即7+分钟)。
numpy.where(bitmap == [red, green, blue, alpha])
看起来这不是我要找的。要做到这一点,有什么比较快的方法?
编辑:
bitm
我试图运行下面的代码行,但我一直收到以下错误:
TypeError: '(['Latitude'], ['Longitude'])' is an invalid key
# Make KMeans model from Longitude & Latitude and get clusters
from sklearn.cluster import KMeans
X_train_lat_long = train_df[['Latitude'], ['Longitude']].to_numpy()
kme
假设我有两个点数组,我想知道每个点之间的距离是多少。
例如:
array_1 = [p1,p2,p3,p4]
array_2 = [p5,p6]
p1 to p6是点,类似于
我想要的输出是
output = [[distance of p1 to p5, distance of p2 to p5, ... distance of p4 to p5],
[distance of p1 to p6, distance of p2 to p6, ... distance of p4 to p6]]
如果我想使用numpy,最好的方法是什么?
请通过我对LSI (机械工程背景)的理解来理解我:
在LSI中执行SVD之后,有3个矩阵:
U,S,V转座。
U将单词与主题进行比较,S是衡量每个特征强度的一种方法。将主题与文档进行比较。
U dot S dot Vt
返回SVD之前的原始矩阵。没有做太多(没有)深度代数,似乎:
U dot S dot **Ut**
返回一项一项的矩阵,该矩阵提供了两个术语之间的比较。也就是说,一个术语与其他术语的关系,是一种比较词而不是成分的DSM (设计结构矩阵)。我可能完全错了,但我尝试了一个样本数据集,结果似乎是有意义的。这可能只是偏见(我想让它起作用,所以我看到了我想要的)。我不能发布结果,因为
我有一个a-by-b单元数组,C。在每个元素中,都有一个浮点数组。
现在我想创建一个新的对称矩阵M。M中的每个元素(i, j)将设置为C中所有相应浮点数组的欧几里得距离之和。
例如,要找到M(i,j),我会将C中的b浮点数组沿行i取为一组,将C中的b浮点数组取为j行,求出这两组数组之间的欧几里得距离,然后将b x b值相加。C{i,j}是一个列向量。所有列的长度都相同。
下面是我对此的“暴力”实现:
for i=1:a
for j=1:a
dist_sum = 0;
for k=1:b
for l=1:b
我被要求计算每个点到质心的平均距离。已经提供了数据集和集群数量,这似乎是一个非常直截了当的问题(考虑到k-意思集群的作用),但我似乎找不到一个可行的解决方案。
dataset是带有浮点数的3列500行excel工作表。
据我所读,最简单的方法是将点到每个质心的距离放在一个numpy数组中,并计算平均值。这就是我在下面所做的。
from sklearn.cluster import KMeans
import pandas as pd
import matplotlib.pyplot as plt
'exec(%matplotlib inline)'
import numpy a
我有两个模块,我从每个模块(程序)导入了一个元素/对象,并将其分配给其他一些变量,但我仍然得到了这个错误。我的代码是:
from CBIR import feature_matrix_db
from experiment import feature_matrix_ip
from scipy.spatial import distance
i = 0
a_list = list()
b_list = list()
a_list.append(feature_matrix_ip)
while i < 50:
b_list.append(feature_matrix_db[i])
我正在尝试使用numpy在python中实现这个公式。
如上图所示,X是numpy矩阵,每个xi是n维的向量,C也是n维的向量,每个Ci也是n维的向量,dist(Ci,xi)是这两个向量之间的欧氏距离。我在python中实现了一个代码:
value = 0
for i in range(X.shape[0]):
min_value = math.inf
#this for loop iterate k times
for j in range(C.shape[0]):
distance = (np.dot(X[i] - C[j],