如果您是一名Python程序員肪跋,或者您正在尋找一個(gè)強(qiáng)大的庫(kù)州既,您可以將機(jī)器學(xué)習(xí)帶入生產(chǎn)系統(tǒng),那么您需要認(rèn)真考慮的庫(kù)是scikit-learn褥琐。
在這篇文章中晤郑,您將獲得scikit-learn庫(kù)的概述以及可以從中了解更多信息的有用參考資料造寝。
它從哪里來(lái)的吭练?
Scikit-learn最初是由David Cournapeau在2007年開(kāi)發(fā)的Google夏季代碼項(xiàng)目鲫咽。
后來(lái)Matthieu Brucher加入了這個(gè)項(xiàng)目并開(kāi)始將其作為論文工作的一部分谷异。2010年歹嘹,INRIA參與其中孔庭,第一次公開(kāi)發(fā)布(v0.1 beta)于2010年1月下旬發(fā)布圆到。
該項(xiàng)目目前有30多名活躍的貢獻(xiàn)者,并已獲得INRIA马绝,Google迹淌,Tinyclues和Python軟件基金會(huì)的贊助己单。
什么是scikit-learn纹笼?
Scikit-learn通過(guò)Python中的一致接口提供一系列有監(jiān)督和無(wú)監(jiān)督的學(xué)習(xí)算法廷痘。
它根據(jù)許可的簡(jiǎn)化BSD許可證授權(quán),并在許多Linux發(fā)行版下分發(fā)元暴,鼓勵(lì)學(xué)術(shù)和商業(yè)用途茉盏。
該庫(kù)是基于SciPy(Scientific Python)構(gòu)建的枢冤,必須先安裝才能使用scikit-learn淹真。這個(gè)堆棧包括:
- NumPy:基本n維數(shù)組包
- SciPy:科學(xué)計(jì)算的基礎(chǔ)庫(kù)
- Matplotlib:全面的2D / 3D繪圖
- IPython:增強(qiáng)的交互式控制臺(tái)
- Sympy:符號(hào)數(shù)學(xué)
- 熊貓:數(shù)據(jù)結(jié)構(gòu)和分析
SciPy護(hù)理的擴(kuò)展或模塊通常命名為SciKits。因此巍糯,該模塊提供學(xué)習(xí)算法祟峦,并命名為scikit-learn。
該庫(kù)的愿景是在生產(chǎn)系統(tǒng)中使用所需的穩(wěn)健性和支持水平惰聂。這意味著要深入關(guān)注易用性搓幌,代碼質(zhì)量迅箩,協(xié)作饲趋,文檔和性能等問(wèn)題。
雖然接口是Python堂污,但c-libraries可以利用性能龄砰,例如數(shù)組和矩陣運(yùn)算的numpy换棚,LAPACK,LibSVM以及cython的精心使用娘汞。
有什么特點(diǎn)夕玩?
該庫(kù)專(zhuān)注于建模數(shù)據(jù)风秤。它不專(zhuān)注于加載缤弦,操作和匯總數(shù)據(jù)彻磁。有關(guān)這些功能狸捅,請(qǐng)參閱NumPy和Pandas。
截圖取自均值漂移聚類(lèi)算法的演示
scikit-learn提供的一些流行的模型組包括:
- 聚類(lèi):用于對(duì)未標(biāo)記的數(shù)據(jù)(如KMeans)進(jìn)行分組累提。
- 交叉驗(yàn)證:用于估計(jì)監(jiān)督模型對(duì)未見(jiàn)數(shù)據(jù)的性能尘喝。
- 數(shù)據(jù)集:用于測(cè)試數(shù)據(jù)集以及用于生成具有用于調(diào)查模型行為的特定屬性的數(shù)據(jù)集。
- 降維:用于減少數(shù)據(jù)中的屬性數(shù)量斋陪,以進(jìn)行摘要朽褪,可視化和特征選擇,例如主成分分析无虚。
- 集合方法:用于組合多個(gè)監(jiān)督模型的預(yù)測(cè)缔赠。
- 特征提取:用于定義圖像和文本數(shù)據(jù)中的屬性。
- 特征選擇:用于識(shí)別用于創(chuàng)建監(jiān)督模型的有意義的屬性友题。
- 參數(shù)調(diào)整:用于充分利用受監(jiān)督的模型。
- 流形學(xué)習(xí):用于總結(jié)和描述復(fù)雜的多維數(shù)據(jù)度宦。
- 監(jiān)督模型:一個(gè)龐大的陣列踢匣,不僅限于廣義線性模型,判別分析戈抄,樸素貝葉斯离唬,惰性方法,神經(jīng)網(wǎng)絡(luò)划鸽,支持向量機(jī)和決策樹(shù)男娄。
示例:分類(lèi)和回歸樹(shù)
我想舉個(gè)例子向您展示使用庫(kù)是多么容易。
在此示例中漾稀,我們使用分類(lèi)和回歸樹(shù)(CART)決策樹(shù)算法來(lái)模擬Iris花數(shù)據(jù)集模闲。
此數(shù)據(jù)集作為庫(kù)的示例數(shù)據(jù)集提供并加載。分類(lèi)器適合數(shù)據(jù)崭捍,然后對(duì)訓(xùn)練數(shù)據(jù)進(jìn)行預(yù)測(cè)尸折。
最后,打印分類(lèi)準(zhǔn)確度和混淆矩陣殷蛇。
# Sample Decision Tree Classifier
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier
# load the iris datasets
dataset = datasets.load_iris()
# fit a CART model to the data
model = DecisionTreeClassifier()
model.fit(dataset.data, dataset.target)
print(model)
# make predictions
expected = dataset.target
predicted = model.predict(dataset.data)
# summarize the fit of the model
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))
運(yùn)行此示例將生成以下輸出实夹,顯示已訓(xùn)練模型的詳細(xì)信息,根據(jù)一些常見(jiàn)指標(biāo)的模型技能和混淆矩陣粒梦。
DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
max_features=None, max_leaf_nodes=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=None, splitter='best')
precision recall f1-score support
0 1.00 1.00 1.00 50
1 1.00 1.00 1.00 50
2 1.00 1.00 1.00 50
avg / total 1.00 1.00 1.00 150
[[50 0 0]
[ 0 50 0]
[ 0 0 50]]
誰(shuí)在使用它亮航?
它具有良好的測(cè)試覆蓋率和管理版本,適用于原型和生產(chǎn)項(xiàng)目匀们。
資源
如果您有興趣了解更多信息缴淋,請(qǐng)查看包含文檔和相關(guān)資源的Scikit-Learn主頁(yè)。
您可以從github存儲(chǔ)庫(kù)獲取代碼,并且在Sourceforge項(xiàng)目中可以獲得歷史版本重抖。
文檔
我建議您從快速入門(mén)教程開(kāi)始露氮,然后瀏覽用戶指南和示例庫(kù),了解您感興趣的算法钟沛。
最終畔规,scikit-learn是一個(gè)庫(kù),API參考將是完成工作的最佳文檔恨统。