通過6步將分類器提高到80%的驗證準確度

2021-02-24 相約機器人

作者 | Ren Jie Tan

來源 | Towards Data Science

編輯 | 代碼醫生團隊

在這篇文章中,與大家分享一下作為數據科學家時所學到的一些技巧和竅門以及如何使用它們來快速增強模型。還將看到在德克薩斯大學達拉斯多模式人類行動數據集(UTD-MHAD)上進行人類活動分類的集合方法。該集合的驗證準確度為0.821,這是基線論文準確度為0.672的顯著改進。

https://www.utdallas.edu/~kehtar/UTD-MHAD.html

背景(問題)

任務是在UTD-MHAD上應用數據融合來構建一個模型來對27種不同的人類行為進行分類,就像所有拖延者一樣,把它留到了上周才開始這樣做。*最大壓力=最高生產力!*

 

UTD-MHAD是從Kinect相機和一個可穿戴慣性傳感器收集的開放數據集。該數據集包含由8名測試者執行的27個動作,每個測試者重複每次動作4次。在移除3個損壞的序列後,數據集留下861個數據序列。數據集包含4種數據模式,即:

 

RGB視頻

深度視頻

骨架關節位置

慣性傳感器信號

所有4種模態都是時間同步的,分別以.avi和.mat格式存儲。

 

任務:打敗0.672的基線準確度

該數據集附帶了一篇論文,該論文使用了協同表示分類器(CRC),其驗證準確度為0.672。這是根據列車驗證分組計算的,其中受試者1,3,5,7用於訓練,受試者2,4,6,8用於驗證,這也是必須擊敗的基線準確度!

所有人都興奮起來,立即上網開始尋找過去的代碼和教程。在網上花了大約30分鐘後,很快意識到沒有可重複使用的代碼!*壓力等級增加*。然後突然意識到必須從頭開始做這一切。趕緊拿出筆和筆記本,開始設計策略。

 

6個步驟概述

了解數據

快速原型

性能指標

自動化可以使用的部件,並將訓練發送給Google Colab

與同事討論獲取靈感

合併模型


第1步:了解數據

在開始任何事情之前,了解正在處理的內容非常重要。在這種情況下,最好的方法是繪製它!使用NumPy,SciPy和Matplotlib庫來有效地實現這些目標。以下是進行網球揮桿的對象的深度,骨架和慣性數據的圖。有關詳細信息,請參考GitHub庫。

https://github.com/notha99y/Multimodal_human_actions

網球揮桿的視頻截圖

網球揮桿的深度視頻

網球揮桿的骨架關節位置

 

網球揮桿的慣性傳感器信號

所以現在已經繪製了它們,必須將它們轉換為合適的格式來為模型提供信息。選擇是NumPy數組。對於這篇文章,將主要關注僅使用Skeleton和Inertial Data。對於RGB和深度視頻,需要特別注意創建VideoDataGenerator以從磁碟讀取它們,因為它們太大而無法加載到內存中。

 

骨架和慣性數據具有不同的周期,對於慣性傳感器,具有不同的幅度。直方圖繪製是顯示這些分布的有效方式。

 

期間分布

 

慣性傳感器數據的周期分布

這不應該是一個驚喜,因為這些是由不同主題執行的各種動作。該實驗也未指定應如何執行特定操作,因此猜測主題將根據自己的經驗執行操作。

 

由於模型需要固定的輸入形狀,所以這些不同的周期根本不會飛。有兩種策略可以解決這個問題:

 

將信號零填充到最大長度326

將信號重新採樣到平均180周期

幅度分布

 

3軸陀螺儀數據的幅度分布(上邊為最小值,下邊為最大值)

3軸加速度計數據的幅度分布(上邊的最小值,下邊的最大值)

振幅的分布類似於長尾。由于振幅不會影響輸入數據的形狀,因此可以選擇不對其應用任何預處理技術。否則諸如均值 - 方差歸一化的歸一化技術可以應用於預處理。

 

第2步:快速原型

正如精益創業方法所宣揚的那樣,「快速失敗,廉價失敗」。下一步是構建一個輕量級模型,允許快速迭代。Keras是用Python編寫的高級神經網絡包裝器,它將成為此任務的首選框架。Keras允許您使用乾淨,極簡主義的方法,只需幾行代碼即可構建龐大的深度學習模型。可以看到它在repo中的代碼實現中是多麼容易。也將它與Tensorflow後端一起使用。

 

