[转载]归一化 总结和代码实现

归一化和标准化 1.总结: 作用: 归一化后加快了梯度下降求最优解的速度; 归一化有可能提高精度。 防止梯度消失或爆炸 常见: 最值归一化。比如把最大值归一化成1,最小值归一化成-1;或把最大值归一化成1,最小值归一化成0。适用于本来就分布在有限范围内的数据。 均值方差归一化,一般是把均值归一化成0,方差归一化成1。适用于分布没有明显边界的情况,受outlier影响也较小。 举例: BatchN... 阅读详情

原文链接:归一化 完全总结!!,https://mp.weixin.qq.com/s/E8hEaHaKPLELXj8RTgowJw

作为之前博文的后续吧:【转载】为什么要做特征归一化/标准化?-优快云博客

数据归一化是一种预处理步骤,就是想要将不同尺度和数值范围的数据转换到统一的尺度上。

这个过程通常涉及对原始数据进行调整,使其符合特定的标准,如使数据的范围落在0到1之间或具有标准正态分布的特性。

归一化的主要目的是提高算法的性能和精度,特别是在涉及多个特征且这些特征的度量单位或数值范围不同的情况下。

数据归一化有几个关键点,大家先看看:

  1. 统一尺度:当数据集中的特征在不同的尺度上时(例如,一个特征的范围是0到1,另一个是100到1000),归一化可以将所有特征转换到相似的尺度上。
  2. 提高收敛速度:在使用梯度下降和其他基于优化的算法时,归一化可以帮助加快收敛速度。如果特征在不同尺度上,优化过程可能会变得非常慢。
  3. 防止偏差:在一些算法中,例如距离计算的算法(如K-最近邻、K-均值聚类),如果一个特征的数值范围比其他特征大得多,那么它可能会在距离计算中起主导作用,从而影响算法的性能。
  4. 提高数值稳定性:归一化还可以避免数值计算中的问题,如梯度消失或爆炸,这在深度学习模型中尤其重要。

聊完归一化的几个关键点,再来详细阐述一下,开头说的重要性,重要在哪几方面:

  1. 加速模型训练:归一化后的数据有助于加速学习算法的收敛。在很多算法(如梯度下降)中,如果特征具有不同的尺度,会导致收敛缓慢或不稳定。
  2. 提高模型性能:当特征在相似的尺度上时,模型训练更加高效,可以提高模型的性能。不同尺度的特征可能会导致模型偏向于尺度较大的特征。
  3. 降低数值计算难度:归一化可以减少数值计算的复杂性,尤其是对于基于距离的算法(如K-最近邻或K-均值聚类),不同尺度的特征可能会对距离计算产生不均等的影响。
  4. 避免数值不稳定性和提高精度:在许多机器学习算法中,非常高或非常低的值可能导致数值不稳定,如梯度爆炸或消失。归一化有助于避免这些问题。
  5. 使特征更加统一:在涉及多个特征的数据集中,归一化确保每个特征被赋予等同的重要性。没有归一化,具有较大范围的特征可能会不成比例地影响结果。
  6. 更好地理解特征重要性:在归一化后,特征的权重大小可以直接表明其对模型的影响,从而更容易解释模型。
  7. 适应特定算法要求:某些机器学习算法,尤其是基于梯度的优化算法和正则化方法,要求数据必须归一化才能正确工作。

下面咱们从代码层面,说说几种不同的归一化方法,以及归一化带来的效果。

  • 最小-最大归一化
  • 标准化
  • 小数定标归一化
  • 均值归一化
  • 单位长度归一化

最小-最大归一化

最小-最大归一化是一种将数据特征缩放到特定范围(通常是0到1)的方法。该方法对原始数据进行线性变换,确保数据的最小值变为0,最大值变为1。这种归一化方法对原始数据的分布形状没有影响,仅改变数据的尺度和位置。

公式说明
其中,min(x) 和 max(x) 分别是数据集  中的最小值和最大值。经过这个公式处理后, 的值将位于0和1之间。

计算步骤

  1. 确定数据集  中的最小值  min(x) 和最大值  max(x) 。
  2. 对于数据集  中的每个数据点 ,使用上述公式计算 。

案例代码
以下代码包括数据生成、归一化处理,以及可视化对比结果。

