机器学习实战基础(二十七):sklearn中的降维算法pca和svdpca对手写数字数据集的降维(代码片段)

qiu-hua qiu-hua     2022-12-14     671

关键词:

PCA对手写数字数据集的降维

1. 导入需要的模块和库

from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier as RFC
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

2. 导入数据,探索数据

data = pd.read_csv(r"C:worklearnbettermicro-classweek 3 Preprocessingdigit 
recognizor.csv")
 
X = data.iloc[:,1:]
y = data.iloc[:,0]
 
X.shape

3. 画累计方差贡献率曲线,找最佳降维后维度的范围

pca_line = PCA().fit(X)
plt.figure(figsize=[20,5])
plt.plot(np.cumsum(pca_line.explained_variance_ratio_))
plt.xlabel("number of components after dimension reduction")
plt.ylabel("cumulative explained variance ratio")
plt.show()

4. 降维后维度的学习曲线,继续缩小最佳维度的范围

#======【TIME WARNING:2mins 30s】======#
 
score = []
for i in range(1,101,10):
    X_dr = PCA(i).fit_transform(X)
    once = cross_val_score(RFC(n_estimators=10,random_state=0)
                           ,X_dr,y,cv=5).mean()
    score.append(once)
plt.figure(figsize=[20,5])
plt.plot(range(1,101,10),score)
plt.show()

5. 细化学习曲线,找出降维后的最佳维度

#======【TIME WARNING:2mins 30s】======#
 
score = []
for i in range(10,25):
    X_dr = PCA(i).fit_transform(X)
    once = cross_val_score(RFC(n_estimators=10,random_state=0),X_dr,y,cv=5).mean()
    score.append(once)
plt.figure(figsize=[20,5])
plt.plot(range(10,25),score)
plt.show()

6. 导入找出的最佳维度进行降维,查看模型效果

X_dr = PCA(23).fit_transform(X)
 
#======【TIME WARNING:1mins 30s】======#
cross_val_score(RFC(n_estimators=100,random_state=0),X_dr,y,cv=5).mean()

模型效果还好,跑出了94.49%的水平,但还是没有我们使用嵌入法特征选择过后的96%高,有没有什么办法能够提高模型的表现呢?

7. 突发奇想,特征数量已经不足原来的3%,换模型怎么样?

在之前的建模过程中,因为计算量太大,所以我们一直使用随机森林,但事实上,我们知道KNN的效果比随机森林
更好,KNN在未调参的状况下已经达到96%的准确率,而随机森林在未调参前只能达到93%,这是模型本身的限制
带来的,这个数据使用KNN效果就是会更好。现在我们的特征数量已经降到不足原来的3%,可以使用KNN了吗?

from sklearn.neighbors import KNeighborsClassifier as KNN
cross_val_score(KNN(),X_dr,y,cv=5).mean()

8. KNN的k值学习曲线

#======【TIME WARNING: 】======#
 
score = []
for i in range(10):
    X_dr = PCA(23).fit_transform(X)
    once = cross_val_score(KNN(i+1),X_dr,y,cv=5).mean()
    score.append(once)
plt.figure(figsize=[20,5])
plt.plot(range(10),score)
plt.show()

9. 定下超参数后,模型效果如何,模型运行时间如何?

 

cross_val_score(KNN(4),X_dr,y,cv=5).mean()
 
 
#=======【TIME WARNING: 3mins】======#
%%timeit
cross_val_score(KNN(4),X_dr,y,cv=5).mean()

可以发现,原本785列的特征被我们缩减到23列之后,用KNN跑出了目前位置这个数据集上最好的结果。再进行更
细致的调整,我们也许可以将KNN的效果调整到98%以上。PCA为我们提供了无限的可能,终于不用再因为数据量
太庞大而被迫选择更加复杂的模型了!

 

机器学习实战基础(二十三):sklearn中的降维算法pca和svdpca与svd之pca中的svd(代码片段)

 PCA中的SVD1PCA中的SVD哪里来?细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,PCA和SVD涉及了大量的矩阵计算,两者都是运... 查看详情

机器学习实战基础(十七):sklearn中的数据预处理和特征工程特征选择之embedded嵌入法(代码片段)

Embedded嵌入法嵌入法是一种让算法自己决定使用哪些特征的方法,即特征选择和算法训练同时进行。在使用嵌入法时,我们先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据权值系数从大到小选择特征... 查看详情

机器学习sklearn(二十七):模型评估量化预测的质量回归指标(代码片段)

该 sklearn.metrics 模块实现了一些loss,score以及utility函数以测量regression(回归)的性能.其中一些已经被加强以处理多个输出的场景: mean_squared_error, mean_absolute_error, explained_variance_score 和 r2_score. 查看详情

sklearn中的降维算法pca和svd

sklearn中的降维算法PCA和SVD  1概述    1.1从什么叫“维度”说开来    1.2sklearn中的降维算法  2PCA与SVD    2.1降维究竟是怎样实现?    2.2重要参数n_components      2.2.1迷你案例:高维数据的可... 查看详情

白面机器学习-降维

1、常见的降维的方法有:主成分分析,线性判别分析,等距映射,局部线性插入,拉不拉斯特征映射,局部保留投影。一、PCA:2、:主成分分析法,最经典的降维的方法,是一种线性,非监督,全局的降维方法。最大方差理论:3... 查看详情

机器学习100天(二十七):027python中的函数和类(代码片段)

机器学习100天,今天讲的是:Python中的函数和类。《机器学习100天》完整目录:目录为了方便后面机器学习算法编写程序,秉承从零开始的原则,我们在此节简单介绍一下Python的编程知识。一、函数的定义我们打开spyder。Python中... 查看详情

机器学习100天(二十七):027python中的函数和类(代码片段)

机器学习100天,今天讲的是:Python中的函数和类。《机器学习100天》完整目录:目录为了方便后面机器学习算法编写程序,秉承从零开始的原则,我们在此节简单介绍一下Python的编程知识。一、函数的定义我们打开spyder。Python中... 查看详情

机器学习100天(二十七):027python中的函数和类(代码片段)

机器学习100天,今天讲的是:Python中的函数和类。《机器学习100天》完整目录:目录为了方便后面机器学习算法编写程序,秉承从零开始的原则,我们在此节简单介绍一下Python的编程知识。一、函数的定义我们打开spyder。Python中... 查看详情

机器学习实战基础(十八):sklearn中的数据预处理和特征工程特征选择之wrapper包装法

Wrapper包装法 包装法也是一个特征选择和算法训练同时进行的方法,与嵌入法十分相似,它也是依赖于算法自身的选择,比如coef_属性或feature_importances_属性来完成特征选择。但不同的是,我们往往使用一个目标函数作为黑盒... 查看详情

机器学习实战基础(十六):sklearn中的数据预处理和特征工程特征选择之filter过滤法总结

 过滤法总结到这里我们学习了常用的基于过滤法的特征选择,包括方差过滤,基于卡方,F检验和互信息的相关性过滤,讲解了各个过滤的原理和面临的问题,以及怎样调这些过滤类的超参数。通常来说,我会建议,先使用... 查看详情

机器学习实战应用案例100篇(二十七)-遍历算法应用案例(代码片段)

树的遍历(python) 遍历以下二叉树:1首先创建二叉树,代码如下:class Node:    def __init__(self, value):        self.value = value        self.left&... 查看详情

机器学习实战基础(三十七):随机森林之randomforestregressor重要参数,属性与接口(代码片段)

RandomForestRegressorclasssklearn.ensemble.RandomForestRegressor(n_estimators=’warn’,criterion=’mse’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_l 查看详情

机器学习实战基础(二十八):决策树概述(代码片段)

概述决策树是如何工作的 决策树(DecisionTree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题。决策树算法容易理解,适... 查看详情

机器学习实战基础(十五):sklearn中的数据预处理和特征工程特征选择之filter过滤法相关性过滤(代码片段)

...白白浪费我们的计算内存,可能还会给模型带来噪音。在sklearn当中,我们有三种常用的方法来评判特征与标签之间的相关性:卡方,F检验,互信息。3卡方过滤卡方过滤是专门针对离散型标签(即分类问题)的相关性过滤。卡方 查看详情

机器学习(二十七)—em算法

1、EM算法要解决的问题  如果使用基于最大似然估计的模型,模型中存在隐变量,就要用EM算法做参数估计。  EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐... 查看详情

sklearn与tensorflow机器学习实用指南第二版

零、前言一、机器学习概览二、一个完整的机器学习项目三、分类四、训练模型五、支持向量机六、决策树七、集成学习和随机森林八、降维十、使用Keras搭建人工神经网络十一、训练深度神经网络十二、使用TensorFlow自定义模型... 查看详情

四大机器学习降维算法:pcaldallelaplacianeigenmaps

...思路进行尝试下:链接:http://www.36dsj.com/archives/26723引言机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数f:x->y,其中x是原始数据点的表达... 查看详情

机器学习sklearn无监督学习降维算法pca(代码片段)

importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dfromsklearn.datasetsimportmake_blobsfromsklearn.decompositionimportPCA#X为样本特征,Y为样本簇类别,共1000个样本,每个样本3个特征,共4个簇 查看详情