一、概述
機器學習算法在近幾年大數據點燃的熱火熏陶下已經變得被人所“熟知”,就算不懂得其中各算法理論,叫你喊上一兩個著名算法的名字,你也能昂首挺胸脫口而出。當然了,算法之林雖大,但能者還是有限,能適應某些環境并取得較好效果的算法會脫穎而出,而表現平平者則被歷史所淡忘。隨著機器學習社區的發展和實踐驗證,這群脫穎而出者也逐漸被人所認可和青睞,同時獲得了更多社區力量的支持、改進和推廣。
以最廣泛的分類算法為例,大致可以分為線性和非線性兩大派別。線性算法有著名的邏輯回歸、樸素貝葉斯、最大熵等,非線性算法有隨機森林、決策樹、神經網絡、核機器等等。線性算法舉的大旗是訓練和預測的效率比較高,但最終效果對特征的依賴程度較高,需要數據在特征層面上是線性可分的。因此,使用線性算法需要在特征工程上下不少功夫,盡量對特征進行選擇、變換或者組合等使得特征具有區分性。而非線性算法則牛逼點,可以建模復雜的分類面,從而能更好的擬合數據。
那在我們選擇了特征的基礎上,哪個機器學習算法能取得更好的效果呢?誰也不知道。實踐是檢驗哪個好的不二標準。那難道要苦逼到寫五六個機器學習的代碼嗎?No,機器學習社區的力量是強大的,碼農界的共識是不重復造輪子!因此,對某些較為成熟的算法,總有某些優秀的庫可以直接使用,省去了大伙調研的大部分時間。
基于目前使用python較多,而python界中遠近聞名的機器學習庫要數scikit-learn莫屬了。這個庫優點很多。簡單易用,接口抽象得非常好,而且文檔支持實在感人。本文中,我們可以封裝其中的很多機器學習算法,然后進行一次性測試,從而便于分析取優。當然了,針對具體算法,超參調優也非常重要。
二、Scikit-learn的python實踐
本篇文章利用線性回歸算法預測波士頓的房價。波士頓房價數據集包含波士頓郊區住房價值的信息。
第一步:Python庫導入
%matplotlib inlineimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport sklearn
第二步:數據獲取和理解
波士頓數據集是scikit-learn的內置數據集,可以直接拿來使用。
from sklearn.datasets import load_bostonboston = load_boston()
print(boston.keys())
dict_keys([‘data', ‘target', ‘feature_names', ‘DESCR'])
print(boston.data.shape)
(506, 13)
print(boston.feature_names)
[‘CRIM' ‘ZN' ‘INDUS' ‘CHAS' ‘NOX' ‘RM' ‘AGE' ‘DIS' ‘RAD' ‘TAX' ‘PTRATIO''B' ‘LSTAT']
新聞熱點
疑難解答