引言
在前面的機器學(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)
參考資料
- 圖解機器學(xué)習(xí)算法 | 從入門到精通系列
- SKLearn官網(wǎng):https://scikit-learn.org/stable/
作者:韓信子@ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/41
本文地址:http://www.showmeai.tech/article-detail/202
聲明:版權(quán)所有渺鹦,轉(zhuǎn)載請聯(lián)系平臺與作者并注明出處
收藏ShowMeAI查看更多精彩內(nèi)容