Python-PCA数据分析

简介: PCA数据分析

Handwritten digits

from sklearn.datasets import load_digits
digits= load_digits()
digits.keys()
dict_keys(['data', 'target', 'target_names', 'images', 'DESCR'])
digits.images.shape
(1797, 8, 8)
digits.images[0,:,:]
array([[ 0.,  0.,  5., 13.,  9.,  1.,  0.,  0.],
       [ 0.,  0., 13., 15., 10., 15.,  5.,  0.],
       [ 0.,  3., 15.,  2.,  0., 11.,  8.,  0.],
       [ 0.,  4., 12.,  0.,  0.,  8.,  8.,  0.],
       [ 0.,  5.,  8.,  0.,  0.,  9.,  8.,  0.],
       [ 0.,  4., 11.,  0.,  1., 12.,  7.,  0.],
       [ 0.,  2., 14.,  5., 10., 12.,  0.,  0.],
       [ 0.,  0.,  6., 13., 10.,  0.,  0.,  0.]])
from matplotlib import pyplot as plt
plt.imshow(digits.images[50,:,:])
plt.show()

在这里插入图片描述

digits.target.shape
(1797,)
digits.target[50] # show the true number
2
digits.data.shape # the Series data of the digits.images
(1797, 64)
digits.data[0,:]
array([ 0.,  0.,  5., 13.,  9.,  1.,  0.,  0.,  0.,  0., 13., 15., 10.,
       15.,  5.,  0.,  0.,  3., 15.,  2.,  0., 11.,  8.,  0.,  0.,  4.,
       12.,  0.,  0.,  8.,  8.,  0.,  0.,  5.,  8.,  0.,  0.,  9.,  8.,
        0.,  0.,  4., 11.,  0.,  1., 12.,  7.,  0.,  0.,  2., 14.,  5.,
       10., 12.,  0.,  0.,  0.,  0.,  6., 13., 10.,  0.,  0.,  0.])

PCA of handwritten gigits

  1. 函数说明
    sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)

  2. 参数说明:

    • n_components: PCA算法中所要保留的主成分个数n,也即保留下来的特征个数n
      特点:int 或者 string,缺省时默认为None,所有成分被保留。
      赋值为int,比如n_components=1,将把原始数据降到一个维度。
      赋值为string,比如n_components='mle',将自动选取特征个数n,使得满足所要求的方差百分比。
      
    • copy: bool型;表示是否在运行算法时,将原始训练数据复制一份。
      若为True,则运行PCA算法后,原始训练数据的值不会有任何改变,因为是在原始数据的副本上进行运算;
      若为False,则运行PCA算法后,原始训练数据的值会改,因为是在原始数据上进行降维计算。
      
    • whiten:bool型,白化,使得每个特征具有相同的方差。
  3. PCA对象的属性

    • components_:返回具有最大方差的成分。
    • explained_variance_ratio_:返回 所保留的n个成分各自的方差百分比。
    • n_components_:返回所保留的成分个数n。
    • mean_
    • noise_variance_
  4. PCA对象的方法

    • fit(X,y=None):fit()可以说是scikit-learn中通用的方法,每个需要训练的算法都会有fit()方法,它其实就是算法中的“训练”这一步骤。因为PCA是无监督学习算法,此处y自然等于None。fit(X),表示用数据X来训练PCA模型。函数返回值:调用fit方法的对象本身。比如pca.fit(X),表示用X对pca这个对象进行训练。
    • fit_transform(X):用X来训练PCA模型,同时返回降维后的数据。newX=pca.fit_transform(X),newX就是降维后的数据。
    • inverse_transform():将降维后的数据转换成原始数据,X=pca.inverse_transform(newX)
    • transform(X):将数据X转换成降维后的数据。当模型训练好后,对于新输入的数据,都可以用transform方法来降维。
