【机器学习】随机森林实现人脸识别

人脸数据集:
Olivetti人脸数据集是1900年由ATT剑桥实验室收集。这个数据集包含40个不同受试者在不同时间、不同光照情况下的面部图像。此外,受试者也有不同的面部表情和面部细节。
接下来图像被量化到256的灰度值。一共40个不同的标签。人脸识别是一个多类分类的任务。

# 开发时间:2022/9/7 20:12
# 开发内容:
# 运行环境:
# 备注内容:使用随机森林实现人脸识别
import cv2
from sklearn.datasets import fetch_olivetti_faces
import numpy as np
import matplotlib.pyplot as plt
import pylab

from sklearn.model_selection import train_test_split
import cv2
from sklearn.metrics import accuracy_score


if __name__=='__main__':
	dataset=fetch_olivetti_faces()
	X=dataset.data
	Y=dataset.target
	np.random.seed(21)
	idx_rand=np.random.randint(len(X),size=8)
	n_samples,n_features=X.shape[:2]
	X-=X.mean(axis=0)
	X-=X.mean(axis=1).reshape(n_samples,-1)
	for p,i in enumerate(idx_rand):
		plt.subplot(2,4,p+1)
		plt.imshow(X[i,:].reshape((64,64)),cmap='gray')
		plt.axis('off')
	pylab.show()

	X_train,X_test,y_train,y_test=train_test_split(X,Y,random_state=21)
	rtree=cv2.ml.RTrees_create()
	rtree.setMaxCategories(len(np.unique(Y)))
	rtree.setMaxDepth(2000)
	rtree.setMinSampleCount(2  )


	num_trees=100
	eps=0.01
	criteria=(cv2.TERM_CRITERIA_MAX_ITER+cv2.TERM_CRITERIA_EPS,num_trees,eps)
	rtree.setTermCriteria(criteria)
	rtree.train(X_train,cv2.ml.ROW_SAMPLE,y_train);
	_,y_hat=rtree.predict(X_test)
	a=accuracy_score(y_test,y_hat)
	print(a)


掉包,scikitlearn中数据分割数据集,cv2随机深林。其中节点分裂数量:
人tree。setMinsamplecount(2)
和深度数目rtree.setmaxdepth(1000)是不可少的参数。
实验结果0.91

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高山仰止景

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值