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

2020-09-24 14:00 更新

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

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

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

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

  1. import sklearn

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

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

  1. from sklearn.datasets import load_breast_cancer

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

  1. data = load_breast_cancer()

以下是字典鍵列表 -

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

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

  1. label_names = data['target_names']
  2. labels = data['target']
  3. feature_names = data['feature_names']
  4. features = data['data']

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

  1. print(label_names)

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

  1. ['malignant' 'benign']

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

  1. print(labels[0])
  2. 0

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

  1. print(feature_names[0])
  2. mean radius
  3. print(features[0])
  4. [ 1.79900000e+01 1.03800000e+01 1.22800000e+02 1.00100000e+03
  5. 1.18400000e-01 2.77600000e-01 3.00100000e-01 1.47100000e-01
  6. 2.41900000e-01 7.87100000e-02 1.09500000e+00 9.05300000e-01
  7. 8.58900000e+00 1.53400000e+02 6.39900000e-03 4.90400000e-02
  8. 5.37300000e-02 1.58700000e-02 3.00300000e-02 6.19300000e-03
  9. 2.53800000e+01 1.73300000e+01 1.84600000e+02 2.01900000e+03
  10. 1.62200000e-01 6.65600000e-01 7.11900000e-01 2.65400000e-01
  11. 4.60100000e-01 1.18900000e-01]

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

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

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

  1. from sklearn.model_selection import train_test_split

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

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

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

  1. from sklearn.naive_bayes import GaussianNB

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

  1. gnb = GaussianNB()

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

  1. model = gnb.fit(train, train_labels)

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

  1. preds = gnb.predict(test)
  2. print(preds)
  3. ## -- 結(jié)果如下
  4. [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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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ù)測值 - 惡性和良性。

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號