首先只使用慣性數據。由於數據是6個通道的序列(加速度計的3軸+陀螺儀的3軸),要構建的第一個模型是Simple LSTM ,其中LSTM單元為512個隱藏單位。

def simple_LSTM():
    np.random.seed(7)
    model = Sequential(name = 'simple_LSTM')
    model.add(LSTM(512, input_shape=(None, 6), recurrent_dropout=0.5))
    model.add(Dense(len(activities), activation='softmax'))
    model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=1e-4), metrics=['accuracy'])
    print(model.summary())
    return model

Minimalist Keras Code實現Simple LSTM模型

 

簡單LSTM模型的網絡圖

 

第3步:性能指標

創建模型後,現在需要一個可靠的反饋系統來告知模型的執行情況。由於這是一個具有良好平衡的類別分布的分類任務,因此精度足以作為唯一的性能指標,而無需計算精度,召回或F1分數。

 

為了查看模型是否過度擬合,還可以獲得Train-Validation Accuracy-Loss圖。還可以繪製27級混淆矩陣,以查看哪些操作通常被錯誤分類為另一種。

 

簡單LSTM的訓練(藍色)和驗證(綠色)組的丟失(上)精度(下)圖

從準確度 - 損失圖中,可以看到模型在很早的時期過度擬合,驗證精度在第4時期後達到穩定水平。在第15期,得到了一個驗證精度為~0.238的模型,這與必須擊敗的基準0.672相差甚遠。

 

必須改變策略或應用更多正規化技術,例如Dropout圖層。

 

慣性數據上Simple LSTM模型的混淆矩陣

這個混亂矩陣看起來像一個掃雷遊戲的截圖!唯一的優點是「站立坐姿」和「坐姿站立」動作,模型分別預測16(完美分數)和13分。其他25項行動的表現非常糟糕。

 

在強調自己的壓力之前,退一步看看到目前為止我們做了什麼。

數據科學管道

剛剛從上面的流程圖中完成了從步驟1 - > 4開始的一次完整迭代,得到的第一個驗證精度為0.238。這不是理想的,但這是一個非常好的第一次開始。已經建立了一個高度迭代的數據科學管道,可以高效地探索,構建和評估項目。都同意數據科學是一個高度迭代的旅程。

 

有了這個基礎,現在可以創造性地嘗試不同的東西來改進模型。接下來的部分中,將向您展示使用這個迭代管道找到的所有關鍵結果。

 

預處理

通過這個管道,還發現與零填充相比,將序列重新採樣到180的平均值可以獲得更好的收斂。振幅歸一化導致模型性能沒有明顯改善,因此將跳過它以防止不必要的計算。

第4步:自動化可以使用的部件,訓練發送給Google Colab

由於很可能經常重複某些步驟,因此花一些時間並自動化它們是值得的。可以將某些經常使用的代碼轉換為腳本並對它們執行功能抽象。

 

Keras Callbacks

對於那些試圖深入學習的人來說,Keras的回調是最好的事情之一。它們是自動化模型訓練的工具,分享最喜歡的3個回調,這對各種項目非常有幫助。

 

首先是TensorBoard。這允許Keras保存一個事件日誌文件,該文件在培訓期間不斷更新,並且可以由TensorBoard讀取和查看。這允許您的模型訓練的實時,圖形可視化,我強烈推薦它作為替代,然後只從Keras的model.fit()輸出中查看它。

 

第二,ModelCheckpoint。這允許Keras模型將權重保存到給定的文件目錄。有一些有用的參數,例如`monitor`,save_best_only可以讓控制Keras如何保存重量。

 

最後但並非最不重要的是,EarlyStopping回調。這樣可以讓Keras根據指定的條件停止訓練。如下所示,設置 min_delta=0 和 patience=5。這意味著如果Keras發現模型的驗證準確度在5個時期之後沒有增加,那麼Keras將停止訓練。

 

通過這3個回調設置,可以安全地離開模型訓練。


from keras.callbacks import EarlyStopping
from keras.callbacks import TensorBoard
from keras.callbacks import ModelCheckpoint

LOG_DIR = os.path.join(os.getcwd(), 'logs')
tb = TensorBoard(LOG_DIR)

weights_dir = 'weights/' + model.name + \
            '-{epoch:02d}-{loss:.2f}.hdf5'