from sklearn import decomposition
pca= decomposition.PCA(n_components= 1) # parameter n_components: the number of components
digits_pca_1= pca.fit(digits.data)
digits_pca_1.components_
array([[-2.63692645e-18, -1.73094662e-02, -2.23428865e-01,
        -1.35913279e-01, -3.30322160e-02, -9.66339898e-02,
        -8.32939244e-03,  2.26900656e-03, -3.20516662e-04,
        -1.19308907e-01, -2.44451671e-01,  1.48512831e-01,
        -4.67318345e-02, -2.17740727e-01, -1.48136706e-02,
         4.47779622e-03, -4.94135515e-05, -7.95419368e-02,
         8.33951536e-02,  2.15915388e-01, -1.72126775e-01,
        -1.63712186e-01,  2.86444007e-02,  4.23251522e-03,
         9.85488994e-05,  6.42319050e-02,  2.54093292e-01,
        -3.56771084e-02, -2.09462584e-01, -4.31311895e-02,
         5.13118370e-02,  2.13422638e-04,  0.00000000e+00,
         1.59950865e-01,  3.68690745e-01,  1.64406778e-01,
         8.52007665e-02,  3.72983884e-02,  2.15867501e-02,
         0.00000000e+00,  1.28865580e-03,  1.06945278e-01,
         3.03067437e-01,  2.47813092e-01,  2.09637231e-01,
         1.22325649e-02, -3.69457664e-02,  1.61485202e-03,
         6.93023931e-04, -8.35145028e-03, -5.58599233e-02,
         9.30535631e-02,  1.07387720e-01, -1.37734564e-01,
        -6.32879113e-02,  9.61668793e-04,  9.55081888e-06,
        -1.40786852e-02, -2.35675503e-01, -1.41225574e-01,
        -9.15969422e-03, -8.94185029e-02, -3.65977413e-02,
        -1.14685134e-02]])
y_1= digits_pca_1.transform(digits.data)
plt.plot(y_1)
plt.show()

在这里插入图片描述

y_1= y_1.reshape(-1)
y_grouped= []
y_1[]
for ii in range(10):
    y_grouped.append(y_1[digits.target== ii])
plt.boxplot(y_grouped, labels= list(range(10)))
plt.show()

在这里插入图片描述

2-dimensional PCA

pca= decomposition.PCA(n_components= 2)
digits_pca_2= pca.fit(digits.data)
y_2= digits_pca_2.transform(digits.data)
y_2
array([[ -1.25946711,  21.27488332],
       [  7.95761084, -20.76869825],
       [  6.99192353,  -9.9559862 ],
       ...,
       [ 10.80128406,  -6.96025317],
       [ -4.8721003 ,  12.42395389],
       [ -0.34438922,   6.36554851]])
plt.figure(figsize= [10, 10])
for ii in range(10):
    plt.scatter(y_2[digits.target== ii, 0],
                y_2[digits.target== ii, 1],
                label= ii)
plt.legend()
plt.show()

在这里插入图片描述

Tranining a machine learning model

from sklearn.linear_model import LogisticRegression
logreg= LogisticRegression()
X= y_2
y= digits.target
lr_fit= logreg.fit(X, y)
C:\Users\Howell.L\AppData\Roaming\Python\Python37\site-packages\sklearn\linear_model\logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Howell.L\AppData\Roaming\Python\Python37\site-packages\sklearn\linear_model\logistic.py:469: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.
  "this warning.", FutureWarning)
y_fit= lr_fit.predict(X)
y_fit
array([0, 7, 1, ..., 1, 9, 5])
import numpy as npnp.mean(y== y_fit)
0.5843071786310517

Explore the logistic regression classification

n_grid= 1000
vals= np.linspace(-40, 40, n_grid)
grid_vals= np.repeat(vals, n_grid)
xx= grid_vals
yy= grid_vals.reshape(n_grid, n_grid).transpose().reshape(-1)
X_grid= np.stack([xx, yy], axis= 1)
y_grid= lr_fit.predict(X_grid)
y_grid
array([3, 3, 3, ..., 0, 0, 0])
plt.imshow(y_grid.reshape(n_grid, n_grid), cmap= 'tab10')
plt.colorbar()
plt.show()

在这里插入图片描述


目录
相关文章
|
22天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【10月更文挑战第42天】本文是一篇技术性文章,旨在为初学者提供一份关于如何使用Python进行数据分析的入门指南。我们将从安装必要的工具开始,然后逐步介绍如何导入数据、处理数据、进行数据可视化以及建立预测模型。本文的目标是帮助读者理解数据分析的基本步骤和方法,并通过实际的代码示例来加深理解。
51 3
|
1月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
75 0
|
29天前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
27天前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
|
1月前
|
数据采集 存储 数据可视化
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
1月前
|
数据采集 数据可视化 数据挖掘
深入浅出:使用Python进行数据分析的基础教程
【10月更文挑战第41天】本文旨在为初学者提供一个关于如何使用Python语言进行数据分析的入门指南。我们将通过实际案例,了解数据处理的基本步骤,包括数据的导入、清洗、处理、分析和可视化。文章将用浅显易懂的语言,带领读者一步步掌握数据分析师的基本功,并在文末附上完整的代码示例供参考和实践。
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
46 2
|
1月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
45 2