<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python|Pandas|Tensorflow實現(xiàn)新冠病毒檢測實戰(zhàn)

          共 9674字,需瀏覽 20分鐘

           ·

          2021-08-10 21:09

          介紹
          Covid 是一種致命的疾病,會影響呼吸系統(tǒng)。檢測一個人是否患有新冠病毒非常重要。在本博客中,我們將確定一個人是否患有新冠肺炎。

          輸入

          讓我們導(dǎo)入執(zhí)行任務(wù)所需的工具。
          import pandas as pd
          import numpy as np
          from keras.preprocessing.image import ImageDataGenerator
          from tensorflow.keras.applications import ResNet50
          from tensorflow.python.keras.models import Sequential
          from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D
          from tensorflow.keras.applications import ResNet50
          import tensorflow as tf
          import matplotlib.pyplot as plt

          讀取數(shù)據(jù)

          train_data=pd.read_csv("Training_set_covid.csv")
          print(train_data)

          由于我們只有圖像文件的名稱和它們的標簽,讓我們添加一個由它們的文件路徑組成的列。我們可以使用 ImageDataGenerator 加載圖像。
          train_data["filepath"]="train/"+train_data["filename"]
          print(train_data)

          我已經(jīng)用“file-path”替換了實際的文件路徑。

          數(shù)據(jù)增強

          由于我們的數(shù)據(jù)很少,我正在擴充我的數(shù)據(jù)并創(chuàng)建一個變量來存儲訓練和驗證圖像
          train_datagen=ImageDataGenerator(validation_split=0.2,zoom_range=0.2,rescale=1./255.,horizontal_flip=True)
          在這里,我們將縮放范圍設(shè)置為 0.2,并將圖像重新縮放為 1/255 大小,并制作了訓練圖像的 20% 的驗證集。
          train_data["label"]=train_data["label"].astype(str)
          上面的代碼會將我們的 int 標簽轉(zhuǎn)換為字符串類型。

          加載圖像

          train_images=train_datagen.flow_from_dataframe(train_data,x_col="filepath",batch_size=8,target_size=(255,255),class_mode="binary",shuffle=True,subset='training',y_col="label")
          valid_images=train_datagen.flow_from_dataframe(train_data,x_col="filepath",batch_size=8,target_size=(255,255),class_mode="binary",shuffle=True,subset='validation',y_col="label")
          在這里,我們創(chuàng)建了 2 個數(shù)據(jù)流、1 個訓練集和另一個驗證集。為此我們設(shè)置了一些參數(shù)。參數(shù)如:
          1. Batch Size –> 8
          2. Target Size (Image size) –> (255,255)
          3. Shuffle –> True
          4. Class Mode –> Binary
          由于我們只有 2 個目標屬性,因此我們設(shè)置了類模式 Binary。
          Resnet50 將 (255,255) 作為輸入形狀,因此我們的圖像大小為 (255,255)。
          Shuffle 設(shè)置為 True,以足夠好地對圖像進行打亂,以便兩個集合都有不同的圖像。

          RESNET50

          讓我們加載我們的 ResNet50 模型。但在進入代碼路徑之前,請訪問 https://www.mygreatlearning.com/blog/resnet/以了解 ResNet50 是什么以及它是如何工作的。
          base_model = ResNet50(input_shape=(225225,3), include_top=False, weights="imagenet")
          for layer in base_model.layers:
              layer.trainable = False

          base_model = Sequential()
          base_model.add(ResNet50(include_top=False, weights='imagenet', pooling='max'))
          base_model.add(Dense(1, activation='sigmoid'))
          base_model.compile(optimizer = tf.keras.optimizers.SGD(lr=0.0001), loss = 'binary_crossentropy', metrics = ['acc'])
          base_model.summary()
          讓我們理解這個代碼塊。
          首先,我們將使用我們的輸入形狀和權(quán)重加載一個基本模型。在這里,我們使用了image-net權(quán)重。我們已經(jīng)移除了頂部,因為我們將添加我們的輸出層。
          然后,我們將所有基礎(chǔ)模型層設(shè)置為不可訓練,因為我們不想覆蓋加載時導(dǎo)入的權(quán)重。
          現(xiàn)在,我們正在創(chuàng)建我們的基礎(chǔ)模型,我們添加一個 50 個單元的 Dense 層來創(chuàng)建一個全連接層,該層連接到我們的輸出密集層,具有 1 個單元和 Sigmoid 作為激活函數(shù)。
          然后我們用 SGD 優(yōu)化器和一些微調(diào)和二進制交叉熵作為損失函數(shù)編譯它。
          這是我們的模型的外觀:
          Model: "sequential_1"
          _________________________________________________________________
          Layer (type)                 Output Shape              Param #   
          =================================================================
          resnet50 (Functional)        (None2048)              23587712  
          _________________________________________________________________
          dense_1 (Dense)              (None1)                 2049      
          =================================================================
          Total params: 23,589,761
          Trainable params: 23,536,641
          Non-trainable params: 53,120
          _________________________________________________________________

          訓練

          resnet_history = base_model.fit(train_images, validation_data = valid_images, steps_per_epoch =int(train_images.n/8), epochs = 20)
          讓我們用驗證集訓練我們的模型,訓練圖像并驗證它們。有 20 個 epoch,每個 epoch 的步數(shù)設(shè)置為訓練樣本數(shù)/8 以進行平衡,批量大小為 8。
          Epoch 1/20
          348/348 [==============================] - 162453ms/step - loss: 0.7703 - acc: 0.8588 - val_loss: 1.2608 - val_acc: 0.8791
          Epoch 2/20
          348/348 [==============================] - 84242ms/step - loss: 0.3550 - acc: 0.9198 - val_loss: 2.8488 - val_acc: 0.4518
          Epoch 3/20
          348/348 [==============================] - 84241ms/step - loss: 0.3501 - acc: 0.9229 - val_loss: 1.0196 - val_acc: 0.7007
          Epoch 4/20
          348/348 [==============================] - 84241ms/step - loss: 0.3151 - acc: 0.9207 - val_loss: 0.5498 - val_acc: 0.8633
          Epoch 5/20
          348/348 [==============================] - 85245ms/step - loss: 0.2376 - acc: 0.9281 - val_loss: 0.4247 - val_acc: 0.9094
          Epoch 6/20
          348/348 [==============================] - 86246ms/step - loss: 0.2273 - acc: 0.9248 - val_loss: 0.3911 - val_acc: 0.8978
          Epoch 7/20
          348/348 [==============================] - 86248ms/step - loss: 0.2166 - acc: 0.9319 - val_loss: 0.2936 - val_acc: 0.9295
          Epoch 8/20
          348/348 [==============================] - 87251ms/step - loss: 0.2016 - acc: 0.9389 - val_loss: 0.3025 - val_acc: 0.9281
          Epoch 9/20
          348/348 [==============================] - 87249ms/step - loss: 0.1557 - acc: 0.9516 - val_loss: 0.2762 - val_acc: 0.9281
          Epoch 10/20
          348/348 [==============================] - 85243ms/step - loss: 0.1802 - acc: 0.9418 - val_loss: 0.3382 - val_acc: 0.9353
          Epoch 11/20
          348/348 [==============================] - 84242ms/step - loss: 0.1430 - acc: 0.9586 - val_loss: 0.3222 - val_acc: 0.9324
          Epoch 12/20
          348/348 [==============================] - 85243ms/step - loss: 0.0977 - acc: 0.9695 - val_loss: 0.2110 - val_acc: 0.9410
          Epoch 13/20
          348/348 [==============================] - 85245ms/step - loss: 0.1227 - acc: 0.9572 - val_loss: 0.2738 - val_acc: 0.9281
          Epoch 14/20
          348/348 [==============================] - 86246ms/step - loss: 0.1396 - acc: 0.9558 - val_loss: 0.2508 - val_acc: 0.9439
          Epoch 15/20
          348/348 [==============================] - 86247ms/step - loss: 0.1173 - acc: 0.9578 - val_loss: 0.2025 - val_acc: 0.9381
          Epoch 16/20
          348/348 [==============================] - 86246ms/step - loss: 0.1038 - acc: 0.9604 - val_loss: 0.2658 - val_acc: 0.9439
          Epoch 17/20
          348/348 [==============================] - 86247ms/step - loss: 0.0881 - acc: 0.9707 - val_loss: 0.2997 - val_acc: 0.9309
          Epoch 18/20
          348/348 [==============================] - 87249ms/step - loss: 0.1036 - acc: 0.9627 - val_loss: 0.2527 - val_acc: 0.9367
          Epoch 19/20
          348/348 [==============================] - 87251ms/step - loss: 0.0848 - acc: 0.9736 - val_loss: 0.2461 - val_acc: 0.9439
          Epoch 20/20
          348/348 [==============================] - 87250ms/step - loss: 0.0742 - acc: 0.9736 - val_loss: 0.2483 - val_acc: 0.9439
          我們有很好的結(jié)果。讓我們看看它的圖表。

          性能圖

          精度圖

          plt.plot(resnet_history.history["acc"],label="train")
          plt.plot(resnet_history.history["val_acc"],label="val")
          plt.title("Training Accuracy and Validation Accuracy")
          plt.legend()
          我們有很好的訓練和驗證準確性。

          損失

          plt.plot(resnet_history.history["loss"],label="train")
          plt.plot(resnet_history.history["val_loss"],label="val")
          plt.title("Training Loss and Validation Loss")
          plt.legend()
          而且損失少。

          結(jié)論

          即使如此少的數(shù)據(jù),ResNet50 也給出了令人滿意的結(jié)果。
          數(shù)據(jù)取自 https://dphi.tech/challenges/data-sprint-15-covid-19-x-ray-dataset/44/overview/about
          ···  END  ···


          長按加群,交流學習

          推薦閱讀:
          一、Number(數(shù)字)
          全面掌握Python基礎(chǔ),這一篇就夠了,建議收藏
          Python基礎(chǔ)之數(shù)字(Number)超級詳解
          Python隨機模塊22個函數(shù)詳解
          Python數(shù)學math模塊55個函數(shù)詳解
          二、String(字符串)
          Python字符串的45個方法詳解
          Pandas向量化字符串操作
          三、List(列表)
          超級詳解系列-Python列表全面解析
          Python輕量級循環(huán)-列表推導(dǎo)式
          四、Tuple(元組)
          Python的元組,沒想象的那么簡單
          五、Set(集合)
          全面理解Python集合,17個方法全解,看完就夠了
          六、Dictionary(字典)
          Python字典詳解-超級完整版
          七、內(nèi)置函數(shù)
          Python初學者必須吃透這69個內(nèi)置函數(shù)!
          八、正則模塊
          Python正則表達式入門到入魔
          筆記 | 史上最全的正則表達式
          八、系統(tǒng)操作
          Python之shutil模塊11個常用函數(shù)詳解
          Python之OS模塊39個常用函數(shù)詳解
          九、進階模塊
          【萬字長文詳解】Python庫collections,讓你擊敗99%的Pythoner
          高手如何在Python中使用collections模塊

          掃描關(guān)注本號↓

          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  走光无码一区二区三区 | 免费黄色一区二区成人网站18禁 | 亚州免费视频 | 美女扒开粉嫩尿囗桶爽免费网站 | 中文字幕第59页 |