chkpt = ModelCheckpoint(filepath=weights_dir, monitor='loss', save_best_only=True, save_weights_only=True, mode='auto', period=1)

early_stop = EarlyStopping(monitor='val_acc', min_delta=0, patience=5)
history = model.fit(X_train, Y_train, epochs=50, batch_size=3, validation_data = (X_test, Y_test), callbacks=[tb, chkpt, early_stop])

有用的Keras回調


Google Colaboratory

眾所周知,訓練深度學習模型是一個非常耗費GPU的過程。幸運的是 Google Colaboratory免費提供了強大的TPU內核!對於那些買不起強大GPU的人,可以考慮將訓練運送到Google Colab。Google Colab還提供了一個熟悉的Jupyter筆記本式界面,使用起來非常直觀。它也安裝在 Google雲端硬碟上,因此可以輕鬆地將數據讀入Colab。重量和日誌也可以輕鬆保存。

https://colab.research.google.com/

 

第5步:與同事討論以獲得靈感

通過第2-4節中的快速原型製作和評估的半自動化管道,現在是時候獲得靈感並找到創新方法來提高模型的驗證準確性。Google不同的搜索字詞,或者訪問Google Scholar,Science Direct和Pubmed等門戶網站可以提供見解。與同事聊聊你的問題可能會給偶然的「尤裡卡」時刻。

 