import numpy as np
import matplotlib.pyplot as plt

# 生成两组不同尺度的数据
data_small_scale = np.random.randint(0, 100, 100)  # 范围在0到100
data_large_scale = np.random.randint(1000, 10000, 100)  # 范围在1000到10000

# 最小-最大归一化
def min_max_normalize(data):
    return (data - np.min(data)) / (np.max(data) - np.min(data))

# 应用最小-最大归一化
normalized_small_scale = min_max_normalize(data_small_scale)
normalized_large_scale = min_max_normalize(data_large_scale)

# 可视化对比
plt.figure(figsize=(12, 6))

# 绘制原始数据的直方图
plt.subplot(221)
plt.hist(data_small_scale, bins=15, color='blue', alpha=0.7)
plt.title('Small Scale Data')
plt.xlabel('Value')
plt.ylabel('Frequency')

plt.subplot(222)
plt.hist(data_large_scale, bins=15, color='red', alpha=0.7)
plt.title('Large Scale Data')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 绘制归一化数据的直方图
plt.subplot(223)
plt.hist(normalized_small_scale, bins=15, color='green', alpha=0.7)
plt.title('Normalized Small Scale Data')
plt.xlabel('Normalized Value')
plt.ylabel('Frequency')

plt.subplot(224)
plt.hist(normalized_large_scale, bins=15, color='orange', alpha=0.7)
plt.title('Normalized Large Scale Data')
plt.xlabel('Normalized Value')
plt.ylabel('Frequency')

plt.tight_layout()
plt.show()

在这段代码中,定义了一个 min_max_normalize 函数来应用最小-最大归一化。

归一化前后对比
要清楚地展示归一化前后数据的差异,我们可以采取以下两种方法:

  • 不同尺度的特征组合:我们可以创建两组特征,其中一组的尺度远大于另一组,然后展示归一化对这些特征的影响。这种情况更贴近现实世界的数据,其中不同特征可能有非常不同的尺度。
  • 直观的坐标轴比较:我们可以在同一图中绘制原始数据和归一化后的数据,但使用不同的坐标轴,以便直观地比较两者的尺度差异。

我将按照第一种方法进行操作,生成两组数据:一组范围在0到100,另一组范围在1000到10000。然后,我们将应用最小-最大归一化并比较结果。


在这个图中,我们展示了两组不同尺度的数据及其归一化后的结果。

左上图:显示了小尺度数据(0到100)的分布。
右上图:展示了大尺度数据(1000到10000)的分布。
这两组数据在尺度上有显著差异,这在现实世界的数据集中是常见的情况。接下来,我们看到归一化后的结果:

左下图:小尺度数据经过归一化后的分布,所有值都被缩放到了0到1之间。
右下图:大尺度数据经过归一化后的分布,同样被缩放到了0到1之间。
通过这种比较,可以清楚地看到归一化处理对于不同尺度数据的影响。无论原始数据的尺度多大,归一化都能将其有效地转换到相同的尺度上,这对于确保机器学习模型的性能和稳定性至关重要。特别是在涉及多个特征,且这些特征具有不同尺度的情况下,归一化可以帮助模型更有效地学习和理解数据。

下面几种归一化方法,咱们结合具体的算法模型来说说~

标准化

标准化(Standardization)将数据调整为具有均值为0和标准差为1的分布。这种处理对于许多机器学习算法是重要的,因为它们假设所有特征都是以同样的规模(比如,高斯分布)测量的。

公式推导
对于数据集  中的每个特征 ,标准化可以表示为:

其中, 是特征的平均值, 是标准差。这个转换保证了特征  的均值为0,标准差为1。

计算步骤

  • 计算均值和标准差:对于数据集中的每个特征,计算其均值和标准差。
  • 应用转换:使用上述公式将每个特征值转换为标准化值。

案例代码
这个例子中,我们使用支持向量机(SVM)作为算法模型,展示标准化对模型性能的影响。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import make_classification
from sklearn.metrics import accuracy_score

# 生成虚拟数据集
X, y = make_classification(n_samples=1000, n_features=2, n_redundant=0, n_clusters_per_class=1, random_state=42)

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 未标准化的SVM模型
model = SVC(kernel='linear')
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy_non_standardized = accuracy_score(y_test, y_pred)

