我在过去的经验中看到,大多数人不会在表格中使用物理关系,他们会尝试记住它们并仅通过编码来应用它们.
这里的" 物理关系 "指的是主键,外键,检查约束等.
在设计数据库时,人们会尝试在纸上标准化数据库并记录下来.就像,如果我必须为营销公司创建一个数据库,我会尝试了解它的要求.例如,哪些字段是必填字段,哪些字段仅包含(a或b或c)等.
当所有事情都清楚的时候,为什么大多数人都害怕受到限制?
你认为是什么原因?
使用Java,我想剥离片段标识符并执行一组不同URI的简单规范化(例如,小写方案,主机).输入和输出URI在一般HTTP意义上应该是等效的.
通常,这应该是直截了当的.但是,对于像http://blah.org/A_%28Secret%29.xml#blah%这样编码的URI ,(Secret)行为java.util.URI会使生活变得困难.
规范化方法应该http://blah.org/A_%28Secret%29.xml从URI 返回,http://blah.org/A_%28Secret%29.xml并且http://blah.org/A_(Secret).xml在解释中不等同[§2.2; RFC3968 ]
所以我们有以下两种规范化方法:
URI u = new URI("http://blah.org/A_%28Secret%29.xml#blah");
System.out.println(u);
// prints "http://blah.org/A_%28Secret%29.xml#blah"
String path1 = u.getPath(); //gives "A_(Secret).xml"
String path2 = u.getRawPath(); //gives "A_%28Secret%29.xml"
//NORMALISE METHOD 1
URI norm1 = new URI(u.getScheme().toLowerCase(), u.getUserInfo(),
u.getHost().toLowerCase(), u.getPort(), path1,
u.getQuery(), null);
System.out.println(norm1);
// prints "http://blah.org/A_(Secret).xml"
//NORMALISE METHOD 2
URI norm2 = new URI(u.getScheme().toLowerCase(), u.getUserInfo(),
u.getHost().toLowerCase(), u.getPort(), path2,
u.getQuery(), null);
System.out.println(norm2);
// prints "http://blah.org/A_%2528Secret%2529.xml"
Run Code Online (Sandbox Code Playgroud)
如我们所见,在没有片段标识符的情况下解析和重建URI.
但是,对于方法1,u.getPath() …
我一直在玩一些SVM实现,我想知道 - 将特征值标准化以适应一个范围的最佳方法是什么?(从0到1)
假设我有3个功能,其值范围为:
3 - 5.
0.02 - 0.05
10-15.
如何将所有这些值转换为[0,1]的范围?
如果在训练期间,我将遇到的特征编号1的最高值为5,并且在我开始在更大的数据集上使用我的模型之后,我会偶然发现高达7的值?然后在转换范围内,它将超过1 ......
如何在训练期间对值进行标准化,以解释"野外值"超过训练期间"看到"模型的最高(或最低)值的可能性?如果发生这种情况,模型将如何对此作出反应以及如何使其正常工作?
我试图在R中的向量中转换数据
这不适用于线性回归,因此我没有预测器和响应关系.我只是使用一个模型,通过规范化我的数据来提高准确性.(因此我不能使用boxcox函数,因为它只适用于线性模型).
我试图改造的数据是:
vect
[1] 99.64 49.71 246.84 96.17 16.67 352.00 421.25 81.77 105.00 37.85
Run Code Online (Sandbox Code Playgroud)
我看过这篇文章.
目前还不清楚正在做什么以及如何使用优化功能但是我确实设法修改了函数以创建一个我想最小化的函数.
xskew <- function(data,par) {
abs(skewness((data^par-1)/par)) }
Run Code Online (Sandbox Code Playgroud)
我想为lambda输入一系列值(可能介于0.5和1之间,跳数为0.01),并找到这些值中的哪一个最小化我的数据集的xskew.
我试过用optim函数做这个,但没有运气,所以我不认为这对我来说可能是正确的功能.我该如何进行此计算?
编辑:我想要的是:
x <- seq(0.51,0.99,by=0.01)
which(xskew(vect,x) < 0.05)
Run Code Online (Sandbox Code Playgroud)
所以也许我会在某个门槛下找到一个值.此代码显然会产生错误.
我对ANN仍然相当新,我只是阅读批量标准化论文(http://arxiv.org/pdf/1502.03167.pdf),但我不确定我是否正在做他们正在做的事情(以及更多重要的是,它为什么有效)
所以假设我有两层L1和L2,其中L1产生输出并将它们发送到L2中的神经元.批量标准化只需从L1获取所有输出(即每个神经元的每一个输出,获得|L1| X |L2|完全连接网络的数字的整体向量),将它们标准化为0和SD为1,然后将它们提供给L2中各自的神经元(加上应用他们在论文中讨论的γ和β的线性变换)?
如果确实如此,这对NN有何帮助?关于不断分配的特别之处是什么?
图像处理中归一化的正确平均值是多少?我用谷歌搜索,但我有不同的定义.我将尝试详细解释每个定义.
核矩阵的规范化
如果将归一化称为矩阵(例如用于卷积滤波器的核矩阵),则通常将矩阵的每个值除以矩阵的值的总和,以使矩阵的值的总和等于1 (如果所有值都大于零).这很有用,因为图像矩阵和我们的核矩阵之间的卷积给出的输出图像的值介于0和原始图像的最大值之间.但是如果我们使用sobel矩阵(具有一些负值),那就不再适用了,我们必须拉伸输出图像,以使所有值都在0和最大值之间.
图像的标准化
我基本上找到了两个规范化的定义.第一个是"削减"过高或过低的值.即,如果图像矩阵具有负值,则将它们设置为零,并且如果图像矩阵具有高于最大值的值,则将它们设置为最大值.第二个是线性拉伸所有值,以使它们适合区间[0,max value].
我在网上搜索了关于文件长度差别很大的情况下的tf等级标准化(例如,文件长度从500字到2500字不等)
唯一正规化我发现谈论将术语频率除以文档的长度,因此导致文档的长度没有任何意义.
这种方法对于规范化tf来说是一个非常糟糕的方法.如果有的话,它会导致每个文档的tf等级具有非常大的偏差(除非所有文档都是从几乎相同的字典构造的,使用tf-idf时不是这种情况)
例如,我们可以获取2个文档 - 一个包含100个唯一单词,另一个包含1000个唯一单词.doc1中的每个单词的tf值为0.01,而在doc2中,每个单词的tf值为0.001
当使用doc1与doc2匹配单词时,这会导致tf-idf等级自动变大
有没有人有任何更合适的正规化配方?
谢谢
编辑 我还看到一种方法,说明我们应该将术语频率除以每个文档的doc的最大术语频率,这也解决了我的问题
我在想的是,计算所有文档的最大术语频率,然后通过将每个术语频率除以最大值来对所有术语进行归一化
我很想知道你的想法
我有一个包含14个数字列的ARFF文件.我想分别对每个列执行规范化,即将每个列的值修改为(actual_value - min(this_column)) / (max(this_column) - min(this_column)).因此,列中的所有值都将在该范围内[0, 1].列的最小值和最大值可能与另一列的最小值和最大值不同.
我怎么能用Weka过滤器做到这一点?
谢谢
我对图像标准化,图像范围和图像缩放非常困惑.我正在使用算法(我在上一个问题中上传了算法),在应用算法后,我使用维基百科中的这个公式来规范化图像:

使用getrangefromclass(filtImag1{i})MATLAB,在应用算法之前的矩阵范围是[0 255],并且在应用算法之后,范围是[0 1].
问题是我需要找一个参考来找出规范化公式是否正确?我还有5叠图像,每张图像包含600张图像.我已经为每个堆栈应用了算法,并且由于算法的结果是每个堆栈有10个图像,我最终会得到50个我需要分析的图像并将它们进行比较.我找到了50张图像的最大值和最小值,然后将每张图像传递到公式中以对图像进行标准化.
虽然图像的范围是[0 1]但图像的最大值是:max = 3.6714e + 004
为什么?不应该是1吗?这是正常化的正确方法吗?我该如何应用缩放?我需要这样做吗?
这是规范化代码:
%%%%%%%%%%%%%%Find Min and Max between the results%%%%%%%%%%%%%%%%%%%%%%%
pre_max = max(filtImag1{1}(:));
for i=1:10
new_max = max(filtImag1{i}(:));
if (pre_max<new_max)
pre_max=max(filtImag1{i}(:));
end
end
new_max = pre_max;
pre_min = min(filtImag1{1}(:));
for i=1:10
new_min = min(filtImag1{i}(:));
if (pre_min>new_min)
pre_min = min(filtImag1{i}(:));
end
end
new_min = pre_min;
%%%%%%%%%%%%%%normalization %%%%%%%%%%%%%%%%%%%%%%%
for i=1:10
temp_imag = filtImag1{i}(:,:);
x=isnan(temp_imag);
temp_imag(x)=0;
t_max = max(max(temp_imag));
t_min = min(min(temp_imag));
temp_imag = (double(temp_imag-t_min)).*((double(new_max)-double(new_min))/double(t_max-t_min))+(double(new_min));
imag_test2{i}(:,:) = …Run Code Online (Sandbox Code Playgroud) 我通过C#读了杰弗里里希特的CLR,String.ToUpperInvariant()速度比String.ToLowerInvariant().他说这是因为FCL使用ToUpperInvariant来规范化字符串,因此该方法是超优化的.在我的机器上运行几个快速测试,我同意这ToUpperInvariant()确实稍微快一些.
我的问题是,如果有人知道该功能在技术层面上是如何实际优化的,和/或为什么同样的优化也没有被应用ToLowerInvariant().
关于"重复":提议的"重复"问题实际上并未提供我的问题的答案.我理解使用ToUpperInvariant而不是使用的好处ToLowerInvariant,但我想知道的是如何/为什么ToUpperInvariant表现更好.这一点未在"重复"中解决.