正在與一位正在從事自然語言處理(NLP)項目的同事聊天,該項目給了嘗試雙向LSTM(BLSTM)的靈感(。BLSTM反轉原始隱藏層並連接它們,允許一種生成性深度學習形式,從而使輸出層同時獲得過去和未來狀態的信息。只需添加一層BLSTM,驗證精度就會增加到0.465。

 

雙向LSTM模型網絡圖

Conv LSTM模型的網絡圖

Conv LSTM模型

當添加Convolutional圖層進行特徵提取時,取得了重大突破。由於輸入數據是一維信號,該模型使用一系列一維卷積和一維最大池層來提取更高維度的潛在特徵,然後將它們輸入到捕獲時間信息的2個LSTM單元中。然後平坦化LSTM單元的輸出,並且在添加具有softmax激活的Dense層之前附加具有0.5的丟失率的Dropout層以對所有27個動作進行分類。

 

這使驗證精度達到0.700,僅僅是慣性數據,這是第一次超過0的CRC模型基線。對於所有的模型,使用AdamOptimizer,學習率為1e-4,β1為0.9,β2為0.999。使用Xavier Glorot初始化器初始化可訓練參數,並將批量大小設置為3以允許模型更好地推廣。

 

UNet LSTM模型

聯合國是一個完全卷積神經網絡(FCNN),在收縮和擴展路徑中幾乎是對稱的。在收縮路徑中,輸入通過一系列卷積和最大池化來饋送,增加了特徵圖並降低了圖像的解析度。這增加了「什麼」並減少了「哪裡」。在擴展路徑中,具有低解析度的高維特徵通過卷積核進行上採樣。在此操作期間,功能圖減少了。UNet的一個新特點是它在收縮路徑中實現了與擴展層的低維特徵圖的高維特徵的串聯。類似地將卷積網絡中提取的特徵添加到2個LSTM單元中,將輸出展平並附加Dropout層,其丟失率為0。5使用帶有softmax激活的Dense圖層完成所有27個操作的分類。在下面的附錄中附上了網絡圖。

 

UNet LSTM模型在慣性數據上的驗證準確度為0.712。

 

第6步:合併模型

由於Conv LSTM和UNet LSTM在驗證數據上表現相當不錯,可以通過取平均值來合併它們的softmax輸出。這立即將驗證精度提高到0.765!

 

對於大多數監督學習問題,整體方法傾向於優於單一模型方法。目前理解這是因為它能夠橫穿假設空間。一個集合能夠得出一個更好的假設,這個假設不在其構建的單一模型的假設空間中。

 

根據經驗,當模型之間存在多樣性時,集合傾向於產生更好的結果。從下面顯示的混亂矩陣中,可以看到Conv LSTM能夠採取向右滑動和更好地下蹲等動作,而UNet LSTM能夠採取像籃球射擊和更好地繪製x這樣的動作。這表明兩種模型之間存在模型多樣性,並且足夠真實,通過將它們集合在一起,得到的驗證精度從0.700和0.712到0.765!

 

Conv LSTM(上)和UNet LSTM(下)對慣性數據的混淆矩陣

下面是用來創建整體的等式。有關代碼實現,請參閱repo。

Conv LSTM和UNet LSTM的softmax輸出的平均值

動作j的Softmax輸出

結合Skeleton數據

為了實現標題中所述的承諾的80%驗證準確性,添加了Skeleton數據,並將其重新採樣到180個單位的時間段。在將其與6通道慣性數據融合後,得到(N,180,66)的輸入形狀,其中N是樣本數。下面彙編了所有驗證準確度的表格。

 

不同模型驗證準確性綜述

請注意,表現最佳的模型的混淆矩陣,驗證準確度為0.821,如下所示。

 

慣性+骨架數據上的集合混淆矩陣 

結論

如果已經完全按照這些步驟操作,那麼就可以成功構建自己的人體動作分類器!

Model zoo


簡單的LSTM

雙向LSTM

Conv LSTM

UNet LSTM

一些關鍵的要點


繪圖是一種快速簡便的方法來理解您的數據

數據科學是一個高度迭代的過程

自動化您可以做的事情

Ensemble是一種快速獲得最佳訓練模型的方法

使用Google Colab提高您的培訓速度

Keras是深度學習模型快速原型設計的首選框架

如果正在接受挑戰,並認為0.821還不夠,可以閱讀以下小節以改進模型。

 

還有什麼可以做的

A.過度擬合的問題

在整個訓練過程中,早期時期的過度擬合似乎是面臨的主要經常性挑戰。嘗試添加Dropout圖層和集成,以使模型更加通用,但仍然可以更進一步。當模型試圖學習可能沒用的高頻特徵時,過度擬合往往會發生。在所有頻率中添加具有零均值和數據點的高斯噪聲可以增強模型的學習能力。同樣即使是相同的活動,不同科目的時間順序也各不相同。使用時間縮放和轉換執行數據增加將增加訓練數據的數量,從而允許模型更好地推廣。

 

另外模型也可以進一步削減,以降低其複雜性,以及過度擬合的風險。

 

B. RGB和深度數據的數據融合

使用了Inertial,在最後添加了Skeleton,以便提供更多信息,以便找到渴望數據的模型。為了更多地推動模型,必須找到將其與深度和RGB數據融合的方法。這將允許更多的輸入訓練變量來學習和提取特徵,從而提高驗證的準確性。

 

C.嘗試其他合奏學習技巧

可以嘗試更先進的集成學習方法,例如Boosting和Bagging,而不是簡單的平均值。

附錄

UNet LSTM模型的網絡圖

《深度學習之TensorFlow:入門、原理與進階實戰》和《Python帶我起飛——入門、進階、商業實戰》兩本圖書是代碼醫生團隊精心編著的 AI入門與提高的精品圖書。配套資源豐富:配套視頻、QQ讀者群、實例源碼、 配套論壇:http://bbs.aianaconda.com   。更多請見:aianaconda.com

點擊「閱讀原文」配套圖書資源

相關焦點

  • 在Xcode裡創建圖像分類器的超簡易教程
    圖源:unsplash想創建圖像分類器又嫌麻煩?無需一行代碼,本文教你在Xcode裡創建圖像分類器。對於本文實例,應選擇第一項:Image Classifier(圖像分類器)。接下來就是給項目命名了!這一步無需多說。給項目命名後,會出現如下頁面:有一個選項為同時添加訓練數據和測試數據。此外,還可以添加額外的參數,比如圖像增廣後需要的迭代次數(這個模型需要自我重複多少次?)。
  • ICLR2020|分類器其實是基於能量的模型?判別式分類器設計新思路
    無需改變 f_θ,可通過下式復用這些 logit 來為數據點 x 和標籤 y 的聯合分布定義一個基於能量的模型:通過將 y 邊緣化,也可為 x 獲得一個非歸一化的密度模型:注意,現在任意分類器的 logit 都可被重新用於定義數據點 x 處的能量函數:由此,研究者就找到了每個標準的判別模型中隱藏的生成模型!
  • 如何在Julia中擬合隨機森林分類器
    這將是一條漫長的道路。我們先看看Julia在目前的狀態下所能提供的功能。最近讓我很驚喜的一個新功能是我們的項目上增加了一個隨機森林分類器。使用Lathe、數據幀和CSV,我們現在可以輕鬆地探索、編碼和預測各種特徵!數據為了使用機器學習模型,我們首先需要看一下獲取一些分類數據來訓練它。
  • Scikit-learn估計器分類
    為幫助用戶實現大量分類算法,scikit-learn把相關功能封裝成估計器。估計器用於分類任務,它主要包括兩個函數。(1)    fit() 訓練算法,接收訓練集和類別這兩個參數。(2)    predict() 參數為測試集。預測測試集類別,並返回測試集各條數據類別的數組。
  • 如何使用 Google 的 AutoAugment 改進圖像分類器
    本文將解釋什麼是數據增強,谷歌AutoAugment如何搜索最佳增強策略,以及如何將這些策略應用到您自己的圖像分類問題。數據增強(Data Augmentation)數據增強意味著在訓練機器學習模型時,對輸入數據隨機的應用各種變換。這種人為地擴大訓練數據,可以生成更多可能的輸入數據。它還有助於防止過度擬合,因為網絡幾乎從來不會看到完全相同的兩次輸入然後僅僅記住它們。
  • CS231N 01: 圖像分類器
    學習(Learning):任務是使用訓練集來學習每一類的樣子,這一步稱為訓練一個分類器,或者學習一個模型。評估(Evaluation):通過要求分類器預測一組新的、它從未見過的圖像的標籤來評估分類器的質量。然後,將這些圖像的真實標籤與分類器預測的標籤進行比較。
  • GPS定位器的準確度是由GPS模塊決定的嗎?
    GPS定位器能防盜,保障汽車安全,安裝了它,車主能運用電腦或手機隨時隨地得在APP或管理平臺上查詢汽車定位信息。為什麼GPS定位器能夠定位?其實是因為它內置的GPS定位模塊。GPS定位模塊應用的是特殊高科技技術,首要應用於位置定位。
  • 教你用Sklearn創建機器學習分類器模型!
    它通過遍歷標籤數組,並將第一個唯一標籤編碼為0,然後將下一個唯一標籤編碼為1,依此類推……使用 labelencoder 如下標準sklearn接口協議,你會很快熟悉。 我們可以通過在分類器上使用score()方法,從而快速了解該模型對數據的有效性。
  • 什麼是信號發生器?
    另外,信號源還可以按照輸出信號的類型分類,如射頻信號發生器、掃描信號發生器、頻率合成器、噪聲信號發生器、脈衝信號發生器等等。信號源也可以按照使用頻段分類,不同頻段的信號源對應不同應用領域。下面我們將對函數信號發生器和任意波形/函數發生器做簡要介紹:1、 函數信號發生器函數發生器是使用最廣的通用信號源,提供正弦波、鋸齒波、方波、脈衝波等波形,有的還同時具有調製和掃描功能。函數波形發生器在設計上分為模擬式和數字合成式。
  • 基於 Python 實踐感知器分類算法
    完成本教程後,您將知道:Perceptron分類器是一種線性算法,可以應用於二進位分類任務。如何使用帶有Scikit-Learn的Perceptron模型進行擬合,評估和做出預測。如何在給定的數據集上調整Perceptron算法的超參數。Perceptron算法是兩類(二進位)分類機器學習算法。它是一種神經網絡模型,可能是最簡單的神經網絡模型類型。
  • 如果血細胞分析儀變身智能化的機器人,臨檢室將會……
    為了提高計數準確度,我們還開發了一種驗證方法來避免框架重複計數。另外,我們用另一個數據集的圖像測試了訓練模型,以明確方法的普遍適用性。圖1是我們提出的基於深度學習的血細胞識別和計數系統。Zhao等人提出了基於卷積神經網絡(CNN)的WBC自動識別和分類方法,首先找出顯微圖像中的WBC,然後用CNN識別各種WBC。Habibzadeh等人介紹了一種WBC五分類系統,在這個過程中使用了三個分類器,包括兩個不同的SVM和一個CNN分類器。Habibzadeh等人利用預先訓練的CNN、ResNet和Inception Net計算分割圖像中的WBC數,利用顏色空間分析對圖像進行分割。
  • 小學一年級數學下冊分類口算練習題,提高孩子口算準確度!
    慢慢的你會發現孩子計算用時越來越短,準確度卻越來越高。堅持就會有變化!今天朱老師給大家分享的是,小學一年級數學下冊分類口算練習題,是數學課程裡的基礎重點練習,提高孩子口算準確度,快收藏給孩子練起來吧!
  • 人工智慧在肺癌診斷中的研究進展|人工智慧|肺結節|特異度|分類器|...
    研究對比發現,使用包含所有分析特徵的 GLCM 分析系統檢測肺結節準確率為 82.5%,而使用 CCSA 的 GLCM 特徵分析系統檢測準確率提高到了 90%,通過提取顯著的圖像特徵可以提高診斷率。,通過快速區域-卷積神經網絡(region convolutional neural network,R-CNN)進行檢測,並通過 U-Net 編解碼結構的 CMixNet 學習結節特徵,結節的分類是通過梯度增強機(gradient boosting machine,GBM)對從檢測的 3D CMixNet 結構中學習到的特徵進行的,並結合生理症狀和臨床生物標誌物進行最終判定。
  • Stata:機器學習分類器大全
    支持向量機學習方法包括由簡至繁的一系列模型:當訓練數據線性可分時,通過硬間隔最大化 (hard margin maximization) ,學習一個線性分類器,即線性可分支持向量機;當訓練數據近似線性可分時,通過軟間隔最大化 (soft margin maximization) ,也學習一個線性分類器,即線性支持向量機;當訓練數據線性不可分時,通過使用核方法 (kernel method) 及軟間隔最大化,學習非線性支持向量機。
  • 機器學習小白看過來,帶你全面了解分類器評價指標
    近日,towardsdatascience 上的一篇文章就深入介紹了分類器的評價指標,以及應該在什麼場景下使用,雷鋒網 AI 研習社將內容編譯整理如下:在本文中,你將了解到為什麼評價分類器比較困難;為什麼在大多數情況下,一個看起來分類準確率很高的分類器性能卻沒有那麼理想;什麼是正確的分類器評價指標;你應該在何時使用這些評價指標;如何創造一個你期望的高準確率的分類器。
  • SVM分類器原來這麼簡單!
    如左下圖所示,有兩類樣本數據(分別用橙色和藍色的小圓圈表示),我們可通過紅色或藍色兩條直線(L1或L2)將這兩類樣本數據分開。事實上,我們還可以畫出很多條直線將兩類樣本分開,也就是說,存在有多個可行的線性分類器能將兩類樣本分類。SVM的最終目標是:以間隔最大化為原則找到最合適的那個分類器。
  • BRAIN:機器學習:基於EEG的跨中心、跨方案的意識狀態分類器
    我們的研究第一次表明,基於非參數分類器的決策樹提供了魯棒的樣本外表現,預測的曲線下的面積(AUC)為0.77,但當使用不同的EEG配置(不同數量和位置的電極、分段數量,平均AUC = 0.750 ± 0.014)時,這一預測只達到邊緣顯著。在第二步中,我們觀測了基於多個和單個EEG特徵的分類器泛華到來自不同病人群、EEG實驗類型和不同中心的記錄數據。
  • 可提高實時時鐘長期計時準確度時鐘程序算法
    摘 要: 通過對引起實時時鐘計時誤差因數的分析,給出了一種提高實時時鐘長期計時準確度的實用而有效的軟體方法。高頻的時鐘源脈衝通過分頻器後產生基本定時脈衝。電子計時器的計時部分就是對基本定時脈衝進行累加,產生秒、分、時等時間信息乃至日、月、年等日期信息。1 引起計時誤差的因數  一個常規電子計時器的計時準確度,取決於晶振標稱頻率(fs)與實際頻率(fo)的頻率偏差和晶振頻率的時漂、溫漂等離散參數。
  • 【Geometric GAN】引入線性分類器SVM的Geometric GAN
    與經典的生成模型不同(如變分自編碼器),生成式對抗網絡通過極小-極大化問題將判別器的性能轉移給生成器,顯著提高了生成器的性能,極小-極大化問題優化目標為:3 Mean feature matching GAN(McGAN
  • 使用K-近鄰算法構建鳶尾屬分類器
    鳶尾屬分類器以鳶尾屬數據集為樣本數據,將數據集分為兩部分:一部分用於歸類訓練,一部分用於歸類測試。訓練數據集為:train_Iris.csv測試數據集為:test_ Iris.csv如何設計一個自動分類算法呢?設想一下,若待分類的數據特徵與樣本數據之間的距離很小,說明兩者的特徵值相似,可以考慮將待分類的數據歸類為樣本數據所屬類別。