sklearn调包侠之PCA降维

简介: PCAPCA(主成分分析),它是一种维度约减算法,即把高维度数据在损失最小的情况下转换为低纬度数据的算法。实战——人脸识别数据导入该数据集可通过sklearn进行下载。
img_ef1e3e505452ab5c2a9d0a684675b398.png

PCA

PCA(主成分分析),它是一种维度约减算法,即把高维度数据在损失最小的情况下转换为低纬度数据的算法。

实战——人脸识别

数据导入

该数据集可通过sklearn进行下载。数据集总共包含40位人员的照片,每个人10张照片。通过fetch_olivetti_faces方法下载的图片,进行了处理,人脸会居中,并裁剪为64*64大小。

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import fetch_olivetti_faces
faces = fetch_olivetti_faces()
X = faces.data
y = faces.target
pca

由于数据集样本少(400),特征高(64*64),需要对数据进行降维后,再建立模型。
那到底选择多少主成分合适了?我们这里计算多组主成分,获取数据还原率,如图所示,选择140个主成分,可以保证还原率大于0.95。

from sklearn.decomposition import PCA

candidate_components = range(10, 300, 30)
explained_ratios = []
for c in candidate_components:
    pca = PCA(n_components=c)
    X_pca = pca.fit_transform(X)
    explained_ratios.append(np.sum(pca.explained_variance_ratio_))

plt.figure(figsize=(10, 6), dpi=144)
plt.grid()
plt.plot(candidate_components, explained_ratios)
plt.xlabel('Number of PCA Components')
plt.ylabel('Explained Variance Ratio')
plt.title('Explained variance ratio for PCA')
plt.yticks(np.arange(0.5, 1.05, .05))
plt.xticks(np.arange(0, 300, 20))
img_a7d8c49001b5b8aa9d9da7ae13db9c14.png
切分数据集
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=33)
训练模型

这里使用svm进行模型训练,并使用网格搜索来获取最优参数。

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC

param_grid = {'C': [1, 5, 10, 50, 100],
              'gamma': [0.0001, 0.0005, 0.001, 0.005, 0.01]}
clf = GridSearchCV(SVC(kernel='rbf', class_weight='balanced'), param_grid)
clf = clf.fit(X_train_pca, y_train)

print(clf.best_params_, clf.best_score_)

# result
# {'C': 5, 'gamma': 0.005} 0.778125
模型评估

最后,对模型进行评估:

clf.best_estimator_.score(X_test_pca, y_test)

# result
# 0.96250000000000002
相关文章
|
3月前
|
机器学习/深度学习 算法 API
Sklearn中的监督学习全览:从线性回归到SVM
【7月更文第23天】 在机器学习的广阔领域中,监督学习占据着举足轻重的地位,它通过已标记的数据集学习输入与输出之间的映射关系,进而对未知数据进行预测。`scikit-learn`(简称sklearn)作为Python中最受欢迎的机器学习库之一,提供了丰富的监督学习算法。本篇文章将带您深入探索sklearn中的监督学习世界,从简单的线性回归到复杂的支撑向量机(SVM),并通过实战代码示例,让您对这些算法有更直观的理解。
55 8
|
5月前
|
机器学习/深度学习 Python
python实现判别分析
python实现判别分析
58 1
|
5月前
|
机器学习/深度学习 数据可视化 算法
R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析
R语言中的SOM(自组织映射神经网络)对NBA球员聚类分析
|
5月前
|
机器学习/深度学习 计算机视觉
数据分享|R语言GLM广义线性模型:逻辑回归、泊松回归拟合小鼠临床试验数据(剂量和反应)示例和自测题
数据分享|R语言GLM广义线性模型:逻辑回归、泊松回归拟合小鼠临床试验数据(剂量和反应)示例和自测题
|
5月前
|
机器学习/深度学习
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享(上)
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享
|
5月前
|
机器学习/深度学习 数据可视化
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享(下)
R语言非线性回归和广义线性模型:泊松、伽马、逻辑回归、Beta回归分析机动车事故、小鼠感染、蛤蜊数据、补剂钠摄入数据|数据分享
|
5月前
|
数据可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
主成分分析PCA谱分解、奇异值分解SVD预测分析运动员表现数据和降维可视化
|
5月前
|
机器学习/深度学习 搜索推荐 算法
降维·预测·救命:PCA、随机森林与乳腺癌
降维·预测·救命:PCA、随机森林与乳腺癌
84 1
|
5月前
|
算法 数据可视化 数据挖掘
密度聚类DBSCAN、主成分分析PCA算法讲解及实战(附源码)
密度聚类DBSCAN、主成分分析PCA算法讲解及实战(附源码)
95 0
|
算法 数据挖掘 Python
python数据分析 - 数据降维PCA
python数据分析 - 数据降维PCA
111 0