# 应用标准化
scaler = StandardScaler()
X_train_standardized = scaler.fit_transform(X_train)
X_test_standardized = scaler.transform(X_test)

# 标准化的SVM模型
model_standardized = SVC(kernel='linear')
model_standardized.fit(X_train_standardized, y_train)
y_pred_standardized = model_standardized.predict(X_test_standardized)
accuracy_standardized = accuracy_score(y_test, y_pred_standardized)

# 结果展示
print(f'Accuracy with non-standardized data: {accuracy_non_standardized}')
print(f'Accuracy with standardized data: {accuracy_standardized}')

# 可视化
plt.figure(figsize=(12, 5))

# 绘制未标准化数据
plt.subplot(1, 2, 1)
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train)
plt.title("Distribution of Non-Standardized Data")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")

# 绘制标准化数据
plt.subplot(1, 2, 2)
plt.scatter(X_train_standardized[:, 0], X_train_standardized[:, 1], c=y_train)
plt.title("Distribution of Standardized Data")
plt.xlabel("Feature 1")
plt.ylabel("Feature 2")

plt.show()

使用Python的scikit-learn库来实现这一点,并使用make_classification来生成虚拟的分类数据集。
在这段代码中,我们首先生成一个虚拟的二维分类数据集。然后,我们训练了两个SVM模型,一个使用未标准化数据,另一个使用标准化数据。

通过比较这两个模型的准确率,我们可以看到标准化对模型性能的影响。


归一化与标准化的对比效果

  • 标准化:更适用于数据没有明确边界的情况,可以处理具有异常值的特征。
  • 归一化:适用于需要严格边界的情况,有助于缩小特征值的规模。

有机会的话,大家在后面的学习中,可以通过实际的模型和数据集,更加具体展示标准化和归一化对模型性能的不同影响,例如通过准确率、均方误差等指标来量化这些影响。另外,在实际应用中,选择哪种预处理方法取决于数据的特性和所使用的模型。

Z-score标准化:

均值为0,方差为1,公式:

适合大多数场景,尤其是梯度下降类模型、近邻类模型的通用首选;但遇到极端异常值时,均值和方差会被带偏。

RobustScaler:

对异常值不敏感,公式:

适合存在较多outlier(异常值)的数据,能缓解极端值影响。

案例:RobustScaler对异常值的免疫力。

# 选几个受异常值影响较大的特征看箱线图
cols_box = ["f2", "f5", "f8", "f9"]
idx_box = [int(c[1:]) for c in cols_box]

plt.figure(figsize=(14, 6))
df_box_raw = pd.DataFrame(X_train[:, idx_box], columns=cols_box).melt(var_name="feature", value_name="value")
sns.boxplot(data=df_box_raw, x="feature", y="value", palette="coolwarm")
plt.title("箱线图(原始数据)- 异常值影响明显", color="#B71C1C")
plt.tight_layout()
plt.show()

plt.figure(figsize=(14, 6))
X_train_rb_sel = X_train_rb[:, idx_box]
df_box_rb = pd.DataFrame(X_train_rb_sel, columns=cols_box).melt(var_name="feature", value_name="value")
sns.boxplot(data=df_box_rb, x="feature", y="value", palette="cubehelix")
plt.title("箱线图(RobustScaler后)- 对异常值更鲁棒", color="#1B5E20")
plt.tight_layout()
plt.show()

  • 原始数据箱线图里,某些特征的须特别长、异常点一堆,轻易拉高了尺度;

  • RobustScaler使用中位数与IQR进行缩放,受极端值影响小,箱线图更对称、离群效应减弱,有助于模型更稳健。

MaxAbsScaler:

按最大绝对值缩放到[-1,1]范围,公式:。

适合数据已中心在0左右,且稀疏矩阵场景(不破坏稀疏性)。

小数定标归一化

小数定标归一化 在机器学习中常用来调整特征值的比例,使其落在一个较小的特定范围(通常是-1到1或者0到1)。该方法通过移动数据的小数点来实现归一化。小数点的移动位数依赖于属性值的最大绝对值。

该方法的核心是将数据缩放至其绝对值最大的那个数变为不大于1的数。例如,如果一个属性值的最大绝对值是123,则小数点需要移动三位,即每个值都除以1000。

