PCA降维算法应用实例----kaggle手写数字识别

本文通过PCA算法应用于kaggle手写数字识别,详细阐述PCA参数选择,包括画特征信息量累计曲线,结合KNN模型确定最佳n_components,并探讨PCA在训练集和测试集的应用策略,强调PCA必须在训练集上完成。
摘要由CSDN通过智能技术生成

序言

在前面的博文中我们了解了降维算法PCA,以及PCA的参数。这篇文章建立在对PCA有了一定的基础的前提上。本篇文章主要将PCA算法在实际中的应用。包含PCA参数的选择,训练集,测试集上PCA的使用,解决PCA实际应用中的困惑。本文使用的是kaggle上digit-regognizer数据集

正题

编程环境

  • python3.7
  • anaconda
  • jupyter notebook

数据准备

可以通过官方渠道获得数据,也可以通过博主上传的数据下载。
这次使用的数据集是kaggle的digit-recognizer数据集。数据集中包含三个csv文件如下图
在这里插入图片描述
sample_submission.csv是提交到kaggle的csv文件格式。train.csv是数据的训练集,包含了784个特征和一个标签列。共42000组数据。test.csv为测试集,包含了784个特征,该数据集没有标签这一列,共28000组数据。本次仅使用该数据集中的训练集。通过sklearn将原训练集划分为新的训练集,测试集。

导包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA # PCA降维算法
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score # 交叉检验
from sklearn.neighbors import KNeighborsClassifier # KNN分类器
from sklearn.model_selection import train_test_split # 分割训练集,测试集

%matplotlib inline

导入数据

file = "../data/digit-recognizer/train.csv" # 换成自己本地的数据集路径

df = pd.read_csv(file)

df.shape #(42000, 785)
# 可以看出数据集非常的庞大

# 特征标签分离
X = df.loc[:, df.columns != 'label']
y = df.loc[:, df.columns == 'label'].values.ravel()

PCA参数的选择

画降维后特征的信息量累计和曲线

这一步PCA不人为设置任何参数,使用PCA的默认值。通过explained_variance_ratio_属性获得

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值