【深度学习】实验03 特征处理

这篇具有很好参考价值的文章主要介绍了【深度学习】实验03 特征处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

特征处理

标准化、归一化和正则化是常见的数据处理方法,用于在机器学习和统计模型中对数据进行预处理和特征转换。它们具有不同的目的和方法。

1.归一化

归一化是机器学习中一个非常重要的数据预处理方法,它通过对数据进行缩放和转换,使得数据能够在计算时更加准确、更加稳定,从而提高机器学习算法的性能和效果。归一化可以分为线性归一化和非线性归一化两种方法。

(1)线性归一化,也称为min-max缩放,是将数据按比例缩放到给定的值范围内。它通过将原始数据 x x x进行转换,使得 x i x_{i} xi被转换为 [ 0 , 1 ] [0, 1] [0,1]范围内的值,转换公式如下:
x ′ = x − x m i n x m a x − x m i n x' = \frac{x - x_{min}}{x_{max}-x_{min}} x=xmaxxminxxmin
其中, x m i n x_{min} xmin x m a x x_{max} xmax分别是数据集中的最小值和最大值。这种方法常用于数据的连续特征变量,例如图像处理中的灰度值处理。

(2)非线性归一化则可以分为Z-score标准化和正则化两种方法:

  • Z-score标准化,也称为零均值标准化,是将数据按比例缩放并平移,使得数据符合正态分布。它通过将原始数据 x x x进行转换,使得 x i x_{i} xi被转换为均值为0、标准差为1的正态分布,转换公式如下:
    x ′ = x − μ σ x' = \frac{x - \mu}{\sigma} x=σxμ
    其中, μ \mu μ σ \sigma σ分别是数据集中的均值和标准差。这种方法常用于数据的连续特征变量,例如金融领域中的股票价格。
  • 正则化,也称为L1和L2正则化,是通过对数据进行缩放和约束,使得数据的各个特征具有相近的重要性。它通过将原始数据 x x x进行转换,使得 x i x_{i} xi被转换为在单位范数下的值,转换公式如下:
    L 1 : ∣ ∣ x ′ ∣ ∣ 1 = 1 , L 2 : ∣ ∣ x ′ ∣ ∣ 2 = 1 L1: ||x'||_{1} = 1, L2: ||x'||_{2} = 1 L1:∣∣x1=1,L2:∣∣x2=1
    其中, ∣ ∣ x ′ ∣ ∣ 1 ||x'||_{1} ∣∣x1 ∣ ∣ x ′ ∣ ∣ 2 ||x'||_{2} ∣∣x2分别是数据集中的L1和L2范数。这种方法常用于文本分类中的TF-IDF特征权重计算中。

归一化的主要目的是使得不同特征之间具有可比性,从而可以更加准确地进行模型训练和预测。归一化还可以防止机器学习算法因各种原因而发生数值溢出、数值不稳定、精度误差等问题,从而提高模型的泛化能力和准确率。因此,在进行机器学习任务时,归一化的操作应该被充分考虑。

# 导入归一化库
from sklearn.preprocessing import MinMaxScaler
import numpy as np

data = np.random.uniform(0, 100, 10)[:, np.newaxis]
mm = MinMaxScaler()
mm_data = mm.fit_transform(data)
origin_data = mm.inverse_transform(mm_data)
print('data is ',data)
print('after Min Max ',mm_data)
print('origin data is ',origin_data)
   data is  [[67.74476271]
    [10.2077285 ]
    [27.34037799]
    [24.72236105]
    [68.67245127]
    [91.11026437]
    [51.92345696]
    [92.05191865]
    [16.9495692 ]
    [94.18851495]]
   after Min Max  [[0.6851214 ]
    [0.        ]
    [0.20400678]
    [0.17283278]
    [0.69616784]
    [0.96334578]
    [0.49672943]
    [0.97455851]
    [0.08027837]
    [1.        ]]
   origin data is  [[67.74476271]
    [10.2077285 ]
    [27.34037799]
    [24.72236105]
    [68.67245127]
    [91.11026437]
    [51.92345696]
    [92.05191865]
    [16.9495692 ]
    [94.18851495]]

