Python機(jī)器學(xué)習(xí)庫scikit-learn安裝與基本使用教程
本文實(shí)例講述了Python機(jī)器學(xué)習(xí)庫scikit-learn安裝與基本使用。分享給大家供大家參考,具體如下:
引言
scikit-learn是Python的一個(gè)開源機(jī)器學(xué)習(xí)模塊,它建立在NumPy,SciPy和matplotlib模塊之上能夠?yàn)橛脩籼峁└鞣N機(jī)器學(xué)習(xí)算法接口,可以讓用戶簡(jiǎn)單、高效地進(jìn)行數(shù)據(jù)挖掘和數(shù)據(jù)分析。
scikit-learn安裝
python 中安裝許多模板庫之前都有依賴關(guān)系,安裝 scikit-learn 之前需要以下先決條件:
Python(>= 2.6 or >= 3.3)
NumPy (>= 1.6.1)
SciPy (>= 0.9)
如無意外,下面用 pip 的安裝方法可以順利完成~~
安裝 numpy
sudo pip install numpy
安裝 scipy
需要先安裝 matplotlib ipython ipython-notebook pandas sympy
sudo apt-get install python-matplotlib ipython ipython-notebook sudo apt-get install python-pandas python-sympy python-nose sudo pip install scipy
安裝 scikit-learn
sudo pip install -U scikit-learn
測(cè)試
在 terminal 里面輸入
pip list
這個(gè)會(huì)列出 pip 安裝的所有東西,如果里面有 sklearn 這一項(xiàng),應(yīng)該就是大功告成了!
或者嘗試著將幾個(gè)模板庫導(dǎo)入進(jìn)來
import numpy import scipy import sklearn
加載數(shù)據(jù)(Data Loading)
本文所使用的數(shù)據(jù)集為‘今日頭條'近期兩篇熱門新聞“牛!川大學(xué)霸寢室5人獲16份名校通知書”、“張超凡的最后14天:山西15歲休學(xué)少年是如何殞命網(wǎng)吧的”分別500條評(píng)論,共1000條評(píng)論。
去除停用詞后得到了詞庫大小為3992的詞庫。因此構(gòu)建了1000×3992的特征矩陣,以及長度為1000的對(duì)應(yīng)評(píng)論所屬類別列表
class_result_save.npy 下載 feature_matrix_save.npy下載
import numpy as np
feature_matrix = np.load('dataSet/feature_matrix_save.npy')
class_list = np.load('dataSet/class_result_save.npy')
數(shù)據(jù)歸一化(Data Normalization)
大多數(shù)機(jī)器學(xué)習(xí)算法中的梯度方法對(duì)于數(shù)據(jù)的縮放和尺度都是很敏感的,在開始跑算法之前,我們應(yīng)該進(jìn)行歸一化或者標(biāo)準(zhǔn)化的過程,這使得特征數(shù)據(jù)縮放到0-1范圍中。scikit-learn提供了歸一化的方法:
from sklearn import preprocessing # 歸一化(Normalization) normalized_X = preprocessing.normalize(feature_matrix) print normalized_X # 標(biāo)準(zhǔn)化(Standardization) standardized_X = preprocessing.scale(feature_matrix) print standardized_X
特征選擇(Feature Selection)
在解決一個(gè)實(shí)際問題的過程中,選擇合適的特征或者構(gòu)建特征的能力特別重要。這成為特征選擇或者特征工程。
特征選擇時(shí)一個(gè)很需要?jiǎng)?chuàng)造力的過程,更多的依賴于直覺和專業(yè)知識(shí),并且有很多現(xiàn)成的算法來進(jìn)行特征的選擇。
下面的樹算法(Tree algorithms)計(jì)算特征的信息量:
from sklearn.ensemble import ExtraTreesClassifier model = ExtraTreesClassifier() print feature_matrix.shape # 原特征矩陣規(guī)模 feature_matrix = model.fit(feature_matrix, class_list).transform(feature_matrix) print feature_matrix.shape # 特征選擇后 特征矩陣的規(guī)模
特征提取(Feature Extraction)
用TFIDF算法來計(jì)算特征詞的權(quán)重值是表示當(dāng)一個(gè)詞在這篇文檔中出現(xiàn)的頻率越高,同時(shí)在其他文檔中出現(xiàn)的次數(shù)越少,則表明該詞對(duì)于表示這篇文檔的區(qū)分能力越強(qiáng),所以其權(quán)重值就應(yīng)該越大。
from sklearn.feature_extraction.text import TfidfTransformer tfidf_transformer = TfidfTransformer() feature_matrix = tfidf_transformer.fit_transform(feature_matrix).toarray()
樸素貝葉斯(Naive Bayes)
樸素貝葉斯是一個(gè)很著名的機(jī)器學(xué)習(xí)算法,主要是根據(jù)訓(xùn)練樣本的特征來計(jì)算各個(gè)類別的概率,在多分類問題上用的比較多。
from sklearn import metrics from sklearn.naive_bayes import GaussianNB # 構(gòu)建樸素貝葉斯模型 model = GaussianNB() model.fit(feature_matrix, class_list) print model # 使用測(cè)試集進(jìn)行測(cè)試(此處將訓(xùn)練集做測(cè)試集) expected = class_list predicted = model.predict(feature_matrix) # 輸出測(cè)試效果 print metrics.classification_report(expected, predicted) print metrics.confusion_matrix(expected, predicted)
k近鄰(k-Nearest Neighbours)
k近鄰算法常常被用作是分類算法一部分,比如可以用它來評(píng)估特征,在特征選擇上我們可以用到它。
from sklearn import metrics from sklearn.neighbors import KNeighborsClassifier # 構(gòu)建knn模型 model = KNeighborsClassifier() model.fit(feature_matrix, class_list) print model # 使用測(cè)試集進(jìn)行測(cè)試(此處將訓(xùn)練集做測(cè)試集) expected = class_list predicted = model.predict(feature_matrix) # 輸出測(cè)試效果 print metrics.classification_report(expected, predicted) print metrics.confusion_matrix(expected, predicted)
決策樹(Decision Tree)
分類與回歸樹(Classification and Regression Trees ,CART)算法常用于特征含有類別信息的分類或者回歸問題,這種方法非常適用于多分類情況。
from sklearn import metrics from sklearn.tree import DecisionTreeClassifier # 構(gòu)建決策數(shù)模型 model = DecisionTreeClassifier() model.fit(feature_matrix, class_list) print model # 使用測(cè)試集進(jìn)行測(cè)試(此處將訓(xùn)練集做測(cè)試集) expected = class_list predicted = model.predict(feature_matrix) # 輸出測(cè)試效果 print metrics.classification_report(expected, predicted) print metrics.confusion_matrix(expected, predicted)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
在cmd中運(yùn)行.py文件: python的操作步驟
今天小編就為大家分享一篇在cmd中運(yùn)行.py文件: python的操作步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05
解決python3讀取Python2存儲(chǔ)的pickle文件問題
今天小編就為大家分享一篇解決python3讀取Python2存儲(chǔ)的pickle文件問題,具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python輕松實(shí)現(xiàn)批量郵件自動(dòng)化詳解
在日常工作和生活中,我們經(jīng)常需要發(fā)送郵件,手動(dòng)發(fā)送郵件不僅繁瑣,而且容易出錯(cuò),下面我們就來看看如何使用Python實(shí)現(xiàn)批量郵件自動(dòng)化操作吧2025-02-02
Python使用pymongo模塊操作MongoDB的方法示例
這篇文章主要介紹了Python使用pymongo模塊操作MongoDB的方法,結(jié)合實(shí)例形式分析了Python基于pymongo模塊連接MongoDB數(shù)據(jù)庫以及增刪改查與日志記錄相關(guān)操作技巧,需要的朋友可以參考下2018-07-07

