使用kNN對(duì)鳶尾花分類

學(xué)習(xí)目標(biāo)

  1. 如何創(chuàng)建數(shù)據(jù)挖掘工作流?
  2. 如何使用文件組件加載數(shù)據(jù)集?
  3. 什么是特征?
  4. 使用散點(diǎn)圖組件使用“信息投影”實(shí)現(xiàn)數(shù)據(jù)數(shù)據(jù)分類?

問題描述

你是一名植物學(xué)愛好者,對(duì)鳶尾花(Iris)的品種很感興趣,你收集了一些鳶尾花的以下測(cè)量數(shù)據(jù):

  • 花瓣的長(zhǎng)度
  • 花瓣的寬度
  • 花萼的長(zhǎng)度
  • 花萼的寬度

所有測(cè)量結(jié)果的單位都是厘米

萼長(zhǎng) 萼寬 瓣長(zhǎng) 瓣寬 類別
5.1 3.5 1.4 0.2 ?
4.9 3 1.4 0.2 ?
screenshot_1587734582109.png

你還有一些鳶尾花分類的測(cè)量數(shù)據(jù),這些花已經(jīng)被植物學(xué)專家鑒定為屬于Iris setosa(山鳶尾)、Iris versicolor(變色鳶尾)或 Iris virginica(維吉尼亞鳶尾花)三個(gè)品種之一。對(duì)于這些測(cè)量數(shù)據(jù),你可以確定每朵鳶尾花所屬的品種。

現(xiàn)在的問題,你想知道采集的鳶尾花是不是這些已知的品種,如果是,是哪一種。

模型(model)

我們的目標(biāo)是構(gòu)建一個(gè)機(jī)器學(xué)習(xí)模型,可以從這些已知品種的鳶尾花測(cè)量數(shù)據(jù)中進(jìn)行學(xué)習(xí),從而能夠預(yù)測(cè)新鳶尾花的品種。因?yàn)槲覀冇幸阎镍S尾花的測(cè)量數(shù)據(jù),所以這是一個(gè)監(jiān)督學(xué)習(xí)問題。

類別(class)

在這個(gè)問題中,我們要在多個(gè)選項(xiàng)中預(yù)測(cè)其中一個(gè)(鳶尾花的品種),這是一個(gè)分類(classification)問題的示例??赡艿妮敵?鳶尾花的品種)叫做類別(class)。數(shù)據(jù)集中的每朵鳶尾花都屬于三個(gè)類別之一,所以這是一個(gè)三分類問題。

標(biāo)簽(label)

單個(gè)數(shù)據(jù)點(diǎn)(一朵鳶尾花)的預(yù)期輸出是這朵花的品種。對(duì)于一個(gè)數(shù)據(jù)點(diǎn)來說,它的品種叫做標(biāo)簽(label)。

特征(feature)

采集到的鳶尾花數(shù)據(jù)包含:萼長(zhǎng)、萼寬、瓣長(zhǎng)、瓣寬4個(gè)特征,我們選擇 瓣長(zhǎng)、瓣寬兩個(gè)屬性,并以瓣寬為X軸,瓣長(zhǎng)為Y軸在二維平面上將這些樣本繪制出來,從圖中可以看出變色鳶尾花和維吉利亞鳶尾花兩個(gè)類別的有一部分樣本混合在一起,而山鳶尾花和其它兩個(gè)類別的花能夠能夠很好的區(qū)分開來。

使用散點(diǎn)圖可以可視化查看測(cè)試數(shù)據(jù),由于采集到的樣本有四個(gè)屬性,是一個(gè)4維的向量,不能在平面上展示出來,因此我們?nèi)斯みx擇瓣長(zhǎng)、瓣寬兩個(gè)屬性分別作為x和y軸的屬性,從而在散點(diǎn)圖上展示樣本的分布情況。

通過查找信息投影(Find Information Projections)按鈕自動(dòng)選擇最具有分辨能力的兩個(gè)特征:瓣長(zhǎng)、瓣寬。

screenshot_1590981938297.png

接下來我們通過k近鄰算法用機(jī)器來統(tǒng)計(jì)有多少花能夠正確的分類,識(shí)別的正確率有多少。

kNN 算法

算法

k 近鄰(kNN)算法把每個(gè)樣例看做是空間上的一個(gè)點(diǎn),給定一個(gè)測(cè)試樣例,使用適當(dāng)?shù)泥徑远攘克惴?,?jì)算出該點(diǎn)與訓(xùn)練集中其他點(diǎn)的鄰近度。選擇 K 個(gè)最相近的點(diǎn)。在選擇出的 K 個(gè)樣例中,比例最好的類就是測(cè)試樣例的類。

從以上描述中可以看出,如果 k 選擇的太小,該算法容易受到噪聲的影響,而產(chǎn)生過度擬合的影響,然而如果選擇的過大,可能造成誤分類。

算法描述

k是最近鄰數(shù)目,D是訓(xùn)練樣例的集合,z是測(cè)試樣例
for 樣例 in 訓(xùn)練樣例集合:
    計(jì)算 z和每個(gè)樣例的相似度
找到k個(gè)最相近的樣例集合
k個(gè)樣例中類標(biāo)號(hào)最多的類,就是測(cè)試樣例的類標(biāo)號(hào)

實(shí)驗(yàn)與評(píng)估