2.标准化

标准化,也称为中心化处理,是机器学习中常用的一种预处理方法,其主要目的是将原始数据转换为均值为0、方差为1的标准正态分布。标准化主要应用于数据预处理、特征选择和模型建立等各个环节,可以提高算法的性能和效果。下面我们从基本概念和实现过程等方面来介绍标准化的相关内容。

  1. 基本概念

标准化是一种将不同尺度和量级的数据转换为相同尺度和量级的数据的方法。其主要目的是将数据按照一定规律进行缩放,从而使得数据在进行机器学习算法时具有相同的权重和比重。标准化的常用方法有Z-score标准化和小数定标标准化两种方法。

Z-score标准化:将原始数据减去平均值再除以标准差,使得数据转化为均值为0、标准差为1的标准正态分布。Z-score标准化常用于线性回归等机器学习算法中。

小数定标标准化:将原始数据除以10的幂次方,使得数据转化为以小数形式表示的值。小数定标标准化常用于神经网络等机器学习算法中。

  1. 标准化的实现过程

标准化的实现过程可以基本分为以下几个步骤:

(1)计算样本的均值和标准差:

对于给定的原始数据集,首先需要计算样本的均值和标准差。均值可以通过以下公式计算:

μ = ∑ i = 1 n x i n \mu = \frac{\sum_{i=1}^{n}x_{i}}{n} μ=ni=1nxi

其中, n n n表示样本数量, x i x_{i} xi表示第 i i i个样本的取值。标准差可以通过以下公式计算:

σ = ∑ i = 1 n ( x i − μ ) 2 n \sigma = \sqrt{\frac{\sum_{i=1}^{n}(x_{i}-\mu)^{2}}{n}} σ=ni=1n(xiμ)2

(2)进行标准化处理:

在计算出样本的均值和标准差后,就可以对原始数据进行标准化处理了。Z-score标准化可以通过以下公式计算:

z = x − μ σ z = \frac{x-\mu}{\sigma} z=σxμ

其中, x x x表示原始数据, μ \mu μ表示样本均值, σ \sigma σ表示样本标准差。小数定标标准化可以通过以下公式计算:

x ′ = x 1 0 k x' = \frac{x}{10^{k}} x=10kx

其中, x ′ x' x表示标准化后的数据, k k k表示需要除以的幂次方数。

  1. 总结

标准化是机器学习中一种重要的预处理技术,它可以将不同尺度和量级的数据转换为相同尺度和量级的数据,从而提高算法的泛化能力和准确率。标准化方法主要包括Z-score标准化和小数定标标准化两种方法,通过计算样本的均值和标准差,并进行相应的转换操作,可以将原始数据转化为均值为0、标准差为1的标准正态分布。因此,在进行机器学习算法时,标准化的操作应该被充分考虑。

# 导入标准化库
from sklearn.preprocessing import StandardScaler

