你需要的Scikit-learn中文文檔:步入機器學習的完美實踐教程
Scikit-learn 中文文檔已經由 ApacheCN 完成校對,這對於國內機器學慣用戶有非常大的幫助。該文檔自 2017 年 11 月初步完成校對,目前很多細節都已經得到完善。該中文文檔包含了分類、回歸、聚類和降維等經典機器學習任務,並提供了完整的使用教程與 API 注釋。入門讀者也可以藉此文檔與教程從實踐出發進入數據科學與機器學習的領域。
中文文檔地址:http://sklearn.apachecn.org
Scikit-learn 是基於 Python 的開源機器學習庫,它基於 NumPy 和 SciPy 等科學計算庫,並支持支持向量機、隨即森林、梯度提升樹、K 均值聚類等學習演算法。Scikit-learn 目前主要由社區成員自發進行維護,且專註於構建機器學習領域內經廣泛驗證的成熟演算法。
Scikit-learn 項目最早為數據科學家 David Cournapeau 於 2007 年發起的 scikits.learn 項目,且 Scikit 的名字可視為 SciPy Toolkit,即 SciPy 的第三方擴展。Scikit-learn 大部分都是由 Python 構建,但還是有很多核心演算法是由 Cython 完成而實現更好的效果,例如支持向量機就是由 Cython 構建。
在監督學習部分,Scikit-learn 提供了廣義線性模型、支持向量機、最近鄰演算法、高斯過程、樸素貝葉斯、決策樹和集成方法等演算法教程,同時還介紹了特徵選擇、隨即梯度下降演算法、線性與二次判別分析等在監督學習中非常重要的概念。
除了監督學習,半監督學習中的標籤傳播演算法和無監督學習中的聚類與降維演算法都有非常多的教程。此外,在模型選擇中,文檔教程描述了交叉驗證的使用、估計器超參數的調整、模型評估方法和模型持久化概念等。
數據預處理是機器學習非常重要的部分,我們可以使用歸一化等方法大大降低前向傳播與學習演算法的計算複雜度,也可以利用缺失值插補和特徵提取等方法增加數據的有效性。以下選取了 SVM 的部分使用教程,讀者可藉此了解 Scikit-learn 中文文檔的組織形式與基本內容,更完整的內容前查看原文檔。
支持向量機 (SVMs) 可用於以下監督學習演算法分類、回歸和異常檢測。支持向量機的優勢在於:
- 在高維空間中非常高效。
- 即使在數據維度比樣本數量大的情況下仍然有效。
- 在決策函數(稱為支持向量)中使用訓練集的子集,因此它也是高效利用內存的。
- 通用性:不同的核函數 核函數 與特定的決策函數一一對應。
支持向量機的缺點包括:
- 如果特徵數量比樣本數量大得多,在選擇核函數時要避免過擬合,而且正則化項是非常重要的。
- 支持向量機不直接提供概率估計,這些都是使用昂貴的五次交叉驗算計算的。
在 scikit-learn 中,支持向量機提供 dense(numpy.ndarray , 可以通過 numpy.asarray 進行轉換) 和 sparse(任何 scipy.sparse)樣例向量作為輸出。然而,要使用支持向量機來對 sparse 數據作預測,它必須已經擬合這樣的數據。使用 C 代碼的 numpy.ndarray (dense) 或者帶有 dtype=float64 的 scipy.sparse.csr_matrix (sparse) 來優化性能。
分類
SVC、NuSVC 和 LinearSVC 能在數據集中實現多元分類:
SVC 和 NuSVC 是相似的方法,但是接受稍許不同的參數設置並且有不同的數學方程。另一方面,LinearSVC 是另一個實現線性核函數的支持向量分類。記住 LinearSVC 不接受關鍵詞 kernel,因為它被假設為線性的。它也缺少一些 SVC 和 NuSVC 的成員(members)比如 support_。
和其他分類器一樣,SVC、NuSVC 和 LinearSVC 將兩個數組作為輸入:[n_samples, n_features] 大小的數組 X 作為訓練樣本,[n_samples] 大小的數組 y 作為類別標籤 (字元串或者整數):
>>> from sklearn import svm>>> X = [[0, 0], [1, 1]]>>> y = [0, 1]>>> clf = svm.SVC()>>> clf.fit(X, y) SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, decision_function_shape=ovr, degree=3, gamma=auto, kernel=rbf, max_iter=-1, probability=False, random_state=None, shrinking=True, tol=0.001, verbose=False)
在擬合後, 這個模型可以用來預測新的值:
>>> clf.predict([[2., 2.]])array([1])
SVMs 決策函數取決於訓練集的一些子集, 稱作支持向量. 這些支持向量的部分特性可以在 support_vectors_、support_和 n_support 找到:
>>> # 獲得支持向量>>> clf.support_vectors_array([[ 0., 0.], [ 1., 1.]])>>> # 獲得支持向量的索引get indices of support vectors>>> clf.support_ array([0, 1]...)>>> # 為每一個類別獲得支持向量的數量>>> clf.n_support_ array([1, 1]...)
以上是 SVM 簡單的介紹,這些內容都由 ApacheCN 翻自 Scikit-learn 。最後,感謝參與翻譯文檔的志願者,正因為他們,開源社區才能有如此高質量的學習資料。
推薦閱讀:
※樸素貝葉斯演算法和R語言
※一文弄懂神經網路中的反向傳播法——BackPropagation
※深度學習最新資料盤點
※決策樹與隨機森林
※機器學習實戰:k-means實現客戶分類