實(shí)驗(yàn)平臺(tái)

  • Orange(http://orange.biolab.si/)由斯洛文尼亞大學(xué)計(jì)算與信息學(xué)系的生物信息實(shí)驗(yàn)室BioLab開發(fā),是一個(gè)基于組件的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)軟件套裝,支持 Python 進(jìn)行腳本開發(fā)。
  • Orange是一個(gè)開源的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)軟件。Orange 基于 Python 和 C/C++ 開發(fā),提供了一系列的數(shù)據(jù)探索、可視化、預(yù)處理以及建模組件。Orange 擁有漂亮直觀的交互式用戶界面,非常適合新手進(jìn)行探索性數(shù)據(jù)分析和可視化展示;同時(shí)高級(jí)用戶也可以將其作為 Python 的一個(gè)編程模塊進(jìn)行數(shù)據(jù)操作和組件開發(fā)。
  • 從 3.0 版本開始使用 Python 代碼庫進(jìn)行科學(xué)計(jì)算,例如 numpy、scipy 以及 scikit-learn,前端的圖形用戶界面使用跨平臺(tái)的 Qt 框架。
  • Orange 支持 Windows、macOS 以及 Linux 平臺(tái)。

建議使用Anaconda集成環(huán)境,通過Anaconda Navigator 安裝Orange軟件。

Iris 數(shù)據(jù)集

本教程使用標(biāo)準(zhǔn)的Iris數(shù)據(jù)集,Iris 數(shù)據(jù)集是常用的分類實(shí)驗(yàn)數(shù)據(jù)集,由 Fisher, 1936 收集整理。Iris 也稱鳶尾花卉數(shù)據(jù)集,是一類多重變量分析的數(shù)據(jù)集。Iris 數(shù)據(jù)集包含三個(gè)花的品種,每個(gè)品種各 50 個(gè)樣本,共計(jì)150個(gè)樣本,每個(gè)樣本四個(gè)特征參數(shù):萼片長(zhǎng)度和寬度、花瓣長(zhǎng)度和寬度

  • Iris setosa(山鳶尾)
  • Iris virginica(維吉尼亞鳶尾花)
  • Iris versicolor(變色鳶尾)

實(shí)驗(yàn)設(shè)計(jì)

實(shí)驗(yàn)?zāi)P蛨D

screenshot_1590974874686.png

添加文件組件

添加 File 組件,并設(shè)置數(shù)據(jù)源為 Orange 內(nèi)置的測(cè)試數(shù)據(jù)集 Iris (英文)或者我們提供的 Iris.csv (中文)文件。

  • 在 Orange 面板上找到 File 組件,并拖放到操作面板上
  • 雙擊 File 圖標(biāo),選擇數(shù)據(jù)文件
  • 將類別這一列的 Role(角色)設(shè)置為 target(目標(biāo))

通過給文件(File)組件連接一個(gè)數(shù)據(jù)表( Data Table) 組件可以觀察數(shù)據(jù),通過給文件組件連接一個(gè)散點(diǎn)圖(Scatter Plot),可以觀察數(shù)據(jù)的分布情況。

雙擊File組件,設(shè)置文件的地址為我們提供的iris.csv文件,如圖所示,鳶尾花數(shù)據(jù)集(Iris)包含四個(gè)特征(feature)列和一個(gè)目標(biāo)列(target)。

這里需要手動(dòng)雙擊“類別”的角色(Role)更改為 target,告訴系統(tǒng)類別是我們識(shí)別的目標(biāo)分類屬性,它是目錄化(categorical)的特征,一共有3種取值(數(shù)據(jù)只有3類),分別是變色鳶尾花、山鳶尾花、維吉尼亞鳶尾花。

screenshot_1590944997297.png

算法評(píng)估

從評(píng)估(Evaluate)面板組中拖動(dòng)測(cè)試與評(píng)分(Test and Score)組件到工作臺(tái),并從模型(Model)面板組中拖動(dòng)k近鄰分類器(kNN)組件到工作臺(tái),并參考實(shí)驗(yàn)?zāi)P蛨D建立組件之間的關(guān)聯(lián),雙擊測(cè)試與評(píng)分(Test and Score)組件,可以看到kNN算法的執(zhí)行結(jié)果,精確度(Precision)為0.953,即95.3%的樣本能夠被正確的識(shí)別,這個(gè)模型也算是不錯(cuò)了,這個(gè)過程我們沒有寫任何代碼。

screenshot_1590977934161.png

最后我們從評(píng)估(Evaluate)面板組中拖動(dòng)混淆矩陣(Confusion Matrix)組件到工作臺(tái),并建立連接,雙擊混淆矩陣組件,我們發(fā)現(xiàn)一共有7個(gè)樣本被識(shí)別錯(cuò)誤。其中有3個(gè)實(shí)際上是維吉利亞鳶尾花被識(shí)別為變色鳶尾花,有4朵實(shí)際上是變色鳶尾花被識(shí)別為維吉利亞鳶尾花,而所有的山鳶尾花都被正確的識(shí)別。

screenshot_1590978618243.png

選擇誤分類(Select Misclassified)的按鈕,打開數(shù)據(jù)表(Data Table)組件,可以查看那些樣本被錯(cuò)誤分類,并分析其原因。


screenshot_1590981445576.png

至此,一個(gè)完整的機(jī)器學(xué)習(xí)任務(wù)的就完成了,下一篇,我們將介紹應(yīng)用決策樹幫助老師對(duì)學(xué)生分組,實(shí)施差異化教學(xué)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容