from matplotlib import gridspec
import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings("ignore")
# 随机生成0到100的整数,100行2列
data = np.random.randint(0, 100, (100, 2))
data
   array([[ 7, 84],
          [43, 81],
          [22, 84],
          [ 7, 61],
          [51, 74],
          [95, 94],
          [80, 92],
          [58, 35],
          [88, 15],
          [61, 42],
          [75, 95],
          [87, 64],
          [18, 77],
          [13, 60],
          [18, 51],
          [61, 12],
          [32, 11],
          [ 6, 77],
          [85, 44],
          [87, 10],
          [84, 10],
          [ 1, 28],
          [76, 87],
          [61,  0],
          [ 9, 25],
          [83, 75],
          [ 7, 60],
          [80, 73],
          [62, 58],
          [71, 84],
          [78,  6],
          [92, 54],
          [92, 50],
          [28, 57],
          [73, 80],
          [97, 86],
          [84, 78],
          [ 9, 29],
          [90, 64],
          [ 8, 32],
          [98, 62],
          [45, 93],
          [73, 72],
          [97, 11],
          [21, 66],
          [32,  9],
          [65, 59],
          [30, 36],
          [19, 37],
          [75, 43],
          [90, 55],
          [53,  8],
          [73, 25],
          [73, 82],
          [84, 76],
          [49, 97],
          [29, 64],
          [69, 37],
          [72, 90],
          [10, 87],
          [19, 70],
          [49, 53],
          [56, 24],
          [61, 16],
          [58, 23],
          [28, 31],
          [37, 49],
          [67, 25],
          [31, 99],
          [38, 84],
          [55, 53],
          [27, 89],
          [83, 50],
          [73, 86],
          [67, 11],
          [61, 72],
          [17, 88],
          [82, 67],
          [56, 51],
          [18, 59],
          [73, 44],
          [ 8, 86],
          [ 6, 20],
          [32, 12],
          [15,  4],
          [91, 17],
          [21, 78],
          [67, 63],
          [12, 32],
          [45, 76],
          [41, 29],
          [75, 64],
          [75, 19],
          [ 1, 76],
          [17, 18],
          [13, 47],
          [80, 48],
          [88, 76],
          [29, 63],
          [21, 95]])
# 标准化
ss = StandardScaler()
std_data = ss.fit_transform(data)
std_data
   array([[-1.50234381,  1.09430096],
          [-0.28120186,  0.98577525],
          [-0.99353466,  1.09430096],
          [-1.50234381,  0.26227048],
          [-0.00983698,  0.73254858],
          [ 1.48266985,  1.45605335],
          [ 0.97386071,  1.38370287],
          [ 0.22760729, -0.67828572],
          [ 1.24522559, -1.40179049],
          [ 0.32936912, -0.42505905],
          [ 0.80425766,  1.49222858],
          [ 1.21130498,  0.37079619],
          [-1.1292171 ,  0.84107429],
          [-1.29882015,  0.22609524],
          [-1.1292171 , -0.09948191],
          [ 0.32936912, -1.5103162 ],
          [-0.65432856, -1.54649144],
          [-1.53626442,  0.84107429],
          [ 1.14346376, -0.35270857],
          [ 1.21130498, -1.58266668],
          [ 1.10954315, -1.58266668],
          [-1.70586747, -0.93151239],
          [ 0.83817827,  1.20282668],
          [ 0.32936912, -1.94441906],
          [-1.43450259, -1.0400381 ],
          [ 1.07562254,  0.76872382],
          [-1.50234381,  0.22609524],
          [ 0.97386071,  0.69637334],
          [ 0.36328973,  0.15374476],
          [ 0.66857522,  1.09430096],
          [ 0.90601949, -1.72736763],
          [ 1.38090802,  0.00904381],
          [ 1.38090802, -0.13565714],
          [-0.790011  ,  0.11756952],
          [ 0.73641644,  0.94960001],
          [ 1.55051107,  1.16665144],
          [ 1.10954315,  0.87724953],
          [-1.43450259, -0.89533715],
          [ 1.3130668 ,  0.37079619],
          [-1.4684232 , -0.78681143],
          [ 1.58443168,  0.29844572],
          [-0.21336064,  1.41987811],
          [ 0.73641644,  0.6601981 ],
          [ 1.55051107, -1.54649144],
          [-1.02745527,  0.44314667],
          [-0.65432856, -1.61884192],
          [ 0.46505156,  0.18992   ],
          [-0.72216978, -0.64211048],
          [-1.09529649, -0.60593524],
          [ 0.80425766, -0.38888381],
          [ 1.3130668 ,  0.04521905],
          [ 0.05800424, -1.65501716],
          [ 0.73641644, -1.0400381 ],
          [ 0.73641644,  1.02195048],
          [ 1.10954315,  0.80489905],
          [-0.0776782 ,  1.56457906],
          [-0.75609039,  0.37079619],
          [ 0.600734  , -0.60593524],
          [ 0.70249583,  1.31135239],
          [-1.40058198,  1.20282668],
          [-1.09529649,  0.58784762],
          [-0.0776782 , -0.02713143],
          [ 0.15976607, -1.07621334],
          [ 0.32936912, -1.36561525],
          [ 0.22760729, -1.11238858],
          [-0.790011  , -0.82298667],
          [-0.48472551, -0.17183238],
          [ 0.53289278, -1.0400381 ],
          [-0.68824917,  1.63692954],
          [-0.4508049 ,  1.09430096],
          [ 0.12584546, -0.02713143],
          [-0.82393161,  1.27517715],
          [ 1.07562254, -0.13565714],
          [ 0.73641644,  1.16665144],
          [ 0.53289278, -1.54649144],
          [ 0.32936912,  0.6601981 ],
          [-1.16313771,  1.23900191],
          [ 1.04170193,  0.47932191],
          [ 0.15976607, -0.09948191],
          [-1.1292171 ,  0.18992   ],
          [ 0.73641644, -0.35270857],
          [-1.4684232 ,  1.16665144],
          [-1.53626442, -1.2209143 ],
          [-0.65432856, -1.5103162 ],
          [-1.23097893, -1.79971811],
          [ 1.34698741, -1.32944001],
          [-1.02745527,  0.87724953],
          [ 0.53289278,  0.33462096],
          [-1.33274076, -0.78681143],
          [-0.21336064,  0.80489905],
          [-0.34904307, -0.89533715],
          [ 0.80425766,  0.37079619],
          [ 0.80425766, -1.25708953],
          [-1.70586747,  0.80489905],
          [-1.16313771, -1.29326477],
          [-1.29882015, -0.24418286],
          [ 0.97386071, -0.20800762],
          [ 1.24522559,  0.80489905],
          [-0.75609039,  0.33462096],
          [-1.02745527,  1.49222858]])
