Scikit-Learn Cheat Sheet:Python機(jī)器學(xué)習(xí)

一個(gè)方便的scikit-learn備忘錄穷吮,用于使用Python進(jìn)行機(jī)器學(xué)習(xí)预吆,包括代碼示例。

大多數(shù)使用Python學(xué)習(xí)數(shù)據(jù)科學(xué)的人肯定已經(jīng)聽說過scikit-learn失仁,開源Python庫在統(tǒng)一界面的幫助下實(shí)現(xiàn)了各種機(jī)器學(xué)習(xí)尸曼,預(yù)處理,交叉驗(yàn)證和可視化算法萄焦。

如果你還是這個(gè)領(lǐng)域的新手控轿,你應(yīng)該意識到機(jī)器學(xué)習(xí),以及這個(gè)Python庫拂封,都屬于每個(gè)有抱負(fù)的數(shù)據(jù)科學(xué)家必須知道的茬射。

這就是為什么DataCamp已經(jīng)scikit-learn為那些已經(jīng)開始學(xué)習(xí)Python包的人創(chuàng)建了一個(gè)備忘錄,但仍然需要一個(gè)方便的參考表冒签≡谂祝或者,如果您仍然不知道如何scikit-learn工作萧恕,這臺機(jī)器學(xué)習(xí)備忘錄可能會派上用場刚梭,以便快速了解入門時(shí)需要了解的基礎(chǔ)知識。

無論哪種方式票唆,我們都確信您在解決機(jī)器學(xué)習(xí)問題時(shí)會發(fā)現(xiàn)它很有用望浩!

這個(gè) scikit-learn備忘錄將向您介紹成功實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法所需的基本步驟:您將看到如何加載數(shù)據(jù),如何預(yù)處理它惰说,如何創(chuàng)建自己的模型以適合您的模型您的數(shù)據(jù)和預(yù)測目標(biāo)標(biāo)簽磨德,如何驗(yàn)證您的模型以及如何進(jìn)一步調(diào)整以提高其性能。

簡而言之吆视,這個(gè)備忘錄將啟動您的數(shù)據(jù)科學(xué)項(xiàng)目:借助代碼示例典挑,您可以立即創(chuàng)建,驗(yàn)證和調(diào)整您的機(jī)器學(xué)習(xí)模型啦吧。

你還在等什么您觉?開始的時(shí)候了!

**(點(diǎn)擊上方下載可打印版本或閱讀以下在線版本授滓。) **

Python For Data Science備忘錄:Scikit-learn

Scikit-learn是一個(gè)開源Python庫琳水,使用統(tǒng)一的界面實(shí)現(xiàn)一系列機(jī)器學(xué)習(xí),預(yù)處理般堆,交叉驗(yàn)證和可視化算法在孝。

一個(gè)基本的例子

>>> from sklearn import neighbors, datasets, preprocessing
>>> from sklearn.model_selection 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)

加載數(shù)據(jù)

您的數(shù)據(jù)需要是數(shù)字并存儲為NumPy數(shù)組或SciPy稀疏矩陣。其他可轉(zhuǎn)換為數(shù)字?jǐn)?shù)組的類型(如Pandas DataFrame)也是可以接受的淮摔。

>>> import numpy as np
>>> X = np.random.random((10,5))
>>> y = np.array(['M','M','F','F','M','F','M','M','F','F','F'])
>>> X[X < 0.7] = 0

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

標(biāo)準(zhǔn)化

>>> 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)

生成多項(xiàng)式特征

>>> from sklearn.preprocessing import PolynomialFeatures
>>> poly = PolynomialFeatures(5)
>>> oly.fit_transform(X)

訓(xùn)練和測試數(shù)據(jù)

>>> from sklearn.model_selection import train_test_split
>>> X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=0)

創(chuàng)建你的模型

監(jiān)督學(xué)習(xí)估算

線性回歸

>>> from sklearn.linear_model import LinearRegression
>>> lr = LinearRegression(normalize=True)

支持向量機(jī)(SVM)

>>> from sklearn.svm import SVC
>>> svc = SVC(kernel='linear')

樸素貝葉斯

>>> from sklearn.naive_bayes import GaussianNB
>>> gnb = GaussianNB()

K-近鄰算法(KNN)

>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(n_neighbors=5)

無監(jiān)督學(xué)習(xí)估算器

主成分分析(PCA)

>>> from sklearn.decomposition import PCA
>>> pca = PCA(n_components=0.95)

K均值聚類算法(K-Means)

>>> from sklearn.cluster import KMeans
>>> k_means = KMeans(n_clusters=3, random_state=0)

模型擬合

監(jiān)督學(xué)習(xí)

>>> lr.fit(X, y)
>>> knn.fit(X_train, y_train)
>>> svc.fit(X_train, y_train)

無監(jiān)督學(xué)習(xí)

>>> k_means.fit(X_train)
>>> pca_model = pca.fit_transform(X_train)

預(yù)測

監(jiān)督估算師

>>> y_pred = svc.predict(np.random.random((2,5)))
>>> y_pred = lr.predict(X_test)
>>> y_pred = knn.predict_proba(X_test))

