AI人工智能 在Python中構(gòu)建分類器的步驟

2020-09-24 14:00 更新

在本章中,我們將重點(diǎn)討論監(jiān)督式學(xué)習(xí) - 分類。

分類技術(shù)或模型試圖從觀測(cè)值中得出一些結(jié)論。 在分類問(wèn)題中,我們有分類輸出,如“黑色”或“白色”或“教學(xué)”和“非教學(xué)”。 在構(gòu)建分類模型時(shí),需要有包含數(shù)據(jù)點(diǎn)和相應(yīng)標(biāo)簽的訓(xùn)練數(shù)據(jù)集。 例如,如果想檢查圖像是否屬于汽車。 要實(shí)現(xiàn)這個(gè)檢查,我們將建立一個(gè)訓(xùn)練數(shù)據(jù)集,其中包含與“車”和“無(wú)車”相關(guān)的兩個(gè)類。 然后需要使用訓(xùn)練樣本來(lái)訓(xùn)練模型。 分類模型主要用于人臉識(shí)別,垃圾郵件識(shí)別等。

為了在 Python 中構(gòu)建分類器,將使用 Python 3 和 Scikit-learn,這是一個(gè)用于機(jī)器學(xué)習(xí)的工具。 按照以下步驟在 Python 中構(gòu)建分類器 -

第1步 - 導(dǎo)入 Scikit-learn 這將是在 Python 中構(gòu)建分類器的第一步。 在這一步中,將安裝一個(gè)名為 Scikit-learn 的 Python包,它是 Python中最好的機(jī)器學(xué)習(xí)模塊之一。 以下命令導(dǎo)入包 -

import sklearn

第2步 - 導(dǎo)入 Scikit-learn 的數(shù)據(jù)集

在這一步中,我們可以開始使用機(jī)器學(xué)習(xí)模型的數(shù)據(jù)集。 在這里,將使用乳腺癌威斯康星診斷數(shù)據(jù)庫(kù)。 數(shù)據(jù)集包括有關(guān)乳腺癌腫瘤的各種信息,以及惡性或良性分類標(biāo)簽。 該數(shù)據(jù)集在 569 個(gè)腫瘤上具有 569 個(gè)實(shí)例或數(shù)據(jù),并且包括關(guān)于 30 個(gè)屬性或特征(諸如腫瘤的半徑,紋理,光滑度和面積)的信息。 借助以下命令,導(dǎo)入 Scikit-learn的乳腺癌數(shù)據(jù)集 -

from sklearn.datasets import load_breast_cancer

現(xiàn)在,以下命令將加載數(shù)據(jù)集。

data = load_breast_cancer()

以下是字典鍵列表 -

  • 分類標(biāo)簽名稱(target_names)
  • 實(shí)際標(biāo)簽(目標(biāo))
  • 屬性/功能名稱(feature_names)
  • 屬性(數(shù)據(jù))

現(xiàn)在,使用以下命令,可以為每個(gè)重要信息集創(chuàng)建新變量并分配數(shù)據(jù)。 換句話說(shuō),可以用下列命令組織數(shù)據(jù) -

label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']

現(xiàn)在,為了使它更清晰,可以使用以下命令來(lái)打印類標(biāo)簽,第一個(gè)數(shù)據(jù)實(shí)例的標(biāo)簽,我們的功能名稱和功能的值 -

print(label_names)

上述命令將分別打印惡性和良性的分類名稱。輸出結(jié)果如下 -

['malignant' 'benign']

現(xiàn)在,下面的命令將顯示它們被映射到二進(jìn)制值 01。這里 0 表示惡性腫瘤,1 表示良性癌癥。得到以下輸出 -

print(labels[0])
0

下面給出的兩個(gè)命令將生成功能名稱和功能值。

print(feature_names[0])
mean radius
print(features[0])
[ 1.79900000e+01 1.03800000e+01 1.22800000e+02 1.00100000e+03
  1.18400000e-01 2.77600000e-01 3.00100000e-01 1.47100000e-01
  2.41900000e-01 7.87100000e-02 1.09500000e+00 9.05300000e-01
  8.58900000e+00 1.53400000e+02 6.39900000e-03 4.90400000e-02
  5.37300000e-02 1.58700000e-02 3.00300000e-02 6.19300000e-03
  2.53800000e+01 1.73300000e+01 1.84600000e+02 2.01900000e+03
  1.62200000e-01 6.65600000e-01 7.11900000e-01 2.65400000e-01
  4.60100000e-01 1.18900000e-01]

從上面的輸出中,可以看到第一個(gè)數(shù)據(jù)實(shí)例是一個(gè)半徑為 1.7990000e + 01 的惡性腫瘤。

第3步 - 組織數(shù)據(jù)

在這一步中,將把數(shù)據(jù)分成兩部分,即訓(xùn)練集和測(cè)試集。 將數(shù)據(jù)分割成這些集合非常重要,因?yàn)楸仨氃谖纯吹降臄?shù)據(jù)上測(cè)試模型。要將數(shù)據(jù)分成集合,sklearn 有一個(gè)叫做 train_test_split() 函數(shù)的函數(shù)。 在以下命令的幫助下,可以分割這些集合中的數(shù)據(jù) -

from sklearn.model_selection import train_test_split

上述命令將從 sklearn 中導(dǎo)入 train_test_split 函數(shù),下面的命令將數(shù)據(jù)分解為訓(xùn)練和測(cè)試數(shù)據(jù)。 在下面給出的例子中,使用 40% 的數(shù)據(jù)進(jìn)行測(cè)試,其余數(shù)據(jù)將用于訓(xùn)練模型。

train, test, train_labels, test_labels = train_test_split(features,labels,test_size = 0.40, random_state = 42)

第4步 - 建立模型 在這一步中,我們將建立模型。使用樸素貝葉斯算法來(lái)構(gòu)建模型。 以下命令可用于構(gòu)建模型 -

from sklearn.naive_bayes import GaussianNB

上述命令將導(dǎo)入 GaussianNB 模塊。 現(xiàn)在,以下命令用來(lái)初始化模型。

gnb = GaussianNB()

將通過(guò)使用 gnb.fit() 將它擬合到數(shù)據(jù)來(lái)訓(xùn)練模型。

model = gnb.fit(train, train_labels)

第5步 - 評(píng)估模型及其準(zhǔn)確性 在這一步中,我們將通過(guò)對(duì)測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè)來(lái)評(píng)估模型。為了做出預(yù)測(cè),我們將使用 predict() 函數(shù)。 以下命令做到這一點(diǎn) -

preds = gnb.predict(test)
print(preds)
## -- 結(jié)果如下
[1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1
 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 
 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 
 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 
 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 
 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 
 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 
 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1]

上述 01 系列是腫瘤類別的預(yù)測(cè)值 - 惡性和良性。

現(xiàn)在,通過(guò)比較兩個(gè)數(shù)組即 test_labelspreds,可以發(fā)現(xiàn)模型的準(zhǔn)確性。使用 accuracy_score() 函數(shù)來(lái)確定準(zhǔn)確性。 考慮下面的命令 -

from sklearn.metrics import accuracy_score
print(accuracy_score(test_labels,preds))
0.951754385965

結(jié)果顯示 Na?veBayes 分類器準(zhǔn)確率為 95.17%。

通過(guò)這種方式,借助上述步驟,我們可以使用 Python 構(gòu)建分類器。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)