# 作图
gs = gridspec.GridSpec(5,5)
fig = plt.figure()
ax1 = fig.add_subplot(gs[0:2, 1:4])
ax2 = fig.add_subplot(gs[3:5, 1:4])
 
ax1.scatter(data[:, 0], data[:, 1])
ax2.scatter(std_data[:, 0], std_data[:, 1])
 
plt.show()

【深度学习】实验03 特征处理,《 深度学习 》,python,深度学习,开发语言

3.正则化

正则化是一个用于防止机器学习模型过度拟合的技术,即防止模型过度适应训练数据,而无法泛化到新数据。正则化的目的是通过对模型参数引入一定的惩罚来降低模型复杂度,从而提高模型的泛化能力。在正则化中,L1和L2正则化是两种最常见的方法。

  • L1正则化,也称为Lasso正则化,是通过向代价函数添加权重的绝对值之和来实现的。这可以将模型权重推向零,从而通过稀疏化来减少模型的复杂性。 L1正则化可以用于特征选择,即从原始特征集中选择最具预测能力的特征。在L1正则化中,较小的特征权重被迫归零,因此不会对预测结果产生贡献。这种方法优点是可以减少特征数量,但同时会导致一些特征的丧失。在代码中,我们可以使用sklearn库中的Normalizer来实现L1正则化。

  • L2正则化,也称为岭回归,是通过向代价函数添加权重的平方和来实现的。这会导致权重值逐渐缩小,但不会归零。这种正则化方法在训练数据中有很多噪声时表现非常好,它能够减少模型过度适应的情况,提高模型的泛化性能。在代码中,我们可以使用sklearn库中的normalize来实现L2正则化。

