機器學(xué)習(xí)實戰(zhàn) | SKLearn入門與簡單應(yīng)用案例

引言

在前面的機器學(xué)習(xí)案例中价捧,我們使用了Python機器學(xué)習(xí)工具庫Scikit-Learn烈和,它建立在NumPy周拐、SciPy铡俐、Pandas和Matplotlib之上,也是最常用的Python機器學(xué)習(xí)工具庫之一妥粟,里面的API的設(shè)計非常好审丘,所有對象的接口簡單,很適合新手上路勾给。ShowMeAI在本篇內(nèi)容中對Scikit-Learn做一個介紹滩报。

1.SKLearn是什么

Scikit-Learn也簡稱SKLearn锅知,是一個基于Python語言的機器學(xué)習(xí)工具,它對常用的機器學(xué)習(xí)方法進行了封裝脓钾,例如售睹,分類、回歸可训、聚類昌妹、降維、模型評估握截、數(shù)據(jù)預(yù)處理等飞崖,我們只需調(diào)用對應(yīng)的接口即可。


在SKLearn的官網(wǎng)上谨胞,寫著以下四點介紹:

  • 一個簡單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具固歪。
  • 構(gòu)建在NumPy,SciPy和matplotlib上胯努。
  • 可供大家在各種環(huán)境中重復(fù)使用牢裳。
  • 開源,可商業(yè)使用–BSD許可證康聂。

SKLearn官網(wǎng):https://scikit-learn.org/stable/

SKLearn的快速使用方法也推薦大家查看ShowMeAI的文章和速查手冊 AI建模工具速查|Scikit-learn使用指南

2.安裝SKLearn

安裝SKLearn非常簡單贰健,命令行窗口中輸入命令:

pip install scikit-learn

我們也可以使用清華鏡像源安裝,通常速度會更快一些:

pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple

3.SKLearn常用接口

對于機器學(xué)習(xí)整個流程中涉及到的常用操作恬汁,SKLearn中幾乎都有現(xiàn)成的接口可以直接調(diào)用伶椿,而且不管使用什么處理器或者模型,它的接口一致度都非常高氓侧。

3.1 數(shù)據(jù)集導(dǎo)入

更多數(shù)據(jù)集請參考SKLearn官網(wǎng):https://scikit-learn.org/stable/modules/classes.html?highlight=dataset#module-sklearn.datasets

#鳶尾花數(shù)據(jù)集
from sklearn.datasets import load_iris
#乳腺癌數(shù)據(jù)集
from sklearn.datasets import load_breast_cancer
#波士頓房價數(shù)據(jù)集
from sklearn.datasets import load_boston

3.2 數(shù)據(jù)預(yù)處理

官網(wǎng)鏈接:https://scikit-learn.org/stable/modules/classes.html#module-sklearn.preprocessing

#拆分數(shù)據(jù)集
from sklearn.model_selection import train_test_split
#數(shù)據(jù)縮放
from sklearn.preprocessing import MinMaxScaler

3.3 特征抽取

官網(wǎng)鏈接:https://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_extraction

from sklearn.feature_extraction import DictVectorizer
v = DictVectorizer(sparse=False)
D = [{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}]
X = v.fit_transform(D)

3.4 特征選擇

官網(wǎng)鏈接:https://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_selection

from sklearn.datasets import load_digits
from sklearn.feature_selection import SelectKBest, chi2
X, y = load_digits(return_X_y=True)
# 特征選擇
X_new = SelectKBest(chi2, k=20).fit_transform(X, y)

3.5 常用模型

官網(wǎng)鏈接:https://scikit-learn.org/stable/modules/classes.html

#KNN模型
from sklearn.neighbors import KNeighborsClassifier
#決策樹
from sklearn.tree import DecisionTreeClassifier
#支持向量機
from sklearn.svm import SVC
#隨機森林
from sklearn.ensemble import RandomForestClassifier

3.6 建模擬合與預(yù)測

#擬合訓(xùn)練集
knn.fit(X_train,y_train)
#預(yù)測
y_pred=knn.predict(X_test)

3.7 模型評估

官網(wǎng)鏈接:https://scikit-learn.org/stable/modules/classes.html#sklearn-metrics-metrics

#求精度
knn.score(X_test,y_test)
#繪制混淆矩陣
from sklearn.metrics import confusion_matrix
#繪制ROC曲線
from sklearn.metrics import roc_curve,roc_auc_score

3.8 典型的建模流程示例

典型的一個機器學(xué)習(xí)建模應(yīng)用流程遵循【數(shù)據(jù)準備】【數(shù)據(jù)預(yù)處理】【特征工程】【建模與評估】【模型優(yōu)化】這樣的一些流程環(huán)節(jié)橄霉。

# 加載數(shù)據(jù)
import numpy as np
import urllib
# 下載數(shù)據(jù)集
url = "http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
raw_data = urllib.urlopen(url)
# 加載CSV文件
dataset = np.loadtxt(raw_data, delimiter=",")
# 區(qū)分特征和標簽
X = dataset[:,0:7]
y = dataset[:,8]


# 數(shù)據(jù)歸一化
from sklearn import preprocessing
# 幅度縮放
scaled_X = preprocessing.scale(X)
# 歸一化
normalized_X = preprocessing.normalize(X)
# 標準化
standardized_X = preprocessing.scale(X)

# 特征選擇
from sklearn import metrics
from sklearn.ensemble import ExtraTreesClassifier
model = ExtraTreesClassifier()
model.fit(X, y)
# 特征重要度
print(model.feature_importances_)

# 建模與評估
from sklearn import metrics
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
print('MODEL')
print(model)
# 預(yù)測
expected = y
predicted = model.predict(X)
# 輸出評估結(jié)果
print('RESULT')
print(metrics.classification_report(expected, predicted))
print('CONFUSION MATRIX')
print(metrics.confusion_matrix(expected, predicted))

# 超參數(shù)調(diào)優(yōu)
from sklearn.model_selection import GridSearchCV
param_grid = {'penalty' : ['l1', 'l2', 'elasticnet'],
              'C': [0.1, 1, 10]}
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)

參考資料

作者:韓信子@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/41
本文地址http://www.showmeai.tech/article-detail/202
聲明:版權(quán)所有渺鹦,轉(zhuǎn)載請聯(lián)系平臺與作者并注明出處
收藏ShowMeAI查看更多精彩內(nèi)容


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末归斤,一起剝皮案震驚了整個濱河市司训,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌独郎,老刑警劉巖踩麦,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氓癌,居然都是意外死亡谓谦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門贪婉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來反粥,“玉大人,你說我怎么就攤上這事〔哦伲” “怎么了莫湘?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郑气。 經(jīng)常有香客問我幅垮,道長,這世上最難降的妖魔是什么竣贪? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任军洼,我火速辦了婚禮,結(jié)果婚禮上演怎,老公的妹妹穿的比我還像新娘。我一直安慰自己避乏,他們只是感情好爷耀,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拍皮,像睡著了一般歹叮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上铆帽,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天咆耿,我揣著相機與錄音,去河邊找鬼爹橱。 笑死萨螺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的愧驱。 我是一名探鬼主播慰技,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼组砚!你這毒婦竟也來了吻商?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤糟红,失蹤者是張志新(化名)和其女友劉穎艾帐,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盆偿,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡柒爸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陈肛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揍鸟。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出阳藻,到底是詐尸還是另有隱情晰奖,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布腥泥,位于F島的核電站匾南,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蛔外。R本人自食惡果不足惜蛆楞,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夹厌。 院中可真熱鬧豹爹,春花似錦、人聲如沸矛纹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽或南。三九已至孩等,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間采够,已是汗流浹背肄方。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹬癌,地道東北人权她。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像冀瓦,于是被迫代替她去往敵國和親伴奥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容