日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

随机森林图片分类

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 随机森林图片分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#os為了下面獲取圖片路徑 import os, glob import matplotlib.pyplot as plt import numpy as np from PIL import Image from sklearn.decomposition import PCA import tensorflow from tensorflow import keras #total_num = 5970 # 訓練集總計和 #train_num = 5970 # 訓練集實際訓練數字,20的驗證集 dir_data = '/Users/mac/Desktop/Dataset2' # 訓練集路徑 dir_mask = os.path.join(dir_data, 'mask') # 戴口罩文件夾路徑 dir_nomask = os.path.join(dir_data, 'nomask') # 沒帶口罩文件夾路徑 #assert為斷言函數。判斷文件是否存在 assert os.path.exists(dir_mask), 'Could not find ' + dir_mask assert os.path.exists(dir_nomask), 'Could not find ' + dir_nomask # 定義了文件指針對整個文件夾遍歷一遍,將圖像讀出來 #os.path.abspath(fp) 獲取圖片的絕對路徑 #glob.glob獲取一個可以遍歷對象(隨機遍歷) fpath_mask=[os.path.abspath(fp) for fp in glob.glob(os.path.join(dir_mask, '*.png'))] fpath_nomask = [os.path.abspath(fp) for fp in glob.glob(os.path.join(dir_nomask, '*.png'))] # 文件數 num_mask = len(fpath_mask) num_nomask = len(fpath_nomask) # 設置標簽。將num_mask變為0,將num_nomask變為1 label_mask = [0] * num_mask label_nomask = [1] * num_nomask print('#mask:', num_mask) print('#nomask:', num_nomask) # 劃分多少為驗證集 RATIO_TEST = 0.2 num_mask_test = int(num_mask * RATIO_TEST) num_nomask_test = int(num_nomask * RATIO_TEST) # 包括第十個的所有戴口罩和不帶口罩的路徑 fpath_train = fpath_mask[num_mask_test:] + fpath_nomask[num_nomask_test:] #包括第十個的所有戴口罩和不帶口罩的標簽 label_train = label_mask[num_mask_test:] + label_nomask[num_nomask_test:] # validation fpath_vali = fpath_mask[:num_mask_test] + fpath_nomask[:num_nomask_test] label_vali = label_mask[:num_mask_test] + label_nomask[:num_nomask_test] ways=16 for i in range(ways):pil_img1 = Image.open(fpath_train[i])out1 = pil_img1.resize((16,16)) num_img2 = np.asarray(out1)#將圖片轉為80*80*3的數組 #將num_img1由3維降為2維數組 num_img2= (num_img2.reshape(num_img2.shape[0], num_img2.shape[1] * num_img2.shape[2])) #使用0-1標準化 from sklearn import preprocessing min_max_scaler = preprocessing.MinMaxScaler() num_img4 = min_max_scaler.fit_transform(num_img2) #n_components為降維后需要的維度 n_components = 4 #svd_solver='auto':使用奇異值分解器。auto:SVD模式中的隨機模式 #whiten=True:白化會去除變換信號中的一些信息(分量的相對方差尺度),但在數據有比較強的相關性的假設下,有時可以提高下游估計器的性能。 pca1 = PCA(n_components=n_components, svd_solver='auto',whiten=True).fit(num_img4) #all_data_pca1維度的:80*16 all_data_pca1 = pca1.transform(num_img4) #3進行l1正則化 all_data_pca3 = preprocessing.normalize(all_data_pca1, norm='l1') ways=4 for i in range(ways):pil_img2 = Image.open(fpath_vali[i])out2 = pil_img2.resize((4,4)) num_img3 = np.asarray(out2) num_img3= (num_img3.reshape(num_img3.shape[0], num_img3.shape[1] * num_img3.shape[2])) from sklearn import preprocessing min_max_scaler = preprocessing.MinMaxScaler() num_img5 = min_max_scaler.fit_transform(num_img3) n_components = 4 pca2 = PCA(n_components=n_components, svd_solver='auto',whiten=True).fit(num_img5) #all_data_pca2維度為20*16 all_data_pca2 = pca2.transform(num_img5) all_data_pca4 = preprocessing.normalize(all_data_pca2, norm='l1') # 其中0.01為上面2.1小節提到的常數系數C,自己設置 from sklearn.ensemble import RandomForestClassifier RF = RandomForestClassifier(n_estimators=10000, random_state=0, n_jobs=-1)RF.fit(all_data_pca3,label_train) print("RandomForest",RF.score(all_data_pca4,label_vali))

總結

以上是生活随笔為你收集整理的随机森林图片分类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。