区别:

L1和L2正则化的主要区别在于在向代价函数添加权重的方式上。L1使用绝对值,而L2使用平方。从直观上看,L1正则化会导致稀疏矩阵,而L2正则化不会。这意味着,L1通常会选择特征并将其余特征设为零,而L2则会平均选择所有特征。此外,L2对异常值的影响相对较小,而L1可能会将异常值视为噪声并将其从模型中剔除。在选择适当的正则化方法时,需要根据实际情况选择合适的方法,以实现更好的泛化性能。文章来源地址https://www.toymoban.com/news/detail-677006.html

# 导入L1正则化库
from sklearn.preprocessing import Normalizer

# 导入L2正则化库
from sklearn.preprocessing import normalize

X = [[1, -1, 2],
     [2, 0, 0],
     [0, 1, -1]]

normalizerl1 = Normalizer(norm='l1')
l1 = normalizerl1.fit_transform(X)
print('l1:', l1)

l2 = normalize(X, norm='l2')
print('l2:', l2)
l1: [[ 0.25 -0.25  0.5 ]
 [ 1.    0.    0.  ]
 [ 0.    0.5  -0.5 ]]
l2: [[ 0.40824829 -0.40824829  0.81649658]
 [ 1.          0.          0.        ]
 [ 0.          0.70710678 -0.70710678]]

附:系列文章

序号 文章目录 直达链接
1 波士顿房价预测 https://want595.blog.csdn.net/article/details/132181950
2 鸢尾花数据集分析 https://want595.blog.csdn.net/article/details/132182057
3 特征处理 https://want595.blog.csdn.net/article/details/132182165
4 交叉验证 https://want595.blog.csdn.net/article/details/132182238
5 构造神经网络示例 https://want595.blog.csdn.net/article/details/132182341
6 使用TensorFlow完成线性回归 https://want595.blog.csdn.net/article/details/132182417
7 使用TensorFlow完成逻辑回归 https://want595.blog.csdn.net/article/details/132182496
8 TensorBoard案例 https://want595.blog.csdn.net/article/details/132182584
9 使用Keras完成线性回归 https://want595.blog.csdn.net/article/details/132182723
10 使用Keras完成逻辑回归 https://want595.blog.csdn.net/article/details/132182795
11 使用Keras预训练模型完成猫狗识别 https://want595.blog.csdn.net/article/details/132243928
12 使用PyTorch训练模型 https://want595.blog.csdn.net/article/details/132243989
13 使用Dropout抑制过拟合 https://want595.blog.csdn.net/article/details/132244111
14 使用CNN完成MNIST手写体识别(TensorFlow) https://want595.blog.csdn.net/article/details/132244499
15 使用CNN完成MNIST手写体识别(Keras) https://want595.blog.csdn.net/article/details/132244552
16 使用CNN完成MNIST手写体识别(PyTorch) https://want595.blog.csdn.net/article/details/132244641
17 使用GAN生成手写数字样本 https://want595.blog.csdn.net/article/details/132244764
18 自然语言处理 https://want595.blog.csdn.net/article/details/132276591

