天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

當(dāng)前位置:主頁 > 論文百科 > 病蟲害防治論文 >

scikit learn中文文檔_基于 Python 和 Scikit-Learn 的機(jī)器學(xué)習(xí)介紹

發(fā)布時(shí)間:2016-09-16 13:06

  本文關(guān)鍵詞:scikit-learn,由筆耕文化傳播整理發(fā)布。


你好,%用戶名%!

我叫Alex,我在機(jī)器學(xué)習(xí)和網(wǎng)絡(luò)圖分析(主要是理論)有所涉獵。我同時(shí)在為一家俄羅斯移動(dòng)運(yùn)營(yíng)商開發(fā)大數(shù)據(jù)產(chǎn)品。這是我第一次在網(wǎng)上寫文章,不喜勿噴。

現(xiàn)在,很多人想開發(fā)高效的算法以及參加機(jī)器學(xué)習(xí)的競(jìng)賽。所以他們過來問我:”該如何開始?”。一段時(shí)間以前,我在一個(gè)俄羅斯聯(lián)邦政府的下屬機(jī)構(gòu)中領(lǐng)導(dǎo)了媒體和社交網(wǎng)絡(luò)大數(shù)據(jù)分析工具的開發(fā)。我仍然有一些我團(tuán)隊(duì)使用過的文檔,我樂意與你們分享。前提是讀者已經(jīng)有很好的數(shù)學(xué)和機(jī)器學(xué)習(xí)方面的知識(shí)(我的團(tuán)隊(duì)主要由MIPT(莫斯科物理與技術(shù)大學(xué))和數(shù)據(jù)分析學(xué)院的畢業(yè)生構(gòu)成)。

 基于 Python 和 Scikit-Learn 的機(jī)器學(xué)習(xí)介紹

這篇文章是對(duì)數(shù)據(jù)科學(xué)的簡(jiǎn)介,這門學(xué)科最近太火了。機(jī)器學(xué)習(xí)的競(jìng)賽也越來越多(如,Kaggle, TudedIT),而且他們的資金通常很可觀。

R和Python是提供給數(shù)據(jù)科學(xué)家的最常用的兩種工具。每一個(gè)工具都有其優(yōu)缺點(diǎn),但Python最近在各個(gè)方面都有所勝出(僅為鄙人愚見,雖然我兩者都用)。這一切的發(fā)生是因?yàn)?strong>scikit-learn庫(kù)的騰空出世,它包含有完善的文檔和豐富的機(jī)器學(xué)習(xí)算法。

請(qǐng)注意,我們將主要在這篇文章中探討機(jī)器學(xué)習(xí)算法。通常用Pandas包去進(jìn)行主數(shù)據(jù)分析會(huì)比較好,而且這很容易你自己完成。所以,讓我們集中精力在實(shí)現(xiàn)上。為了確定性,我們假設(shè)有一個(gè)特征-對(duì)象矩陣作為輸入,被存在一個(gè)*.csv文件中。

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

首先,數(shù)據(jù)要被加載到內(nèi)存中,才能對(duì)其操作。scikit-learn庫(kù)在它的實(shí)現(xiàn)用使用了NumPy數(shù)組,所以我們將用NumPy來加載*.csv文件。讓我們從UCI Machine Learning Repository下載其中一個(gè)數(shù)據(jù)集。

import numpy as np

import urllib

# url with dataset

url = ""

# download the file

raw_data = urllib.urlopen(url)

# load the CSV file as a numpy matrix

dataset = np.loadtxt(raw_data, delimiter=",")

# separate the data from the target attributes

X = dataset[:,0:7]

y = dataset[:,8]

我們將在下面所有的例子里使用這個(gè)數(shù)據(jù)組,,換言之,使用X特征物數(shù)組和y目標(biāo)變量的值。

數(shù)據(jù)標(biāo)準(zhǔn)化

我們都知道大多數(shù)的梯度方法(幾乎所有的機(jī)器學(xué)習(xí)算法都基于此)對(duì)于數(shù)據(jù)的縮放很敏感。因此,在運(yùn)行算法之前,我們應(yīng)該進(jìn)行標(biāo)準(zhǔn)化,或所謂的規(guī)格化。標(biāo)準(zhǔn)化包括替換所有特征的名義值,讓它們每一個(gè)的值在0和1之間。而對(duì)于規(guī)格化,它包括數(shù)據(jù)的預(yù)處理,使得每個(gè)特征的值有0和1的離差。scikit-learn庫(kù)已經(jīng)為其提供了相應(yīng)的函數(shù)。

from sklearn import metrics

from sklearn.ensemble import ExtraTreesClassifier

model = ExtraTreesClassifier()

model.fit(X, y)