公式推导
归一化公式为:

其中, 是原始数据, 是归一化后的数据, 是根据最大绝对值确定的小数点移动位数,计算方法为:

计算步骤

  • 计算最大绝对值:找出数据集中所有数值的最大绝对值。
  • 计算小数点移动位数 ( k ):使用上述公式计算 ( k )。
  • 应用归一化公式:对数据集中的每个数值应用归一化公式。

案例代码
结合线性回归模型来演示小数定标归一化的效果。

代码中我们使用一个虚拟数据集来进行演示,并比较归一化前后的模型性能。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 生成虚拟数据集
np.random.seed(0)
X = np.random.rand(100, 1) * 100  # 随机生成0-100之间的数
y = 3 * X.squeeze() + 4 + np.random.randn(100)  # 线性关系加上噪声

# 定义小数定标归一化函数
def decimal_scaling_normalization(data):
    k = np.ceil(np.log10(np.max(np.abs(data))))
    return data / (10 ** k)

# 应用归一化
X_normalized = decimal_scaling_normalization(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
X_train_norm, X_test_norm = train_test_split(X_normalized, test_size=0.2, random_state=0)

# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
model_norm = LinearRegression()
model_norm.fit(X_train_norm, y_train)

# 预测和评估
y_pred = model.predict(X_test)
y_pred_norm = model_norm.predict(X_test_norm)

mse_original = mean_squared_error(y_test, y_pred)
mse_normalized = mean_squared_error(y_test, y_pred_norm)

# 结果可视化
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.scatter(X_test, y_test, color='blue')
plt.plot(X_test, y_pred, color='red')
plt.title(f"Original Data (MSE: {mse_original:.2f})")

plt.subplot(1, 2, 2)
plt.scatter(X_test_norm, y_test, color='green')
plt.plot(X_test_norm, y_pred_norm, color='red')
plt.title(f"Normalized Data (MSE: {mse_normalized:.2f})")

plt.show()

结果比较
上述代码中,我们首先生成了一个简单的线性关系数据集。然后,我们对这个数据集应用了小数定标归一化,并使用线性回归模型在归一化前后的数据上进行了训练和测试。

通过比较归一化前后的均方误差(MSE),我们可以看到归一化是否提升了模型的性能。同时,通过绘图,我们可以直观地看到归一化对模型预测结果的影响。通常,归一化会使模型训练更加稳定和快速,特别是在特征值范围差异较大的情况下。

均值归一化

均值归一化是一种常用的数据预处理方法,用于机器学习中的特征缩放。它的目的是调整特征数据的规模,使其在一个统一的范围内,通常是[-1, 1]。这样做可以加快学习算法的收敛速度,并提高算法的性能。

均值归一化的公式参考之前博文:

计算步骤

  • 计算均值和标准差:对于每个特征,计算其所有数据点的均值和标准差。
  • 应用归一化公式:使用上述公式对每个特征的每个数据点进行归一化处理。

案例代码
结合KNN,在算法中应用均值归一化。同时使用一个虚拟数据集来演示这一过程,并且比较归一化前后的效果。

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

# 生成虚拟数据集
np.random.seed(0)
X = np.random.rand(1000, 2)  # 1000个样本,每个样本2个特征
y = np.random.randint(0, 2, 1000)  # 生成0和1的标签

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 不使用归一化
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
predictions = knn.predict(X_test)
accuracy_without_normalization = accuracy_score(y_test, predictions)

# 使用均值归一化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

knn.fit(X_train_scaled, y_train)
predictions = knn.predict(X_test_scaled)
accuracy_with_normalization = accuracy_score(y_test, predictions)

# 可视化比较结果
plt.bar(['Without Normalization', 'With Normalization'], [accuracy_without_normalization, accuracy_with_normalization])
plt.ylabel('Accuracy')
plt.title('Comparison of KNN Accuracy with and without Mean Normalization')
plt.show()

使用KNN算法分别在未归一化的数据和经过均值归一化的数据上进行训练和测试,并比较了两种情况下的准确率。


归一化前后的对比效果

  • 收敛速度:归一化后,特征值的规模统一,有助于加速学习算法的收敛。
  • 算法性能:特征归一化可以提高算法性能,特别是在使用基于距离的算法(如KNN)时更为明显。

最后,通过绘制的柱状图可以直观地比较归一化前后KNN算法的准确率,从而验证均值归一化对模型性能的影响。

单位长度归一化

单位长度归一化是一种常见的数据预处理技术,用于机器学习中的特征缩放。其目的是调整数据集中特征的尺度,使每个特征的值都按其长度进行缩放,从而具有单位长度。

算法原理
单位长度归一化的基本原理是将每个特征向量调整为单位长度。这通常通过将每个特征向量除以其欧几里得范数(即向量的长度)来实现。

计算步骤

  • 计算原始特征向量的欧几里得范数。
  • 将每个特征值除以该范数。

案例代码
结合线性回归,并使用虚拟数据集进行代码的编写。

为了更丰富地展示单位长度归一化对模型性能的影响,我们可以增加一些额外的可视化,例如展示预测误差的分布和特征值的分布对比。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 创建虚拟数据集
np.random.seed(0)
X = np.random.rand(100, 3)  # 100个样本,3个特征
y = X @ np.array([1.5, -2.0, 1.0]) + np.random.randn(100) * 0.5  # 目标变量
# 单位长度归一化
norm_X = X / np.linalg.norm(X, axis=1, keepdims=True)
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
norm_X_train, norm_X_test = train_test_split(norm_X, test_size=0.2, random_state=42)
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
norm_model = LinearRegression()
norm_model.fit(norm_X_train, y_train)
# 预测和评估
y_pred = model.predict(X_test)
norm_y_pred = norm_model.predict(norm_X_test)
mse = mean_squared_error(y_test, y_pred)
norm_mse = mean_squared_error(y_test, norm_y_pred)
# 结果比较
print("MSE without normalization:", mse)
print("MSE with unit length normalization:", norm_mse)
# 绘制结果
plt.figure(figsize=(18, 6))
# 预测值与实际值对比
plt.subplot(1, 3, 1)
plt.scatter(y_test, y_pred, label='Without Normalization')
plt.scatter(y_test, norm_y_pred, color='r', label='With Normalization')
plt.title("Predictions vs True Values")
plt.xlabel("True Values")
plt.ylabel("Predictions")
plt.legend()
# 预测误差分布
plt.subplot(1, 3, 2)
plt.hist(y_test - y_pred, bins=15, alpha=0.7, label='Without Normalization')
plt.hist(y_test - norm_y_pred, bins=15, alpha=0.7, color='r', label='With Normalization')
plt.title("Prediction Error Distribution")
plt.xlabel("Prediction Error")
plt.ylabel("Frequency")
plt.legend()
# 特征分布对比
plt.subplot(1, 3, 3)
for i in range(X.shape[1]):
    plt.hist(X[:, i], bins=15, alpha=0.5, label=f'Feature {i+1} Original')
    plt.hist(norm_X[:, i], bins=15, alpha=0.5, color='r', label=f'Feature {i+1} Normalized')
plt.title("Feature Distributions")
plt.xlabel("Feature Value")
plt.ylabel("Frequency")
plt.legend()
plt.tight_layout()
plt.show()

上述代码将创建三个图表:

预测值与实际值对比:展示了归一化前后模型预测值与实际值的关系。
预测误差分布:通过直方图展示了归一化前后预测误差的分布情况,有助于理解模型性能的提升。
特征分布对比:比较了原始数据和经过单位长度归一化后的特征值分布,以展示归一化对数据的影响。
这些图表提供了更全面的视角来观察数据预处理对模型性能的影响。

向量归一化:

样本级L2归一化,公式:。

适合文本TF-IDF、余弦相似度任务,让每个样本向量长度一致,比较方向而非长度。

要点提示:

对以距离为核心的模型,比如说 KNN/KMeans/SVM RBF核,强烈建议做特征尺度的统一。

对梯度下降+正则化的模型,比如说线/逻辑回归、神经网络,标准化大多时候能更快收敛、更稳。

有异常值时,RobustScaler或对数/分位数变换往往更稳。

一文速学-数据预处理归一化详细解释 一、为何要进行数据预处理? 1.任何收集而来的庞大数据往往是不可能一拿到就可以立马用得上的,比如一些数值大的数据,计算量复杂度高,不容易收敛,很难进行统计处理。 2.数据不符合正态分布,无法做一些符合正态分布的数学分析。 所以为了对数据进行更好的利用,我们需要使数据标准化。 二、数据标准化 数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都 阅读详情

相关推荐

归化设计:实现数据归一化的源代码详解

数据归一化是数据预处理中常用的一种技术,它用于将不同特征之间的数据范围进行统一,使得数据具有相似的尺度和分布。在机器学习和数据挖掘任务中,数据归一化可以提高模型的收敛速度、防止特征值之间的差异过大对模型的影响等。需要注意的是,数据归一化应该在训练集上进行,并将得到的归一化参数应用到测试集或新的数据上,以保持一致性。这样可以确保训练集和测试集(或新数据)具有相同的数据分布,从而避免模型在测试集上的表现不佳。在实际使用时,可以根据具体的需求选择合适的归一化方法,并将对应的源代码嵌入到自己的项目中。

StyVue的博客 696

归一化方法和代码实现笔记

numpy数据归一化笔记

m0_70246767的博客 2728

Sklearn标准化和归一化方法汇总(2):Min-Max归一化

Min-Max归一化的算法是:先找出数据集通常是一列数据)的最大值和最小值,然后所有元素先减去最小值,再除以最大值和最小值的差,结果就是归一化后的数据了。经Min-Max归一化后,数据集整体将会平移到[0,1]的区间内,数据分布不变。