無監(jiān)督估計(jì)

>>> y_pred = k_means.predict(X_test)

評估您的模型的性能

分類指標(biāo)

準(zhǔn)確度分?jǐn)?shù)

>>> knn.score(X_test, y_test)
>>> from sklearn.metrics import accuracy_score
>>> accuracy_score(y_test, y_pred)

分類報(bào)告

>>> from sklearn.metrics import classification_report
>>> print(classification_report(y_test, y_pred)))

混淆矩陣

>>> from sklearn.metrics import confusion_matrix
>>> print(confusion_matrix(y_test, y_pred)))

回歸指標(biāo)

平均絕對誤差

>>> from sklearn.metrics import mean_absolute_error
>>> y_true = [3, -0.5, 2])
>>> mean_absolute_error(y_true, y_pred))

均方誤差

>>> from sklearn.metrics import mean_squared_error
>>> mean_squared_error(y_test, y_pred))

R 2 score

>>> from sklearn.metrics import r2_score
>>> r2_score(y_true, y_pred))

群集指標(biāo)

調(diào)整后的蘭德指數(shù)

>>> from sklearn.metrics import adjusted_rand_score
>>> adjusted_rand_score(y_true, y_pred))

同質(zhì)性

>>> from sklearn.metrics import homogeneity_score
>>> homogeneity_score(y_true, y_pred))

V-措施

>>> from sklearn.metrics import v_measure_score
>>> metrics.v_measure_score(y_true, y_pred))

交叉驗(yàn)證

>>> print(cross_val_score(knn, X_train, y_train, cv=4))
>>> print(cross_val_score(lr, X, y, cv=2))

調(diào)整你的模型

網(wǎng)格搜索

>>> from sklearn.grid_search import GridSearchCV
>>> params = {"n_neighbors": np.arange(1,3), "metric": ["euclidean", "cityblock"]}
>>> grid = GridSearchCV(estimator=knn,param_grid=params)
>>> grid.fit(X_train, y_train)
>>> print(grid.best_score_)
>>> print(grid.best_estimator_.n_neighbors)

隨機(jī)參數(shù)優(yōu)化

>>> from sklearn.grid_search import RandomizedSearchCV
>>> params = {"n_neighbors": range(1,5), "weights": ["uniform", "distance"]}
>>> rsearch = RandomizedSearchCV(estimator=knn,
   param_distributions=params,
   cv=4,
   n_iter=8,
   random_state=5)
>>> rsearch.fit(X_train, y_train)
>>> print(rsearch.best_score_)

走得更遠(yuǎn)

我們?yōu)槌鯇W(xué)者學(xué)習(xí)scikit-learn教程開始 私沮,您將以簡單,循序漸進(jìn)的方式學(xué)習(xí)如何探索手寫數(shù)字?jǐn)?shù)據(jù)和橙,如何為其創(chuàng)建模型仔燕,如何使您的數(shù)據(jù)適合您的模型和如何預(yù)測目標(biāo)值造垛。此外,您將使用Python的數(shù)據(jù)可視化庫matplotlib來可視化您的結(jié)果晰搀。

?> PS:不要錯(cuò)過我們的Bokeh備忘錄五辽, pandas備忘錄數(shù)據(jù)科學(xué)Python備忘錄

原文: https://www.datacamp.com/community/blog/scikit-learn-cheat-sheet
作者: Karlijn Willems

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末外恕,一起剝皮案震驚了整個(gè)濱河市奔脐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吁讨,老刑警劉巖髓迎,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異建丧,居然都是意外死亡排龄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門翎朱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橄维,“玉大人,你說我怎么就攤上這事拴曲≌瑁” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵澈灼,是天一觀的道長竞川。 經(jīng)常有香客問我,道長叁熔,這世上最難降的妖魔是什么委乌? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮荣回,結(jié)果婚禮上遭贸,老公的妹妹穿的比我還像新娘。我一直安慰自己心软,他們只是感情好壕吹,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著删铃,像睡著了一般耳贬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泳姐,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天效拭,我揣著相機(jī)與錄音,去河邊找鬼胖秒。 笑死缎患,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的阎肝。 我是一名探鬼主播挤渔,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼风题!你這毒婦竟也來了判导?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤沛硅,失蹤者是張志新(化名)和其女友劉穎眼刃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摇肌,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡擂红,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了围小。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昵骤。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肯适,靈堂內(nèi)的尸體忽然破棺而出变秦,到底是詐尸還是另有隱情,我是刑警寧澤框舔,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布蹦玫,位于F島的核電站,受9級特大地震影響刘绣,放射性物質(zhì)發(fā)生泄漏钳垮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一额港、第九天 我趴在偏房一處隱蔽的房頂上張望饺窿。 院中可真熱鬧,春花似錦移斩、人聲如沸肚医。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肠套。三九已至,卻和暖如春猖任,著一層夾襖步出監(jiān)牢的瞬間你稚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刁赖,地道東北人搁痛。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像宇弛,于是被迫代替她去往敵國和親鸡典。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361