随笔 - 1762  文章 - 0  评论 - 109  阅读 - 431万

P12 数据的降维及特征选择

https://www.bilibili.com/video/BV184411Q7Ng?p=12

 

 注解:

  1. 这里了的降维不是指数组的维度,不是1维、2维、3维那个维。

 

 注解:

  1. 这个是3维的特征转换为2维的特征。
  2. 降维就是把样本的特征的数量减少,比如在分辨男女的时候,把每个样本里面的特征肤色去掉。

 

 

 

 

 

 

 

 注解:

  1. 特征2和特征3是可与去掉的,不然突然增加训练成本。

 注解:

  1. 过滤式就是把低方差的特征通过设定方差阈值过滤掉。

 

 

 注解:

  • 如果方差为0或者接近于0,则考虑把这个特征拿掉,因为它没有波动,反映不出样本之间的差别,区分不开不同的样本。

 

 

 

 

 

 注解:

  1. 调用函数,把第1列特征和第3列特征去掉。
复制代码
from sklearn.feature_selection import VarianceThreshold









def var():
    """
    删除低方差的特征
    :return:
    """
    var=VarianceThreshold(threshold=0.0)
    data=var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None


if __name__=="__main__":
    var()
复制代码

运行结果:

 

 注解:

  1. 把相同的特征都删掉了,删掉了特征向量[0,0,0]和特征向量[3,3,3].
复制代码
from sklearn.feature_selection import VarianceThreshold









def var():
    """
    删除低方差的特征
    :return:
    """
    var=VarianceThreshold(threshold=1.0)
    data=var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None


if __name__=="__main__":
    var()
复制代码

运行结果:

 

 注解:

  1. 如果是方差阈值设为1,则特征向量[2,1,1]也被去掉了。
  2. 一般方差的阈值可以是[0,10]之间。

 

 

 

 

 

 

 

 

 

 

 

 注解:

  1. 一张图片的特征向量是可能达到上万的。

 

 

 注解:

  1. 用2维表示3维的东西。
  2. 图片1和2看不出来是洒水壶,图片3勉强能看出来,图片4(二维)最能表示洒水壶。

 

 

 注解:

  1. 如果特征向量本来就很少,比如10个左右,是没有必要使用PCA进行特征压缩的。

 

 

 

 

 

 

 

 

 注解:

  1. 特征向量1和特征向量50存在一个大约2倍的关系,这就是特征向量之间的相关性。

 

 

 注解:

  1. 如果要压缩成一维的话,可以向x轴或者y轴投影,这样数据点就会由于5个变成3个,这个不是PCA。
  2. PCA是找到一个直线,让样本点投影到这条直线上,切尽可能的减少样本量的损失。如,可以找到一条斜线,投影后,5个样本点还是5个样本点,只不过数据发生了变化,数据量没有发生变化。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 注解:

  1. 参数n_components一般填90%~95%之间的一个数字,表示用PCA(主成分分析)进行特征压缩的时候,保留95%的特征量,一般没有一个最优值,需要不断的调试才能得出最优值。
  2. 参数n_components也可以填一个整数,表示减少到的特征数量,但是一般并不知道需要减少到多少个特征数。

代码演示:

 

复制代码
from sklearn.decomposition import PCA




def pca():
    """
    主成分分析
    :return:
    4个样本,每个样本3个特征
    """
    pca=PCA(n_components=0.9)
    data=pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1],])
    print(data)


    return None


if __name__=="__main__":
    pca()
复制代码

运行结果:

 

 注解:

  1. 4个样本3个特征,变成了3个样本2个特征。
  2. 当然这两个特征没有实际意义,只是举的数字例子。
  3. 特征数量还剩大约90%,因为调用主成分分析函数的时候,参数选择的就是保留90%的特征数。

 

posted on   一杯明月  阅读(331)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2019-12-30 ultraedit字体设置
2019-12-30 伤秦姝行
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示