Laurence的技术博客 6227

用通俗易懂的方式讲解:数据预处理归一化(附Python代码)

主要还是对机器学习中的sklearn提供的方法后发现数据标准化这一概念,对大佬Friedman检验进一步理解。

m0_59596937的博客 8996

Sklearn标准化和归一化方法汇总(3):范数归一化

范数归一化的计算逻辑是:先计算出一个向量(通常是一行)的范数(如无特殊说明,通常都是指L-2范数),然后让向量中的每一个元素除以这个范数,得到的新向量就是范数归一化后的结果。所以,了解范数归一化的原理关键是要理解:什么是范数?我们已经在此前以前文章中专门做了介绍,请参考《范数的意义与计算方法》一文。

Laurence的技术博客 2979

数据归一化matlab代码

对于矩阵,向量的一个归一化小程序。很简单。能归到0~1的区间之内。 对于矩阵,向量的一个归一化小程序。很简单。能归到0~1的区间之内。

KDD CUP99数据预处理三个步骤

入侵检测实验一般使用的是KDD CUP99中的kddcup.data_10percent数据集。由于数据集中包含有符号型的数据属性,不适合直接处理,所以需要进行预处理,数据集的预处理一般由三个步骤: 1.将字符型特征转换成数值型特征 2.数值标准化 3.数值归一化 关于KDD CUP99的数据预处理看了两个博客,两个博客合在一起比较完整,所以这里转载过来,记录下来方便学习。 !!!以下部分转自:h...

