摘要:使用該數據集,我們將構建機器學習模型以使用腫瘤信息來預測腫瘤是惡性的還是良性的。我們將使用函數來確定機器學習分類器的準確性。您已成功構建了第一臺機器學習分類器。現在,您可以使用在中加載數據組織數據訓練預測和評估機器學習分類器。
歡迎大家前往騰訊云+社區,獲取更多騰訊海量技術實踐干貨哦~
本文由信姜緣 發表于云+社區專欄介紹
機器學習是計算機科學、人工智能和統計學的研究領域。機器學習的重點是訓練算法以學習模式并根據數據進行預測。機器學習特別有價值,因為它讓我們可以使用計算機來自動化決策過程。
在本教程中,您將使用Scikit-learn(Python的機器學習工具)在Python中實現一個簡單的機器學習算法。您將使用Naive Bayes(NB)分類器,結合乳腺癌腫瘤信息數據庫,預測腫瘤是惡性還是良性。
在本教程結束時,您將了解如何使用Python構建自己的機器學習模型。關于Python的語法詳見騰訊云開發者手冊Python中文開發文檔。
準備要完成本教程,您需要:
Python 3 本地編程環境
在virtualenv中安裝Jupyter Notebook。Jupyter Notebooks在運行機器學習實驗時非常有用。您可以運行短代碼塊并快速查看結果,從而輕松測試和調試代碼。
第一步 - 導入Scikit-learn讓我們首先安裝Python模塊Scikit-learn,這是Python 最好、文檔記錄最多的機器學習庫之一。
要開始我們的編碼項目,先要激活我們的Python 3編程環境。確保您位于環境所在的目錄中,然后運行以下命令:
$ . my_env/bin/activate
激活我們的編程環境后,檢查是否已安裝Sckikit-learn模塊:
(my_env) $ python -c "import sklearn"
如果sklearn已安裝,則此命令將完成且沒有錯誤。如果未安裝,您將看到以下錯誤消息:
Traceback (most recent call last): File "", line 1, in ImportError: No module named "sklearn"
錯誤消息表明sklearn未安裝,因此請使用pip下載庫:
(my_env) $ pip install scikit-learn[alldeps]
安裝完成后,啟動Jupyter Notebook:
(my_env) $ jupyter notebook
在Jupyter中,創建一個名為ML Tutorial的新Python Notebook。在Notebook的第一個單元格,輸入sklearn模塊:
ML Tutorial
import sklearn
您的 Notebook應如下圖所示:
Notebook
現在我們已經在 Notebook中導入了sklearn,我們可以開始使用機器學習模型的數據集。
第二步 - 導入Scikit-learn的數據集我們將在本教程中使用的數據集是乳腺癌威斯康星診斷數據庫。該數據集包括關于乳腺癌腫瘤的各種信息,以及惡性或良性的分類標簽。該數據集在569個腫瘤上具有569個實例或數據,并且包括關于30個屬性或特征的信息,例如腫瘤的半徑,紋理,平滑度和面積。
使用該數據集,我們將構建機器學習模型以使用腫瘤信息來預測腫瘤是惡性的還是良性的。
Scikit-learn安裝了各種數據集,我們可以將其加載到Python中,并包含我們想要的數據集。導入并加載數據集:
ML Tutorial
... from sklearn.datasets import load_breast_cancer # Load dataset data = load_breast_cancer()
該data變量表示一個像字典一樣工作的Python對象。字典的關鍵是分類標簽名稱(target_names),實際標簽(target),屬性/特征名稱(feature_names)和屬性(data)。
屬性是任何分類器的關鍵部分。屬性捕獲有關數據性質的重要特征。鑒于我們試圖預測的標簽是惡性腫瘤與良性腫瘤,可能的有用屬性有腫瘤的大小,半徑和質地。
為每個重要信息集創建新變量并分配數據:
ML Tutorial
... # Organize our data label_names = data["target_names"] labels = data["target"] feature_names = data["feature_names"] features = data["data"]
我們現在有了每組信息的列表。為了更好地理解我們的數據集,讓我們通過輸出我們的類標簽、第一個數據實例的標簽、我們的功能名稱以及第一個數據實例的功能值來查看我們的數據:
ML Tutorial
... # Look at our data print(label_names) print(labels[0]) print(feature_names[0]) print(features[0])
如果運行代碼,您將看到以下結果:
輸出結果
如圖所示,我們的類名是惡性和良性,然后將其映射到二進制值0和1,其中0代表惡性腫瘤1代表良性腫瘤。因此,我們的第一個數據實例是惡性腫瘤,其平均半徑為1.79900000e+01。
現在我們已經加載了數據,我們可以使用我們的數據來構建我們的機器學習分類器。
第三步 - 將數據組織到集合中要評估分類器的性能,您應該始終在看不見的數據上測試模型。因此,在構建模型之前,將數據拆分為兩部分:訓練集和測試集。
您可以使用訓練集在開發階段訓練和評估模型。然后,您使用訓練的模型對看不見的測試集進行預測。這種方法讓您了解模型的性能和穩健性。
幸運的是,sklearn有一個名為train_test_split()的函數,它將您的數據劃分為這些集合。導入該函數,然后使用它來拆分數據:
ML Tutorial
... from sklearn.model_selection import train_test_split # Split our data train, test, train_labels, test_labels = train_test_split(features, labels, test_size=0.33, random_state=42)
該函數使用test_size參數隨機分割數據。在這個例子中,我們現在有一個測試集(test)代表原始數據集的33%。然后剩下的數據(train)組成訓練數據。我們還有列車/測試變量的相應標簽,即train_labels和test_labels。
我們現在可以繼續培訓我們的第一個模型。
第四步 - 構建和評估模型機器學習有很多模型,每種模型都有自己的優點和缺點。在本教程中,我們將重點介紹一種通常在二進制分類任務中表現良好的簡單算法,即Naive Bayes (NB)。
首先,導入GaussianNB模塊。然后使用GaussianNB()函數初始化模型,然后通過使用gnb.fit()將模型擬合到數據來訓練模型:
ML Tutorial
... from sklearn.naive_bayes import GaussianNB # Initialize our classifier gnb = GaussianNB() # Train our classifier model = gnb.fit(train, train_labels)
在我們訓練模型之后,我們可以使用訓練的模型對我們的測試集進行預測,這里,我們使用predict()函數。該predict()函數返回測試集中每個數據實例的預測數組。然后我們可以輸出我們的預測,以了解模型確定的內容。
使用帶有test的predict()函數輸出結果:
ML Tutorial
... # Make predictions preds = gnb.predict(test) print(preds)
運行代碼,您將看到以下結果:
預測輸出結果
正如您在Jupyter Notebook輸出中看到的,該predict()函數返回了一個0s和1s 數組,它們代表了我們對腫瘤類的預測值(惡性與良性)。
現在我們有了預測,讓我們評估分類器的表現。
第五步 - 評估模型的準確性使用真實類標簽數組,我們可以通過比較兩個數組(test_labelsvs.preds)來評估模型預測值的準確性。我們將使用sklearn函數accuracy_score()來確定機器學習分類器的準確性。
ML Tutorial
... from sklearn.metrics import accuracy_score # Evaluate accuracy print(accuracy_score(test_labels, preds))
您將看到以下結果:
準確性結果
正如您在輸出中看到的那樣,NB分類器準確率為94.15%。這意味著分類器有94.15%的時間能夠正確預測腫瘤是惡性還是良性。這些結果表明我們的30個屬性的特征集是腫瘤類別的良好指標。
您已成功構建了第一臺機器學習分類器。讓我們通過將所有import語句放在Notebook或腳本的頂部來重新組織代碼。代碼的最終版本應如下所示:
ML教程
from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB from sklearn.metrics import accuracy_score # Load dataset data = load_breast_cancer() # Organize our data label_names = data["target_names"] labels = data["target"] feature_names = data["feature_names"] features = data["data"] # Look at our data print(label_names) print("Class label = ", labels[0]) print(feature_names) print(features[0]) # Split our data train, test, train_labels, test_labels = train_test_split(features, labels, test_size=0.33, random_state=42) # Initialize our classifier gnb = GaussianNB() # Train our classifier model = gnb.fit(train, train_labels) # Make predictions preds = gnb.predict(test) print(preds) # Evaluate accuracy print(accuracy_score(test_labels, preds))
現在,您可以繼續使用代碼來查看是否可以使分類器的性能更佳。您可以嘗試不同的功能子集,甚至嘗試完全不同的算法。
結論在本教程中,您學習了如何在Python中構建機器學習分類器?,F在,您可以使用Scikit-learn在Python中加載數據、組織數據、訓練、預測和評估機器學習分類器。本教程中的步驟可以幫助您簡化在Python中使用自己的數據的過程,更多機器學習和人工智能的相關教程可以訪問騰訊云社區。
參考文獻:《How To Build a Machine Learning Classifier in Python with Scikit-learn》
問答機器學習入門需要哪些數學基礎?
相關閱讀安全報告 | 2018上半年互聯網惡意爬蟲分析:從全景視角看爬蟲與反爬蟲
安全報告 | SSH 暴力破解趨勢:從云平臺向物聯網設備遷移
給你的CVM安裝一個面板吧!
此文已由作者授權騰訊云+社區發布,原文鏈接:https://cloud.tencent.com/dev...
歡迎大家前往騰訊云+社區或關注云加社區微信公眾號(QcloudCommunity),第一時間獲取更多海量技術實踐干貨哦~
海量技術實踐經驗,盡在云加社區!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42103.html
摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...
摘要:翻譯自昨天收到推送了一篇介紹隨機森林算法的郵件,感覺作為介紹和入門不錯,就順手把它翻譯一下。隨機森林引入的隨機森林算法將自動創建隨機決策樹群?;貧w隨機森林也可以用于回歸問題。結語隨機森林相當起來非常容易。 翻譯自:http://blog.yhat.com/posts/python-random-forest.html 昨天收到yhat推送了一篇介紹隨機森林算法的郵件,感覺作為介紹和入門...
閱讀 2649·2019-08-30 15:53
閱讀 2875·2019-08-29 16:20
閱讀 1084·2019-08-29 15:10
閱讀 1022·2019-08-26 10:58
閱讀 2195·2019-08-26 10:49
閱讀 633·2019-08-26 10:21
閱讀 705·2019-08-23 18:30
閱讀 1638·2019-08-23 15:58