# display the relative importance of each attribute

print(model.feature_importances_)

特征的選取

毫無疑問,解決一個(gè)問題最重要的是是恰當(dāng)選取特征、甚至創(chuàng)造特征的能力。這叫做特征選取和特征工程。雖然特征工程是一個(gè)相當(dāng)有創(chuàng)造性的過程,有時(shí)候更多的是靠直覺和專業(yè)的知識(shí),但對(duì)于特征的選取,已經(jīng)有很多的算法可供直接使用。如樹算法就可以計(jì)算特征的信息量。

from sklearn import metrics

from sklearn.ensemble import ExtraTreesClassifier

model = ExtraTreesClassifier()

model.fit(X, y)

# display the relative importance of each attribute

print(model.feature_importances_)

其他所有的方法都是基于對(duì)特征子集的高效搜索,從而找到最好的子集,意味著演化了的模型在這個(gè)子集上有最好的質(zhì)量。遞歸特征消除算法(RFE)是這些搜索算法的其中之一,scikit-learn庫(kù)同樣也有提供。

from sklearn.feature_selection import RFE

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

# create the RFE model and select 3 attributes

rfe = RFE(model, 3)

rfe = rfe.fit(X, y)

# summarize the selection of the attributes

print(rfe.support_)

print(rfe.ranking_)

算法的開發(fā)

正像我說的,scikit-learn庫(kù)已經(jīng)實(shí)現(xiàn)了所有基本機(jī)器學(xué)習(xí)的算法。讓我來瞧一瞧它們中的一些。

邏輯回歸

大多數(shù)情況下被用來解決分類問題(二元分類),但多類的分類(所謂的一對(duì)多方法)也適用。這個(gè)算法的優(yōu)點(diǎn)是對(duì)于每一個(gè)輸出的對(duì)象都有一個(gè)對(duì)應(yīng)類別的概率。

from sklearn import metrics

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()

model.fit(X, y)

print(model)

# make predictions

expected = y

predicted = model.predict(X)

# summarize the fit of the model

print(metrics.classification_report(expected, predicted))

print(metrics.confusion_matrix(expected, predicted))

樸素貝葉斯

它也是最有名的機(jī)器學(xué)習(xí)的算法之一,它的主要任務(wù)是恢復(fù)訓(xùn)練樣本的數(shù)據(jù)分布密度。這個(gè)方法通常在多類的分類問題上表現(xiàn)的很好。

from sklearn import metrics

from sklearn.naive_bayes import GaussianNB

model = GaussianNB()

model.fit(X, y)

print(model)

# make predictions

expected = y

predicted = model.predict(X)

# summarize the fit of the model

print(metrics.classification_report(expected, predicted))

print(metrics.confusion_matrix(expected, predicted))

k-最近鄰

kNN(k-最近鄰)方法通常用于一個(gè)更復(fù)雜分類算法的一部分。例如,我們可以用它的估計(jì)值做為一個(gè)對(duì)象的特征。有時(shí)候,一個(gè)簡(jiǎn)單的kNN算法在良好選擇的特征上會(huì)有很出色的表現(xiàn)。當(dāng)參數(shù)(主要是metrics)被設(shè)置得當(dāng),這個(gè)算法在回歸問題中通常表現(xiàn)出最好的質(zhì)量。

from sklearn import metrics

from sklearn.neighbors import KNeighborsClassifier

# fit a k-nearest neighbor model to the data

model = KNeighborsClassifier()

model.fit(X, y)

print(model)

# make predictions

expected = y

predicted = model.predict(X)

# summarize the fit of the model

print(metrics.classification_report(expected, predicted))

print(metrics.confusion_matrix(expected, predicted))

決策樹

分類和回歸樹(CART)經(jīng)常被用于這么一類問題,在這類問題中對(duì)象有可分類的特征且被用于回歸和分類問題。決策樹很適用于多類分類。

from sklearn import metrics

from sklearn.tree import DecisionTreeClassifier

# fit a CART model to the data

model = DecisionTreeClassifier()

model.fit(X, y)

print(model)

# make predictions

expected = y

predicted = model.predict(X)

# summarize the fit of the model

print(metrics.classification_report(expected, predicted))

print(metrics.confusion_matrix(expected, predicted))

支持向量機(jī)

SVM(支持向量機(jī))是最流行的機(jī)器學(xué)習(xí)算法之一,它主要用于分類問題。同樣也用于邏輯回歸,SVM在一對(duì)多方法的幫助下可以實(shí)現(xiàn)多類分類。

from sklearn import metrics

from sklearn.svm import SVC

# fit a SVM model to the data

model = SVC()

model.fit(X, y)

print(model)

# make predictions

expected = y

predicted = model.predict(X)