0rambot的博客 1万+

(6)NUC980 SPI Nand 启动

方式一:下载到SPI-NAND-Flash中,这种方式可以将程序固化到SPIflash中,可以掉电保存。第二种方式下载到DDR中程序掉电丢失,但是DDR调试方便,时候调试的时候使用。之前的设置都是基于SD卡启动,今天测试一下是用SPI flash启动。方式二: 下载到DDR中,①设置为USB启动②下载到DDR中③运行。1:烧写BootLoader。

卤煮小鱼的博客 1747

神经网络归一化过程(详细实例、公式、代码)

原文来自:《老饼讲解神经网络》 目录 一. 归一化与反归一化 二. 例子实讲 三. 完整代码例子 四.网络表达式的反归一化 为了方便网络训练得更优秀,一般会先将输入输出数据归一化,再进行训练。训练完后,在用网络预测时,还需要将网络的预测值反归一化。 本文讲述神经网络的归一化和反归一化 一. 归一化与反归一化 训练前,为避免各个输入变量的数量级差异过大,影响求解算法的效果,一般会先将数据归一化到[-1,1]的区间。 PASS: 归一化的好处不仅仅是为了避免数量级的影响。详细可以看文章.

dbat 3万+

第1章>>1.5:神电测控为什么开发LabVIEW ZYNQ FPGA软件工具包?(ZYNQ芯片的特点与优势)《LabVIEW ZYNQ FPGA宝典》

ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC,All-Programmable SoC),它将处理器的软件可编程性与FPGA的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。Zynq-7000系列是Xilinx于2010年4月推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助、工厂自动化、医疗器械等高端嵌入式应用提供所需的处理能力与计算性能。这款基于ARM处理器的SoC可满足复杂嵌入式系统的高性能、低功耗和多核处理能力等要求。

