维数灾难

一、定义

随着维度的增加,分类器性能逐步上升,到达某点之后,其性能便逐渐下降

也许分类器准确率依然无法达到要求,加入更多的特征,比如颜色、纹理的统计信息等等,如此下去,可能会得到上百个特征。那是不是我们的分类器性能会随着特征数量的增加而逐步提高呢?答案也许有些让人沮丧,事实上,当特征数量达到一定规模后,分类器的性能是在下降的。随着维度(特征数量)的增加,分类器的性能却下降了。

 

二、维数灾难和过拟合

è¿éåå¾çæè¿°

过多的特征导致的过拟合现象:训练集上表现良好,但是对新数据缺乏泛化能力

 

灾难是指在涉及到向量的计算问题中,随着的增加,计算量呈指倍增长的现象。在Python中,可以使用PCA(Principal Component Analysis)算法来应对灾难。PCA是一种降算法,通过线性变换将高据映射到低空间中,以便更好地处理据。 以下是基于原生Python和numpy库实现PCA算法的示例代码: ```python import numpy as np def pca(data, n_components): # 中心化据 data_centered = data - np.mean(data, axis=0) # 计算协方差矩阵 covariance_matrix = np.cov(data_centered, rowvar=False) # 计算特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix) # 对特征值进行排序并选择前n_components个特征向量 sorted_indices = np.argsort(eigenvalues)[::-1] selected_indices = sorted_indices[:n_components] selected_eigenvectors = eigenvectors[:, selected_indices] # 对据进行降 transformed_data = np.dot(data_centered, selected_eigenvectors) return transformed_data # 示例据 data = np.array([[ 1. , 1. ], [ 0.9 , 0.95], [ 1.01, 1.03], [ 2. , 2. ], [ 2.03, 2.06], [ 1.98, 1.89], [ 3. , 3. ], [ 3.03, 3.05], [ 2.89, 3.1 ], [ 4. , 4. ], [ 4.06, 4.02], [ 3.97, 4.01]]) # 使用PCA进行降 new_data = pca(data, n_components=1) print(new_data) ``` 上述代码中,我们首先定义了一个名为pca的函,该函接受原始据和要降到的作为输入,并返回降后的据。在函内部,我们首先对据进行中心化处理,然后计算协方差矩阵,接着计算特征值和特征向量,最后根据选择的据进行降。 输出结果将是降后的据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值