# summarize the fit of the model

print(metrics.classification_report(expected, predicted))

print(metrics.confusion_matrix(expected, predicted))

除了分類和回歸問題,scikit-learn還有海量的更復(fù)雜的算法,包括了聚類, 以及建立混合算法的實(shí)現(xiàn)技術(shù),如Bagging和Boosting。

如何優(yōu)化算法的參數(shù)

在編寫高效的算法的過程中最難的步驟之一就是正確參數(shù)的選擇。一般來說如果有經(jīng)驗(yàn)的話會(huì)容易些,但無論如何,我們都得尋找。幸運(yùn)的是scikit-learn提供了很多函數(shù)來幫助解決這個(gè)問題。

作為一個(gè)例子,我們來看一下規(guī)則化參數(shù)的選擇,在其中不少數(shù)值被相繼搜索了:

import numpy as np

from sklearn.linear_model import Ridge

from sklearn.grid_search import GridSearchCV

# prepare a range of alpha values to test

alphas = np.array([1,0.1,0.01,0.001,0.0001,0])

# create and fit a ridge regression model, testing each alpha

model = Ridge()

grid = GridSearchCV(estimator=model, param_grid=dict(alpha=alphas))

grid.fit(X, y)

print(grid)

# summarize the results of the grid search

print(grid.best_score_)

print(grid.best_estimator_.alpha)

有時(shí)候隨機(jī)地從既定的范圍內(nèi)選取一個(gè)參數(shù)更為高效,估計(jì)在這個(gè)參數(shù)下算法的質(zhì)量,然后選出最好的。

import numpy as np

from scipy.stats import uniform as sp_rand

from sklearn.linear_model import Ridge

from sklearn.grid_search import RandomizedSearchCV

# prepare a uniform distribution to sample for the alpha parameter

param_grid = {'alpha': sp_rand()}

# create and fit a ridge regression model, testing random alpha values

model = Ridge()

rsearch = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=100)

rsearch.fit(X, y)

print(rsearch)

# summarize the results of the random parameter search

print(rsearch.best_score_)

print(rsearch.best_estimator_.alpha)

至此我們已經(jīng)看了整個(gè)使用scikit-learn庫(kù)的過程,除了將結(jié)果再輸出到一個(gè)文件中。這個(gè)就作為你的一個(gè)練習(xí)吧,和R相比Python的一大優(yōu)點(diǎn)就是它有很棒的文檔說明。

在下一篇文章中,我們將深入探討其他問題。我們尤其是要觸及一個(gè)很重要的東西——特征的建造。我真心地希望這份材料可以幫助新手?jǐn)?shù)據(jù)科學(xué)家盡快開始解決實(shí)踐中的機(jī)器學(xué)習(xí)問題。最后,我祝愿那些剛剛開始參加機(jī)器學(xué)習(xí)競(jìng)賽的朋友擁有耐心以及馬到成功!

【編輯推薦】

【責(zé)任編輯:wangxueyan TEL:(010)68476606】



  本文關(guān)鍵詞:scikit-learn,由筆耕文化傳播整理發(fā)布。



本文編號(hào):116390

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/kaixinbaike/116390.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶7b553***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com
国产精品一区二区传媒蜜臀| 日本不卡在线视频你懂的| 99免费人成看国产片| 视频一区日韩经典中文字幕| 国产综合香蕉五月婷在线| 国产老熟女超碰一区二区三区| 日本高清不卡一二三区| 欧美日韩精品视频在线| 午夜精品麻豆视频91| 久久热在线视频免费观看| 国产精品欧美日韩中文字幕| 亚洲乱妇熟女爽的高潮片| 日本在线高清精品人妻| 国产黄色高清内射熟女视频| 国产级别精品一区二区视频| 日韩无套内射免费精品| 国产偷拍精品在线视频| 女同伦理国产精品久久久| 日本高清不卡在线一区| 91福利视频日本免费看看| 91插插插外国一区二区| 欧美成人国产精品高清| 色婷婷人妻av毛片一区二区三区| 日韩精品在线观看一区| 精品综合欧美一区二区三区| 99亚洲综合精品成人网色播| 97人妻精品一区二区三区男同| 久久热九九这里只有精品| 欧美日韩亚洲精品在线观看| 91一区国产中文字幕| 中国黄色色片色哟哟哟哟哟哟| 国产麻豆一区二区三区在| 亚洲精品欧美精品日韩精品| 日本一区二区三区黄色| 免费黄色一区二区三区| 亚洲国产精品久久综合网| 欧美多人疯狂性战派对| 乱女午夜精品一区二区三区 | 欧美一区二区三区视频区| 日韩欧美中文字幕人妻| 国产原创激情一区二区三区|