W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在本章中,我們將重點(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()
以下是字典鍵列表 -
現(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)制值 0
和 1
。這里 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]
上述 0
和 1
系列是腫瘤類別的預(yù)測(cè)值 - 惡性和良性。
現(xiàn)在,通過(guò)比較兩個(gè)數(shù)組即 test_labels
和 preds
,可以發(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)建分類器。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: