機器學習之Scikit-learn篇(一)

2021-03-02 機器學習學社

Scikit-learn是目前Python環境下最常用也是最好用的機器學習函數庫。Sklean裡邊幾乎集成了所有經典的機器學習算法,同時配以非常簡單的實現語句(通常為1-2行代碼)以及模式化的調參過程,使得我們可以花費更多時間在特徵工程及數據處理上,並且使得我們建模的過程集中於算法比較以及模型選擇上。

當然,Sklearn並不是沒有他的弊端,比如過於簡單的語句使得其功能相對固定,這就讓我們構建定製化的模型變得相對困難。以個人經驗來說,當我們需要換掉模型中的損失函數或其他一些評判方式時,我們必須從原始碼中找出對應模塊,然後按照原始碼的方式來編寫自己需要的程序。

雖然聽起來很麻煩,但Sklearn還是為我們提供了非常大的便利,如果每一個算法都要由我們自己從零開始搭建的話,且不說費時費力,單單是代碼的可靠性我們就已經無法保證。從這個角度來講,Sklearn的確是目前機器學習的首選函數庫。

Sklearn內部有非常多的模塊,每個模塊的功能都很豐富,但是調用的方式卻基本上是一致的。如下代碼所示,我們這裡邊用到了Sklearn的預處理模塊,用到了K-NN算法構建模型,用到了訓練集及測試集分離模塊等等,從中不難看出,讀Sklearn的代碼像是在讀文章一樣,一目了然且很容易get到寫代碼者的意圖。

from sklearn import neighbors, datasets, preprocessing

from sklearn.cross_validation import train_test_split

from sklearn.metrics import accuracy_score

iris = datasets.load_iris()

X, y = iris.data[:, :2], iris.target

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=33)

scaler = preprocessing.StandardScaler().fit(X_train)

X_train = scaler.transform(X_train)

X_test = scaler.transform(X_test)

knn = neighbors.KNeighborsClassifier(n_neighbors=5)

knn.fit(X_train, y_train)

y_pred = knn.predict(X_test)

accuracy_score(y_test, y_pred)

標準化

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler().fit(X_train)

standardized_X = scaler.transform(X_train)

standardized_X_test = scaler.transform(X_test)


歸一化

from sklearn.preprocessing import Normalizer

scaler = Normalizer().fit(X_train)

normalized_X = scaler.transform(X_train)

normalized_X_test = scaler.transform(X_test)


二值化

from sklearn.preprocessing import Binarizer

binarizer = Binarizer(threshold=0.0).fit(X)

binary_X = binarizer.transform(X)


分類變量的編碼

from sklearn.preprocessing import LabelEncoder

enc = LabelEncoder()

y = enc.fit_transform(y)

補全缺失值

from sklearn.preprocessing import Imputer

imp = Imputer(missing_values=0, strategy='mean', axis=0)

imp.fit_transform(X_train)


創建高次冪特徵

from sklearn.preprocessing import PolynomialFeatures

poly = PolynomialFeatures(5)

poly.fit_transform(X)


監督學習模型

# 線性回歸

from sklearn.linear_model import LinearRegression

lr = LinearRegression(normalize=True)

# 樸素貝葉斯

from sklearn.naive_bayes import GaussianNB

gnb = GaussianNB()

# K-NN算法

from sklearn import neighbors

knn = neighbors.KNeighborsClassifier(n_neighbors=5)

# 支持向量機(SVM)

from sklearn.svm import SVC

svc = SVC(kernel='linear』)


無監督學習

# 主成分分析(PCA)

from sklearn.decomposition import PCA

pca = PCA(n_components=0.95)

# K Means聚類

from sklearn.cluster import KMeans

k_means = KMeans(n_clusters=3, random_state=0)


構建模型

# 監督學習

# 用數據構建模型

lr.fit(X, y)

knn.fit(X_train, y_train)

svc.fit(X_train, y_train)

# 無監督學習

# 用數據構建模型

k_means.fit(X_train)

# 用數據構建模型並改變數據形式

pca_model = pca.fit_transform(X_train)


利用模型進行預測

# 監督學習

y_pred=svc.predict(np.random((2,5))) # 預測標籤

y_pred=lr.predict(x_test) # 預測標籤

y_pred=knn.predict_proba(x_test) # 預測為某一類別的可能性

# 無監督學習

y_pred=k_means.predict(x_test) # 預測屬於哪個聚類


今天為大家簡單介紹了Sklearn內的語句以及構建模型的流程,同時也為大家展示了Sklearn語句的格式,總體來講是很好記憶的,具體的細節需要大家參考Sklearn的官方文檔來細緻的了解。

想成為一名合格的機器學習工程師嗎?關注「機器學習學社」獲取每天一份的新鮮諮詢,為你開拓屬於你自己的機器學習之路




相關焦點

  • python機器學習之使用scikit-learn庫
    引言數據分析由一連串的步驟組成,對於其中預測模型的創建和驗證這一步,我們使用scikit-learn這個功能強大的庫來完成。scikit-learning庫python庫scikit-learn整合了多種機器學習算法。
  • scikit-learn機器學習簡介
    在本節中,我們將介紹在scikit-learn中所使用的機器學習的基礎知識點,並且給出一個簡單的代碼示例。
  • Python + Scikit-learn 完美入門機器學習指南 ​
    Scikit-learn 是一個非常流行的機器學習工具,它幾乎集成了所有經典的機器學習算法,你只需要幾行代碼,通過簡單的方法類調用,就可以實現原本複雜的機器學習模型。如果你是一名 Python 程式設計師,又正好想學習一下人工智慧技術,scikit-learn 可能是你最好的選擇之一。
  • Scikit-Learn機器學習實踐:垃圾簡訊識別
    感謝關注天善智能,走好數據之路↑↑↑歡迎關注天善智能,我們是專注於商業智能BI,人工智慧AI,大數據分析與挖掘領域的垂直社區,學習,問答、求職一站式搞定!機器學習與垃圾簡訊識別前不久,我們使用NLTK的貝葉斯分類模型垃圾對簡訊數據進行機器學習的垃圾簡訊識別。
  • 用 Scikit-learn Pipeline 創建機器學習流程
    本文翻譯自:https://medium.com/vickdata/a-simple-guide-to-scikit-learn-pipelines
  • 一遍就懂的Scikit-Learn機器學習分類過程
    為了對鳶尾花進行分類,我們將執行以下步驟:加載鳶尾花數據集將數據拆分為訓練集和測試集在訓練集上訓練模型計算模型精度對外部輸入數據執行預測為了執行所有這些步驟,我們將使用scikit-learn python庫:https://scikit-learn.orgscikit-learn
  • 極簡Scikit-Learn入門
    100天搞定機器學習寫了三天了機器學習100天|Day1數據預處理100天搞定機器學習|Day2
  • 直答理工:機器學習——scikit-learn入門
    機器學習可通過已知樣本的一系列特徵數據來預測未知的性質。一般,根據問題類型,可將學習分為以下幾類:監督學習:數據集本身有待預測的目標值,一般包括分類問題和回歸問題。分類樣本屬於兩類或更多的類,我們希望從已知的標籤的數據中去預測未標籤的數據。
  • WePay機器學習反欺詐實踐:Python+scikit-learn+隨機森林
    【編者按】將機器學習算法用於金融領域的一個很好的突破口是反欺詐,在這篇博文中,WePay介紹了支付行業構建機器學習模型應對很難發現的shell selling欺詐的實踐心得。WePay採用了流行的Python、scikit-learn開源學習機器學習工具以及隨機森林算法。以下是文章內容:什麼是shellselling?
  • 【下載】Scikit-learn作者新書《Python機器學習導論》, 教程+代碼手把手帶你實踐機器學習算法
    Müller同時也是著名機器學習Python包scikit-learn的主要貢獻者 Andreas Muller 和 Reonomy 公司數據科學家 Sarah Guido 的新書《Python機器學習導論》(Introduction to machine learning with Python)從實戰角度出髮帶你用Python快速上手機器學習方法。
  • 使用 scikit-learn 玩轉機器學習——集成學習
    6、傳入上述的各個機器學習模型,實例化一個 VotingClassifier 模型,訓練並列印模型精度。上次我們剛聊過決策樹,相信小夥伴們還有些印象,決策樹是由一系列節點構成的,每劃分一個節點都要在所有的特徵維度的每個特徵可能取到的值上進行搜索,以取得信息熵的最小和,或最大的信息增益。隨機森林裡面的樹的節點劃分可能稍有些變化,隨機森林算法的高明之處之一就是利用隨機性,使得模型更魯棒。
  • 看完這篇 scikit-learn學習指南,下節AI課不用上了
    歡迎來到scikit-learn機器學習世界。scikit-learn是一款強大的通用機器學習庫。屬於傳統機器學習的領域,其特點是利用特徵工程,人為對數據進行提煉和清洗。本文將討論以下主題: 機器學習簡介 什麼是scikit-learn?
  • 用Python (scikit-learn) 做PCA分析
    Iris數據集是scikit-learn附帶的數據集之一,不需要從外部網站下載任何文件。下面的代碼將加載iris數據集。如果你想看到不縮放數據可能帶來的負面影響,scikit-learn有一節是講關於不標準化數據的影響的(https://scikit-learn.org/stable/auto_examples/preprocessing/plot_scaling_importance.html#sphx-glr-auto-examples-preprocessing-plot-scaling-importance-py
  • 資料| 連廣場大媽都聽得懂的「機器學習入門」scikit-learn -17頁...
    from=leiphonecolumn_res0604pmScikit-learn 是基於 Python 的開源機器學習庫,它基於 NumPy 和 SciPy 等科學計算庫,並支持支持向量機、隨即森林、梯度提升樹、K 均值聚類等學習算法。Scikit-learn 目前主要由社區成員自發進行維護,且專注於構建機器學習領域內經廣泛驗證的成熟算法。
  • Scikit-learn估計器分類
    Scikit-learn實現了一系列數據挖掘算法,提供通用編程接口、標準化的測試和調參公局,便於用戶嘗試不同算法對其進行充分測試和查找最優參數值。本次講解數據挖掘通用框架的搭建方法。有了這樣一個框架,後續章節就可以把講解重點放到數據挖掘應用和技術上面。為幫助用戶實現大量分類算法,scikit-learn把相關功能封裝成估計器。估計器用於分類任務,它主要包括兩個函數。
  • 使用scikit-learn進行機器學習
    更高級的scikit-learn介紹      導語為什麼要出這個教程?導語已經有好幾天沒出文章了,感覺自己失蹤了,失蹤幾天出去跨年娛樂了,哈哈,之前黃大大發了個機器學習連結,然後昨天回來發現覺得很不錯,於是今天開始翻譯並撰寫文章,最終大家看到了這篇文章,除此之外,有一件事情要說:我在自己的倉庫裡面開了一個光城翻譯文檔(點擊原文進入倉庫),期待你的貢獻!
  • 使用scikit-learn進行數據預處理
    更高級的scikit-learn介紹      導語為什麼要出這個教程?導語已經有好幾天沒出文章了,感覺自己失蹤了,失蹤幾天出去跨年娛樂了,哈哈,之前黃大大發了個機器學習連結,然後昨天回來發現覺得很不錯,於是今天開始翻譯並撰寫文章,最終大家看到了這篇文章,除此之外,有一件事情要說:我在自己的倉庫裡面開了一個光城翻譯文檔(點擊原文進入倉庫),期待你的貢獻!
  • 用 Scikit-Learn 和 Pandas 學習線性回歸
    獲取數據,定義問題沒有數據,當然沒法研究機器學習啦。:) 這裡我們用UCI大學公開的機器學習數據來跑線性回歸。也不用我們搞,後面scikit-learn在線性回歸時會先幫我們把歸一化搞定。好了,有了這個csv格式的數據,我們就可以大幹一場了。3. 用pandas來讀取數據我們先打開ipython notebook,新建一個notebook。當然也可以直接在python的交互式命令行裡面輸入,不過還是推薦用notebook。
  • scikit-learn—樸素貝葉斯
    樸素貝葉斯方法是一組基於Bayes定理的有監督學習算法,在給定數據標籤的情況下,每對特徵之間條件獨立性假設。
  • Python中的人工智慧入門:在scikit-learn中的建模
    做好準備:在Seaborn中可視化數據  鳶尾花數據集 (The Iris Flower dataset) 是目前仍在使用的最古老的機器學習數據集之一。它由Ronald Fisher在1936年發表,用於說明線性判別分析。問題是根據萼片和花瓣寬度和長度的測量結果對三種鳶尾花中的一種進行分類。