我有一个 mySQL 数据库,里面装满了一个包含 80 列和 1000 万行的大表。数据可能存在不一致。
我想以自动化和有效的方式规范化数据库。
我可以使用 java/c++/... 来做到这一点,但我想在数据库中尽可能多地做。我猜数据库之外的任何工作都会大大减慢速度。
关于如何做的建议?什么是好的资源/教程可以开始?
我不是在寻找关于什么是规范化的任何提示(使用谷歌发现了很多这样的东西)!
我正处于多用户应用程序的规划阶段,每个用户只能访问自己的数据。会有一些相互关联的表,因此我可以使用 JOIN 来确保它们仅访问其数据,但我应该在每个表中包含 user_id 吗?这样会更快吗?从长远来看,这肯定会让一些查询变得更容易。
具体来说,问题是关于包含 user_id 字段的多个表。
例如,每个用户可以配置类别、项目(在这些类别中)以及针对这些项目的子项目。有一条从用户到其他表到子项的逻辑路径,但需要 3 个 JOIN。我应该在所有表中包含 user_id 吗?
谢谢!
我知道这个问题被问到令人作呕,但不知何故我无法使其正常工作。我创建了一个具有单位幅度的 440 Hz 的单个正弦波。现在,在 FFT 之后,440 Hz 的 bin 具有明显的峰值,但该值不正确。我希望看到 0 dB,因为我正在处理单位幅度正弦波。相反,计算出的功率远高于 0 dB。我使用的公式很简单
for (int i = 0; i < N/2; i++)
{
mag = sqrt((Real[i]*Real[i] + Img[i]*Img[i])/(N*0.54)); //0.54 correction for a Hamming Window
Mag[i] = 10 * log(mag) ;
}
Run Code Online (Sandbox Code Playgroud)
我可能应该指出时域中的总能量等于频域中的能量(Parseval 定理),所以我知道我的 FFT 程序很好。
任何帮助深表感谢。
如果True在任何线性模型中将标准化参数设置为sklearn.linear_model,则在评分步骤期间应用标准化吗?
例如:
from sklearn import linear_model
from sklearn.datasets import load_boston
a = load_boston()
l = linear_model.ElasticNet(normalize=False)
l.fit(a["data"][:400], a["target"][:400])
print l.score(a["data"][400:], a["target"][400:])
# 0.24192774524694727
l = linear_model.ElasticNet(normalize=True)
l.fit(a["data"][:400], a["target"][:400])
print l.score(a["data"][400:], a["target"][400:])
# -2.6177006348389167
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们在设置时看到预测功率的下降normalize=True,并且我无法判断这是否仅仅是score未应用归一化的函数的伪像,或者归一化值是否导致model性能下降.
我有一个 numpy 形状的图像数组,(N, H, W, C)其中N是图像数量、H图像高度、W图像宽度和CRGB 通道。
我想按通道标准化我的图像,所以对于每个图像,我想按通道减去图像通道的平均值并除以它的标准偏差。
我在循环中执行此操作,该操作有效,但是效率非常低,并且因为它复制了我的 RAM 太满了。
def standardize(img):
mean = np.mean(img)
std = np.std(img)
img = (img - mean) / std
return img
for img in rgb_images:
r_channel = standardize(img[:,:,0])
g_channel = standardize(img[:,:,1])
b_channel = standardize(img[:,:,2])
normalized_image = np.stack([r_channel, g_channel, b_channel], axis=-1)
standardized_images.append(normalized_image)
standardized_images = np.array(standardized_images)
Run Code Online (Sandbox Code Playgroud)
如何利用 numpy 的功能更有效地做到这一点?
我使用 preprocessing.scale astype('float64') 将特征标准化为 mean=0 和 sd=1。我收到以下警告:
用户警告:将数据居中时遇到数值问题,可能无法解决。数据集可能包含太大的值。您可能需要预先缩放您的功能。warnings.warn("遇到数值问题"
这是数据集的示例:
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13
0 327 143.04 123.66 101.71 89.36575914 0.668110013 84.13713837 588.103818 633.6584113 525.5505746 132.966095 13.05099964 131.7220566
1 1010 188.98 176.78 137.33 89.36575914 0.620949984 40.52060699 1413.802012 3705.255352 1641.459378 106.3353716 7.69299984 472.4249759
2 1485 166.67 141.72 111.07 98.91169739 0.979290009 100 3580.441388 4327.644518 3242.16829 111.2140427 13.05300045 1164.119187
3 78 54.27 83.01 161.74 95.0061264 0.968744297 100 35644.07894 37765.71684 15667.95157 106.3043671 7.448999882 850.651571
4 591 …Run Code Online (Sandbox Code Playgroud) 使用 R,我尝试对列进行最小-最大标准化,但我需要按由另一列确定的组来设置最小值和最大值,而不是使用所有列值的最小值和最大值。
请看这个例子:
x <- c(0, 0.5, 1, 2.5, 0.2, 0.3, 0.5, 0,0,0.1, 0.7)
y <- c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3)
df <- data.frame (x, y)
df
Run Code Online (Sandbox Code Playgroud)
对于 y=1,min(x) = 0,max(x) = 2.5。对于 y=2,min(x) = 0.2,max(x) = 0.5,依此类推。
根据该分组的最小值和最大值,执行归一化。
我发现了一个类似的Python问题,但它对我没有多大帮助: Normalize a column of dataframe using min max normalization based on groupby of another column
我使用 ResNet18 主干网和研究建议的技术训练了 Cifar100 数据集,最终得到了一些令人惊讶的结果。我进行了两次尝试,第一次尝试使用 640 批量大小,第二次尝试使用 320 批量大小。其余所有超参数保持相似。
我对 640 批量大小获得的准确度是:76.45% 我对 320 批量大小获得的准确度是:78.64%
你能告诉我为什么会发生这种情况吗?
据我所知,这只是因为协变量偏移。完成完整样本的每次迭代的分布会影响准确性。我认为,与 640 批量大小相比,320 批量大小的分布彼此相似,这导致了更高的准确性。
您能解释一下吗?解决方案是什么?
normalization neural-network deep-learning conv-neural-network