欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

维度压缩

程序员文章站 2024-03-08 09:36:54
...

当特征选择完成之后,就可以直接训练模型了,但是可能由于特征矩阵过大导致计算量大,训练时间长的问题;因此,降低特征矩阵维度,也是必不可少的,主成分分析就是最常用的降维方法,在减少数据集的维度的同时,保持对方差贡献最大的特征,在sklearn中,我们使用PCA类进行主成分分析。

  • 主成分分析(Principal Components Analysis)

  • PCA API

    • 有一个参数用于设置主成分的个数:pca_3=PCA(n_components=3),设置好参数后,就可以生成PCA的对象了
    • 接着我们可以调用fit_transform方法对高维数据进行压缩:data_pca_3=pca3.fit_transform(data)

我们人类能看到的数据是三维数据,那么怎样把四维数据压缩到三维数据呢?

  1. #导入iris特征数据到data变量中
  2. import pandas
  3. from sklearn import datasets
  4. import matplotlib.pyplot as plt
  5. from sklearn.decomposition import PCA
  6. from mpl_toolkits.mplot3d import Axes3D
  7. iris =datasets.load_iris()
  8. data = iris.data
  9. #分类变量到target变量中
  10. target = iris.target
  11. #使用主成分分析,将四维数据压缩为三维
  12. pca_3 = PCA(n_components=3)
  13. data_pca_3 = pca_3.fit_transform(data)
  14. #绘图
  15. colors={0:'r',1:'b',2:'k'}
  16. markers={0:'x',1:'D',2:'o'}
  17. #弹出图形
  18. #%matplotlib qt
  19. #三维数据
  20. fig = plt.figure(1,figsize=(8,6))
  21. ax = Axes3D(fig,elev=-150,azim=110)
  22. data_pca_gb = pandas.DataFrame(
  23. data_pca_3
  24. ).groupby(target)
  25. for g in data_pca_gb.groups:
  26. ax.scatter(
  27. data_pca_gb.get_group(g)[0],
  28. data_pca_gb.get_group(g)[1],
  29. data_pca_gb.get_group(g)[2],
  30. c=colors[g],
  31. marker=markers[g],
  32. cmap=plt.cm.Paired
  33. )
  34. plt.show()
  • 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
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

生成的效果图如下:
维度压缩

 

相关标签: 统计学