文章目录
序言
在前面的博文中我们了解了降维算法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_属性获得