归一化特征值

def autoNorm(dataSet):
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normDataSet = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - tile(minVals, (m, 1))
    normDataSet = normDataSet / tile(ranges, (m, 1))  # element wise divide
    return normDataSet, ranges, minVals

dataset.min(0)是提取一个矩阵的每列的最小值,然后组成一个行向量,例如:

[[1,2,5],

[4,8,8],

[0,6,4]] 结果为[0,2,4]

tile(minVals, (m, 1))是把一个矩阵搞成m行倍,列为1倍,例如::tile(minVals, (4, 1))

结果为:  [[0,2,4],

                [0,2,4],

                [0,2,4],

                [0,2,4]]



归一化特征值分析中的最优阶次选择是一个关键问题,尤其在信号处理、模式识别和数据降维等应用中。确定最优阶次的目标是找到既能保留数据主要信息又能避免过拟合或计算冗余的模型复杂度。 ### 特征值分析与归一化 特征值分析通常用于主成分分析(PCA)或协方差矩阵分解中,其核心在于提取数据的主要变化方向。归一化操作常用于消除不同特征之间的量纲差异,使特征值具有可比性。特征值越大,代表对应特征向量方向上的数据方差越高,即该方向上信息越重要。 ### 最优阶次的选择方法 #### 1. **累积贡献率法** 该方法基于特征值的累计解释方差比例来决定保留多少个主成分。一般建议选取使得累计方差贡献率达到某个阈值(如90%、95%或99%)的最小阶次[^2]。 例如,若前三个特征值的累计方差贡献率为95%,则认为这三个主成分已经足够描述原始数据的主要结构。 #### 2. **Kaiser准则(特征值大于1规则)** 在PCA中,Kaiser提出一个经验准则:只保留特征值大于1的主成分。这一标准适用于数据已经标准化后的协方差矩阵分析情况。因为标准化后每个变量的方差为1,因此特征值大于1表示该主成分解释的信息多于单个原始变量。 #### 3. **碎石图(Scree Plot)分析** 通过绘制特征值随阶次变化的曲线图,观察“拐点”位置。在该点之后特征值下降趋于平缓,说明后续主成分对数据解释能力较弱。选择拐点之前的阶次数作为最优阶次。 #### 4. **交叉验证法** 使用交叉验证评估不同阶次下的模型性能。例如,在降维后进行分类或回归任务时,可以通过比较不同阶次下模型的预测误差(如均方误差、准确率等)来选择最优阶次。此方法较为严谨,但计算成本较高[^2]。 #### 5. **信息准则(如AIC、BIC)** 利用统计模型选择准则,如Akaike信息准则(AIC)或贝叶斯信息准则(BIC),可以在模型复杂性和拟合优度之间进行权衡。这些准则可用于评估不同阶次对应的模型质量,从而选择最优阶次。 ### 应用示例 在心电信号处理中,归一化特征值分析可用于提取信号的主要特征以去除噪声或辅助诊断。此时,最优阶次的选择将影响信号重构的质量与去噪效果。可以结合碎石图和交叉验证的方法来优化阶次选择[^4]。 ```python import numpy as np from sklearn.decomposition import PCA from sklearn.preprocessing import StandardScaler # 假设 X 是原始数据 (n_samples, n_features) X_scaled = StandardScaler().fit_transform(X) # 使用PCA进行特征值分析 pca = PCA() pca.fit(X_scaled) explained_variance_ratio = pca.explained_variance_ratio_ # 累计贡献率法确定最优阶次 cumulative_variance = np.cumsum(explained_variance_ratio) optimal_order = np.where(cumulative_variance >= 0.95)[0][0] + 1 # 选择95%阈值 print(f"Optimal order: {optimal_order}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值