qq_40694786的博客 1646

UE4 - 河流流体插件Fluid Flux

Fluid Flux可以模拟一定区域内的流体效果,由于使用顶视图所Capture的Heightfield信息,所以只支持室外开阔场景,不支持洞穴等室内场景;

GT的虚幻引擎文档 6665

matlab灰度归一化,[转载]matlab图像处理为什么要归一化和如何归一化?

matlab图像处理为什么要归一化和如何归一化?一、为什么归一化1.基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换图像归一化使得图像可以抵抗几何变换的攻击,它能够找出图像中的那些不变量,从而得知这些图像原本就是一样的或者一个系列的。因为我们这次的图片有好多都是一个系列的,所以老师把这个也作为我研究的一个方向。我们主要...

weixin_29144939的博客 2403

鲁棒优化入门(6)—Matlab+Yalmip两阶段鲁棒优化通用编程指南(上)

Matlab+Yalmip两阶段鲁棒优化通用编程指南(上篇),内容包括: ①.拿到一个复杂的两阶段鲁棒优化问题的分析步骤和方法。 ②.采用Yalmip工具箱中的uncertain函数和鲁棒优化模块求解两阶段鲁棒优化的子问题。 ③.Yalmip工具箱中的鲁棒优化模块和常规的求解思路有什么异同。 ④.使用KKT条件求解两阶段鲁棒优化的子问题,并使用C&CG算法进行迭代求解。

配电网和matlab的博客 1万+

人脸图像的几何归一化和灰度归一化

在对人脸表情进行识别时,人脸的归一化处理是至关重要的一环,它涉及到下一步处理的好坏。 人脸的归一化包括几何归一化和灰度归一化,几何归一化分两步:人脸校正和人脸裁剪。而灰度归 一化主要是增加图像的对比度,进行光照补偿。 1.几何归一化 几何归一化的目的主要是将表情子图像变换为统一的尺寸,有利于表情特征的提取。具体步骤如下: (1)标定特征点,这里用[x,y] = gin

人在图中的专栏 2万+

【AIGC】大模型面试高频考点09-大模型Agent框架

聚焦AIGC专业技术分享

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 1964

SecOC专题之新鲜值TripCnt

本系列为一步步拆解新鲜值的分发及管理而撰写文章属于原创,根据自身开发经验及理解撰写,若有错误请指出Trip Counter是新鲜值中变化最慢的一个part,并且自增到最大值时,会从头开始翻转计数。Trip Counter需要收发双方都保存,由于其变化较慢,所以不会经常进行同步该值。这就要求开发过程中保证每次对该值的读写必须要正确。

qq_22969363的博客 1154

MATLAB实现图像灰度归一化

转载自:https://blog.youkuaiyun.com/discoverer100/article/details/61426650 在许多图像处理系统中,对图像进行归一化都是必备的预处理过程。一般而言,对于灰度图像(或彩色通道的每个颜色分量)进行灰度归一化就是:使其像素的灰度值分布在0~255之间,避免图像对比度不足(图像像素亮度分布不平衡)从而对后续处理带来干扰。 一种常见的图像归一化原理1...

青春易逝,愿不负昭华,期待梦与远方 7009

vue2/3 - 详细实现高德地图轨迹回放,vue高德地图车辆历史行驶轨迹播放,在地图上绘制行程轨迹|起点和终端的路程绘制|用户运动轨迹绘制及播放等(支持开始/暂停、进度条拖放、控制播放轨迹的倍速等)

