matlab进行特征缩放,机器学习中(Feature Scaling)特征缩放处理的matlab实现方式

在进行特征缩放的时候,其一般做法是(X-mu)/sigma

mu:代表均值

sigma:代表标准差

在matlab中,函数mean可以求特征的均值,函数std可以求特征的标准差。

假设训练集为m,特征数量为n,特征矩阵为X,则X的size为 m*n。

则 mu = mean(X)返回值为一个1*n的向量,向量中每个值对应于每个特征的均值。

则 sigma = std(X) 返回值为一个1*n的向量,向量中每个值对应于每个特征的标准差。

为了进行特征缩放,我们需要使用matlab中另外一个函数repmat。

对于repmat函数,可以理解成Repeat Matrix .

官方帮助文档为:

Repeat copies of array。

B = repmat(A,n) returns an array containing n copies of A in the row and column dimensions. The size of B is size(A)*n when A is a matrix.

repmat(A, n)表示分别在行和列上对于矩阵A拷贝n分。

例如:

A=

2 3;

3 4

则B = repmat(A, 2);

B =

2 3 2 3

3 4 3 4

2 3 2 3

3 4 3 4

repmat(A, m, n)表示在列方向返回m个A的拷贝,在行方向返回n个A的拷贝。

B = repmat(A, 2, 1)

B =

2 3

3 4

2 3

3 4

对于实现特征缩放,可以使用repmat函数来实现,由以上的计算可知:

X 为 m*n 矩阵

mu 1*n 向量

sigma 1*n向量

为了对X中的每一列向量进行特征缩放,使用以下命令即可

X_norm = (X - repmat(mu,size(X,1),1)) ./ repmat(sigma,size(X,1),1);

即,首先将mu使用premat函数为m*n向量,本质为将m个mu向量,按行叠加成矩阵。

X - repmat(mu, size(X,1), 1)

即为X-mu的特征缩放。

对于(X-mu)/sigma的处理方式一样。

原文:http://www.cnblogs.com/fengtingle/p/5966587.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 假设有以下数据集: | 特征1 | 特征2 | 标签 | |-------|-------|------| | 10 | 200 | 0 | | 20 | 300 | 1 | | 30 | 400 | 1 | | 40 | 500 | 0 | 进行特征的目的是将特征值的范围转换为相同的范围,以便于模型能够更好地处理数据。常用的方法包括标准化和归一化。 标准化指的是将特征到均值为0,方差为1的范围内。具体方法是对每个特征值减去该特征值所在列的均值,然后再除以该特征值所在列的标准差。例如,对于上述数据集的特征1,进行标准化的结果为: | 特征1 | 特征2 | 标签 | |---------|-------|------| | -1.1619 | 200 | 0 | | -0.3873 | 300 | 1 | | 0.3873 | 400 | 1 | | 1.1619 | 500 | 0 | 归一化指的是将特征到0到1的范围内。具体方法是对每个特征值减去该特征值所在列的最小值,然后再除以该特征值所在列的最大值与最小值的差。例如,对于上述数据集的特征1,进行归一化的结果为: | 特征1 | 特征2 | 标签 | |--------|-------|------| | 0 | 200 | 0 | | 0.3333 | 300 | 1 | | 0.6667 | 400 | 1 | | 1 | 500 | 0 | 需要注意的是,特征应该在拆分数据集之前进行,因为测试集的信息不能影响训练集的预处理过程。 ### 回答2: 特征机器学习常用的一种数据预处理技术,用于将不同特征的取值范围调整到相同的尺度,使得模型能够更好地学习特征之间的关系。下面举例说明数据如何进行特征。 假设我们有一个数据集,包含两个特征:年龄和收入。年龄的取值范围为18到60岁,收入的取值范围为1000到100000元。由于两个特征的取值范围差异较大,如果不进行特征,可能会导致模型对收入这个特征更加敏感,而忽略了年龄这个特征。 为了解决这个问题,我们可以采用两种常见的特征方法:归一化和标准化。 归一化是将特征的取值范围到[0,1]之间。对于年龄特征,我们可以采用最小-最大归一化方法,将18岁映射为0,60岁映射为1,其他年龄的映射可以通过线性插值得到。对于收入特征,同样采用最小-最大归一化方法,将1000元映射为0,100000元映射为1,其他收入的映射也可以通过线性插值得到。 标准化是将特征的均值为0,标准差为1。对于年龄特征,我们可以采用标准化方法将所有年龄减去均值,再除以标准差。对于收入特征,同样采用标准化方法将所有收入减去均值,再除以标准差。 通过归一化或标准化后,年龄和收入两个特征就都被到相同的尺度上了。这样,在训练模型时,模型就能够更好地学习两个特征之间的关系,而不会被某个特征的取值范围所影响。 ### 回答3: 特征是数据预处理的一种常用方法,用于将不同尺度范围的特征到相同的尺度上,以便提高模型的性能和训练效果。以下是几种常见的特征方法和举例说明: 1. 标准化(Standardization):将特征值按特征进行标准化,使其均值为0,方差为1。常用的标准化方法是Z-score标准化。例如,对身高和体重这两个特征进行标准化,可以将原始特征值减去均值再除以标准差,得到标准化后的数值。 2. 归一化(Normalization):将特征值按特征进行归一化,使其值位于0到1之间。常用的归一化方法是最小-最大归一化。例如,对一个0到100的分数特征进行归一化,可以将原始特征值减去最小值再除以最大值与最小值之差。 3. 对数变换(Logarithmic transformation):对具有右偏分布的特征进行对数变换,使其呈现更接近正态分布的形态。例如,对收入特征进行对数变换,可以将原始特征值取对数后得到新的特征值。 4. 至固定范围(Scaling to fixed range):将特征至固定的范围,例如0到1或-1到1之间。常用的方法是使用线性变换,将原始特征值映射到指定范围。例如,对一个特征值范围在-10到10之间的特征进行至0到1,可以将原始特征值减去最小值再除以最大值与最小值之差。 特征可以帮助模型更好地处理不同尺度的特征值,提高模型的性能和效果。具体选择哪种特征方法取决于数据的分布情况和模型的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值