-
大小: 3.09MB文件類型: .rar金幣: 2下載: 0 次發布日期: 2023-10-02
- 語言: Python
- 標簽:
資源簡介
使用的是python3版本,自己編寫的,能夠完美運行,只需要運行主程序就行,數據啥的都準備好了

代碼片段和文件信息
from?__future__?import?print_function??
??
from?time?import?time??
import?logging??
import?matplotlib.pyplot?as?plt??
import?cv2??
??
from?numpy?import?*??
from?sklearn.model_selection?import?train_test_split??
from?sklearn.model_selection?import?GridSearchCV??
from?sklearn.metrics?import?classification_report??
from?sklearn.metrics?import?confusion_matrix??
from?sklearn.decomposition?import?PCA??
from?sklearn.svm?import?SVC
#獲取人臉圖的灰度圖像數據,并且每一行數據代表一張圖
def?get_Image():??
????for?i?in?range(141):??
????????for?j?in?range(111):??
????????????path?=?PICTURE_PATH?+?‘s‘+str(i)?+?‘/‘+?str(j)?+?“.pgm“??
????????????img_gray?=?cv2.imread(path0)??
????????????#img_gray?=?cv2.cvtColor(img?cv2.COLOR_BGR2GRAY)??
????????????hw?=?img_gray.shape??
????????????img_col?=?img_gray.reshape(h*w)??
????????????all_data_set.append(img_col)??
????????????all_data_label.append(i)??
????return?(hw)
#對原始數據進行PCA特征壓縮,壓縮數默認20;
def?PCAdata(Xyn_components=20):
????X_train?X_test?y_train?y_test?=?train_test_split(X?y?test_size=0.2)#采用5倍交叉驗證法分類數據
????pca?=?PCA(n_components=n_components?svd_solver=‘randomized‘?whiten=True).fit(X_train)????#whiten是一種數據預處理方式,會損失一些數據信息,但可獲得更好的預測結果
????#eigenfaces?=?pca.components_.reshape((n_components?h?w))
????
????X_train_pca?=?pca.transform(X_train)??????#得到訓練集投影系數??
????X_test_pca?=?pca.transform(X_test)
????return(X_train_pcaX_test_pcay_train?y_test)
#訓練并預測數據
def?train_test(X_trainY_trainX_testY_testCkergam=0.1):#C為懲罰因子參數,ker為核函數類型
????param_grid?=?{‘C‘:?[C]?‘gamma‘:?[gam]?}
????clf?=?GridSearchCV(SVC(kernel=ker?class_weight=‘balanced‘)?param_grid)
????clf?=?clf.fit(X_train_pca?Y_train)
????#print(‘訓練所的模型參數如下:‘)??
????#print(clf.best_estimator_)
???#?print(‘\n現在開始預測訓練集....‘)??
?
????y_pred?=?clf.predict(X_test)??
???
????result?=?list(Y_test?==?y_pred)
????score?=?(result.count(True))/len(y_pred)
????
????return(score)
#數據變量的聲明以及PCA壓縮處理
PICTURE_PATH?=?‘att_faces/‘
all_data_set?=?[]??
all_data_label?=?[]
hw?=?get_Image()
X?=?array(all_data_set)??
y?=?array(all_data_label)??
n_samplesn_features?=?X.shape??
n_classes?=?len(unique(y))??
target_names?=?[]
X_train_pcaX_test_pca?y_train?y_test=?PCAdata(Xy20)
#score?=train_test(X_train_pcay_trainX_test_pcay_test1000ker=‘rbf‘gam=0.01)
#開始訓練測試
print(‘下面開始進行不同核函數下的準確率描述......(默認C=1000,gamma=0.1)\n‘)
kernal?=[‘rbf‘‘linear‘?‘poly‘??‘sigmoid‘?]
for?each?in?kernal:
????result?=?train_test(X_train_pcay_trainX_test_pcay_testC=1000ker=eachgam=0.01)
????print(‘核函數為%s時,準確率為%s:‘%(eachresult))
dataC=[]
datagama=[]
datascore?=[]
for?i?in?range(1200):
????dataC.append(i/20)
????datagama.append(1/100)
print(‘\n開始繪制參數C下的準確率曲線圖(比較慢請稍等)......‘)
for?C?in?dataC:
????score?=train_test(X_train_pcay_trainX_test_pcay_testCker=‘rbf‘gam=0.01)
????#print(‘C=%d時,準確率為%d‘%(Cscore))
????datascore.append(score)
plt.title(‘Accuracy?with?paremeter?C‘)
plt.xlabel(‘Paremeter
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????10318??1994-04-18?14:17??人臉識別VSM\att_faces\s1\1.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s1\10.pgm
?????文件??????10318??1994-04-18?14:17??人臉識別VSM\att_faces\s1\2.pgm
?????文件??????10318??1994-04-18?14:17??人臉識別VSM\att_faces\s1\3.pgm
?????文件??????10318??1994-04-18?14:17??人臉識別VSM\att_faces\s1\4.pgm
?????文件??????10318??1994-04-18?14:17??人臉識別VSM\att_faces\s1\5.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s1\6.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s1\7.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s1\8.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s1\9.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s10\1.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s10\10.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s10\2.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s10\3.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s10\4.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s10\5.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s10\6.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s10\7.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s10\8.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s10\9.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s11\1.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s11\10.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s11\2.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s11\3.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s11\4.pgm
?????文件??????10318??1994-04-18?14:18??人臉識別VSM\att_faces\s11\5.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s11\6.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s11\7.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s11\8.pgm
?????文件??????10318??1994-04-18?14:07??人臉識別VSM\att_faces\s11\9.pgm
............此處省略416個文件信息
- 上一篇:me
tadata.txt - 下一篇:PCA+PSO-ELM.rar
評論
共有 條評論