vue2,vue3,nuxt,高德地图,轨迹,vue高德地图轨迹回放,历史轨迹回放,轨迹回放功能支持倍速及进度条拖拽,VUE高德地图轨迹回放、倍速调整、进度条拖拽,vue3高德地图轨迹回放,Vue实现地图路径回放,vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速,多条轨迹陆续播放,巡航轨迹做带进度条和倍速的轨迹回放,Vue高德地图路径回放,历史轨迹回放并能控制播放轨迹的倍速,使用高德地图实现轨迹播放和进度条控制,vue高德地图如何实现轨迹回放,高德地图做轨迹绘制用什么api,高德轨迹API,驾车轨

✅ 精选推荐文章 1万+

MATLAB数据归一化(转载+原创)

MATLAB数据归一化汇总(最全面的归一化介绍)   几个要说明的函数接口: [Y,PS] = mapminmax(X)  [Y,PS] = mapminmax(X,FP)  Y = mapminmax('apply',X,PS)  X = mapminmax('reverse',Y,PS) 复制代码 用实例来讲解,测试数据

liudezhegongda的专栏 2200

Spring AI Alibaba 项目源码学习(九)-其他继承BaseAgent

本文分析了Spring AI Alibaba Agent Framework中的A2aRemoteAgent实现,主要特点包括: 实现了Agent间的远程调用能力,支持分布式部署 核心组件包括AgentCard封装元数据、A2aNodeActionWithConfig处理调用逻辑、AgentCardProvider提供卡片管理 支持流式调用和状态共享机制 采用Builder模式构建Agent实例 通过指令传递实现Agent间通信 关键流程包括状态提取、请求构建、远程调用和状态更新四个步骤,形成Agent

819

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【转载】数据归一化标准化

http://blog.youkuaiyun.com/pipisorry/article/details/52247379 这里主要讲连续型特征归一化的常用方法。 连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。 离散数据处理参考[数据预处理:独热编码(One-Hot Encoding)]。 基础知识参考: [均值、方差与协方差矩阵] [...

shanweikezhang的博客 2517

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

(转载)图像处理进行归一化的各种理由。

原文地址:(转载)图像处理进行归一化的各种理由。作者:linyunjia matlab图像处理为什么要归一化和如何归一化, 一、为什么归一化 1.     基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换   图像归一化使得图像可以抵抗几何变换的攻击,它能够找出图像中的那些不变量,从而得知这些图像原本

lin00jian的博客 1443

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Matlab--三种归一化方法

归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1–+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,且sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。归一化是统一在0-...

Jensen Lee的博客 1万+

【转载】哪些机器学习算法需要归一化

Part 1: 机器学习中需要归一化的算法有SVM,逻辑回归,神经网络,KNN,线性回归,而树形结构的不需要归一化,因为它们不关心变量的值,而是关心变量分布和变量之间的条件概率,如决策树,随机森林,对于树形结构,它的数值缩放不影响分裂点的位置,对树模型的结构不造成影响。树模型的构造是通过寻找最优分裂点构成的,而且树模型不能进行梯度下降,因为树模型是阶跃的,阶跃是不可导的,并且求导没意义,也不需要归一化。 2、对于那些需要归一化的模型,主要是因为特征值相差很大时,运用梯度下降,损失等高线是椭圆形,需要进行多

1044

归一化和标准化区别

作者:小松 链接:https://www.zhihu.com/question/20467170/answer/463834078 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 归一化:对数据的数值范围进行特定缩放,但不改变其数据分布的一种线性特征变换。 1.min-max 归一化:将数值范围缩放到(0,1),但没有改变数据分布; min-max归...

bl128ve900的博客 6394

标准化,归一化与训练-测试集数据处理

标准化,归一化与训练-测试集数据处理1. 标准化,归一化的区别数据预处理的归一化手段应该如何应用到训练集,测试集和验证集中?问题:回答1:回答2问题3回答1回答2问题4回答1 1. 标准化,归一化的区别 作者:宝珠道人 链接:https://www.zhihu.com/question/361290840/answer/939504181 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。个人有删改 归一化和标准化本质上都是一种线性变换。线性变换保持线性组合与线性关系式不变,这

林源的博客 1万+
上一篇: Investigating the effectiveness of data augmentation from similarity and diversity: An empirical stu
下一篇: 【转载】GitHub:数据增广最全资料集锦
wuling129
博客等级 码龄23年 486粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值