SVC 支持向量机做人脸识别(项目实例)

# 导包
import numpy as np
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.model_selection import GridSearchCV
from sklearn import datasets

# 加载数据   第一次加载,需要联网下载
# 下载路径:C:\Users\likai\scikit_learn_data\lfw_home
faces = datasets.fetch_lfw_people(resize= 1,min_faces_per_person=70)
# 形状是:(125,94)
X  = faces['data']
y = faces['target']
display(X.shape,y.shape)

# 数据降维 PCA
pca = PCA(n_components=0.9)
X_pca = pca.fit_transform(X)
display(X_pca.shape)
X_train,X_test,X_train_pca,X_test_pca,y_train,y_test = train_test_split(X,X_pca,y,test_size = 0.1)

display(X_train.shape,X_test.shape)
display(X_train_pca.shape,X_test_pca.shape)

# SVC建模预测
svc = SVC()
svc.fit(X_train_pca,y_train)
svc.score(X_test_pca,y_test)   # 输出:0.7984496124031008

# 网格搜索确实最佳参数
%%time
svc = SVC()
params = {'C':np.logspace(-3,1,20),'kernel':['rbf','poly','sigmoid','linear']}
gc = GridSearchCV(estimator = svc,param_grid = params)
gc.fit(X_train_pca,y_train)
print('网格搜索确定最佳参数:',gc.best_params_)
print('模型得分是:',gc.score(X_test_pca,y_test))
y_pred = gc.predict(X_test_pca)
# 输出
'''
网格搜索确定最佳参数: {'C': 3.792690190732246, 'kernel': 'rbf'}
模型得分是: 0.8837209302325582
Wall time: 36.2 s
'''
# 数据可视化
target_names = faces.target_names
print('目标任务名字如下:',target_names)
plt.figure(figsize=(5*2,10*3))
for i in range(50):
    plt.subplot(10,5,i + 1)
    plt.imshow(X_test[i].reshape(125,-1),cmap = 'gray')
    true_name = target_names[y_test[i]].split(' ')[-1]
    pred_name = target_names[y_pred[i]].split(' ')[-1]
    plt.title('True:%s\nPred:%s' % (true_name,pred_name))
    plt.axis('off')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值