到了这里,关于【深度学习】实验03 特征处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习和大数据技术推动自然语言处理迈向新高度

    近年来,深度学习和大数据技术的不断进步,使得自然语言处理(Natural Language Processing,NLP)取得了显著的成果。人们正致力于研究如何使计算机更好地理解和生成人类语言,以及如何应用NLP技术改善搜索引擎、语音助手、机器翻译等领域。本文将探讨这一技术领域的最新进

    2024年01月22日
    浏览(60)
  • 深度学习6:自然语言处理-Natural language processing | NLP

    目录 NLP 为什么重要? 什么是自然语言处理 – NLP NLP 的2大核心任务 自然语言理解 – NLU|NLI 自然语言生成 – NLG NLP(自然语言处理) 的5个难点 NLP 的4个典型应用 NLP 的 2 种途径、3 个核心步骤 总结 自然语言处理 “语言理解是人工智能领域皇冠上的明珠” 比尔·盖茨 在人工智能

    2024年02月11日
    浏览(68)
  • 深度学习与大数据技术的进步:自然语言处理的显著突破

    引言: 随着深度学习和大数据技术的迅速发展,自然语言处理(Natural Language Processing,简称NLP)在过去几年取得了令人瞩目的进步。NLP是研究计算机如何理解和生成人类语言的领域,它在改善搜索引擎、语音助手、机器翻译等领域的应用中发挥着重要作用。本文将探讨深度学

    2024年01月23日
    浏览(67)
  • MATLAB算法实战应用案例精讲-【深度学习】自然语言处理模型SimCSE

    目录 前言 1.介绍 2.对比学习背景 2.1定义 2.2构造正样本 2.3对齐性和均匀性

    2024年02月11日
    浏览(67)
  • 【自然语言处理】【深度学习】NLP中的N-gram理解

    N-gram是自然语言处理(NLP)中的一个概念,它描述的是文本中连续的n个项(通常是单词或字符)。这个概念主要用于语言建模和文本分析中。 具体来说: Unigram (1-gram): 包含一个单词的序列,例如句子中的单个单词。 Bigram (2-gram): 包含两个相邻单词的序列。例如,在句子 “

    2024年01月25日
    浏览(57)
  • 深度学习和大数据技术的进步在自然语言处理领域的应用

    随着深度学习和大数据技术的迅猛发展,自然语言处理(Natural Language Processing,NLP)取得了显著的进步。人们正在积极研究如何使计算机更好地理解和生成人类语言,并且在搜索引擎、语音助手、机器翻译等领域广泛应用NLP技术。本文将重点探讨深度学习和大数据技术在NLP领

    2024年01月23日
    浏览(79)
  • 多媒体数据处理实验3:图像特征提取与检索

    1. 算法描述 功能:   使用BOF(Bag of Features)算法提取图像特征,在corel数据集(10*100)张图片上实现以图搜图,即输入数据集中某一张图,在剩下的999张图里搜索最邻近的10张图。 2.算法流程: 用 SIFT算法 提取图像的特征。每幅图像提取出几百至几千个特征点,将所有图像的特

    2024年02月07日
    浏览(68)
  • 【自然语言处理】【深度学习】文本向量化、one-hot、word embedding编码

    因为文本不能够直接被模型计算,所以需要将其转化为向量 把文本转化为向量有两种方式: 转化为one-hot编码 转化为word embedding 在one-hot编码中,每一个token使用一个长度为N的向量表示,N表示词典的数量。 即:把待处理的文档进行分词或者是N-gram处理,然后进行去重得到词典

    2024年01月24日
    浏览(57)
  • 跟着李沐学AI(动手学深度学习 PyTorch版)学习笔记——03安装(环境配置d2l、pytorch)(python3.7版本+Windows+各种问题解决措施)

    1.下载Miniconda下载地址 2.在安装过程中需要勾选“Add Anaconda to the system PATH environment variable”选项 3.检验win+R,输入cmd,在文本框输入conda --version 1.点击该链接+点击jupyter记事本下载压缩包 2.解压该压缩包 3.在解压后的文件夹地址栏输入cmd回车进入命令模式。 1.conda和pip默认使⽤

    2024年02月12日
    浏览(57)
  • 阶段五:深度学习和人工智能(学习人工智能的应用领域,如自然语言处理,计算机视觉等)

    Python是人工智能领域最流行的编程语言之一,它具有简单易学、功能强大、库丰富等优点,因此在自然语言处理、计算机视觉等领域得到了广泛应用。 自然语言处理 自然语言处理是人工智能领域的一个重要分支,它主要研究如何让计算机理解和处理人类语言。Python在自然语

    2024年02月04日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包