function Selected_Data_Index = BPLSH(Data,M,L,W) %----------Data Reduction----------% %Normalizing the data between 0 and 1 maximum = max(Data(:,1:end-1)); %找出Data第一列到倒数第二列,每一列元素的最大值 minimum = min(Data(:,1:end-1)); maxmin = maximum-minimum; maxmin(maxmin==0) = 1; Data(:,1:end-1) = (Data(:,1:end-1) - minimum)./maxmin; % ./ 一一对应相除 %将Data 第一列 到 倒数第二列所有行的元素赋值 Dimension = size(Data(:,1:end-1),2); % Number of features M; % Number of hash functions in each table L; % Number of hash tables W; % Bucket size %s = rng; %Reset Random Number Generator 重置随机数生成器 a = normrnd(0,1, [M*L , Dimension]); %生成M*L?Dimension的随机矩阵,每个元素都是从均值为0,标准差为1的正态分布中随机生成 %# Generate a in floor((ax+b)/W) b = W.*rand(M*L,1); % Generate b in floor((ax+b)/W) %生成M*L行1列伪随机数 % Calculating the buckets of samples % disp('Bucket Assigning'); Bucket_Index_Decimal_All = int32(zeros(L,size(Data(:,1:end-1),1))); 解释一下
时间: 2024-03-07 08:53:14 浏览: 68
该函数的功能是进行数据降维,使用了基于局部敏感哈希(BPLSH)的方法。
下面是对函数中代码的解释:
1. 对数据进行归一化,将所有特征值缩放到0和1之间。
2. 定义了三个参数:M表示每个哈希表中的哈希函数数量,L表示哈希表数量,W表示哈希桶大小。
3. 生成随机数矩阵a和b,用于哈希函数的计算。其中a是一个M*L行,每行包含Dimension个元素的矩阵,每个元素都是从均值为0,标准差为1的正态分布中随机生成的。b是一个M*L行,每行只有一个元素,这个元素是从0到W之间的随机整数。
4. 计算数据样本的哈希桶索引。对于每个样本,使用M个哈希函数将其映射到M个哈希桶中,并将这M个哈希桶的索引值连接起来作为该样本在一个哈希表中的索引。最终得到一个L行,每行包含所有样本在该哈希表中的索引值的向量。这个向量中的每个元素是一个十进制整数,表示样本在对应哈希桶中的索引。
5. 将所有样本在L个哈希表中的哈希桶索引值合并,得到一个L*实例数的矩阵Bucket_Index_Decimal_All。其中每一列是一个实例在L个哈希表中的哈希桶索引值。
6. 返回Bucket_Index_Decimal_All。
相关问题
ValueError: zero-size array to reduction operation minimum which has no identity
ValueError: zero-size array to reduction operation minimum which has no identity is a common error that occurs when you try to perform a mathematical operation on an empty array or a
zero-length list. This error occurs because the operation requires at least one element in the array, but the array is empty.
For example, if you try to calculate the sum of all elements in an empty array using the built-in Python function sum(), you will get this error:
```
>>> numbers = []
>>> sum(numbers)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in <listcomp>
ValueError: zero-size array to reduction operation minimum which has no identity
```
To fix this error, make sure that the array or list you are trying to operate on contains at least one element before performing any mathematical operations on it.
zero-size array to reduction operation minimum which has no identity
在C语言中,零大小数组是一种特殊的数组类型,它没有元素。而在进行归约操作时,最小值操作是一种常见的操作,它用于找到数组中的最小值。然而,对于没有元素的零大小数组来说,最小值操作是没有定义的,因为没有元素可以进行比较。
归约操作通常需要一个初始值作为标识符,以便在数组为空时返回一个合理的结果。但是对于最小值操作来说,并没有一个合适的初始值来表示没有元素的情况。
因此,对于零大小数组来说,进行最小值归约操作是没有定义的,因为没有元素可以进行比较。在这种情况下,你需要考虑如何处理空数组的情况,例如可以返回一个特定的错误码或者采取其他适当的处理方式。
阅读全文