python datasets 下载_Python机器学习·微教程
Python目前是機(jī)器學(xué)習(xí)領(lǐng)域增長最快速的編程語言之一。
該教程共分為11小節(jié)。在這個(gè)教程里,你將學(xué)會:
- 如何處理數(shù)據(jù)集,并構(gòu)建精確的預(yù)測模型
- 使用Python完成真實(shí)的機(jī)器學(xué)習(xí)項(xiàng)目
這是一個(gè)非常簡潔且實(shí)用的教程,希望你能收藏,以備后面復(fù)習(xí)!
接下來進(jìn)入正題~
這個(gè)微課程適合誰學(xué)習(xí)?
開始之前,要搞清楚該教程是否屬于你的菜。
如果你不符合以下幾點(diǎn),也沒關(guān)系,只要花點(diǎn)額外時(shí)間搞清楚知識盲點(diǎn)就能跟上。
- 熟悉python語法,會寫簡單腳本。這意味著你在此之前接觸過python,或者懂得其它編程語言,類C語言都是可以的。
- 了解機(jī)器學(xué)習(xí)的基本概念。基本概念包括知道什么是監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、分類和預(yù)測的區(qū)別、交叉驗(yàn)證、簡單算法。不要被這些嚇到了,并非要求你是個(gè)機(jī)器學(xué)習(xí)專家,只是你要知道如何查找并學(xué)習(xí)使用。
所以這個(gè)教程既不是python入門,也不是機(jī)器學(xué)習(xí)入門。而是引導(dǎo)你從一個(gè)機(jī)器學(xué)習(xí)初級開發(fā)者,到能夠基于python生態(tài)開展機(jī)器學(xué)習(xí)項(xiàng)目的專業(yè)開發(fā)者。
教程目錄
該教程分為12節(jié)
第1節(jié):下載并安裝python及Scipy生態(tài)
第2節(jié):熟悉使用python、numpy、matplotlib和pandas
第3節(jié):加載CSV數(shù)據(jù)
第4節(jié):對數(shù)據(jù)進(jìn)行描述性統(tǒng)計(jì)分析
第5節(jié):對數(shù)據(jù)進(jìn)行可視化分析
第6節(jié):數(shù)據(jù)預(yù)處理
第7節(jié):通過重采樣進(jìn)行算法評估
第8節(jié):模型比較和選擇
第9節(jié):通過算法調(diào)整提高模型精度
第10節(jié):通過集合預(yù)測提高模型精度
第11節(jié):完善并保存模型
希望大家在學(xué)習(xí)的過程中能夠自主尋找解決困難的辦法,網(wǎng)上資源很豐富,這也是自我提升很關(guān)鍵的一步。當(dāng)然也可以在評論區(qū)留言哦!
第1節(jié):下載并安裝python及Scipy生態(tài)
這一節(jié)內(nèi)容比較簡單,你需要下載python3.6并安裝在你的系統(tǒng)里,我用的win10系統(tǒng)。
接著要安裝Scipy生態(tài)和scikit-learn庫,這里推薦使用pip安裝。
簡單介紹一下Scipy,Scipy是一個(gè)基于python的數(shù)學(xué)、科學(xué)和工程軟件開源生態(tài)系統(tǒng)。包含一些核心庫:numpy、scipy、pandas、matplotlib、ipython、sympy
如果你不想這么麻煩,那么也可以使用傻瓜式一條龍安裝-Anaconda,這里面預(yù)裝了python及一百多個(gè)庫。
安裝好后,就可以在命令行鍵入“python”,就可以運(yùn)行python了。
看一下python及各個(gè)庫的版本:
# Python version import sys print('Python: {}'.format(sys.version)) # scipy import scipy print('scipy: {}'.format(scipy.__version__)) # numpy import numpy print('numpy: {}'.format(numpy.__version__)) # matplotlib import matplotlib print('matplotlib: {}'.format(matplotlib.__version__)) # pandas import pandas print('pandas: {}'.format(pandas.__version__)) # scikit-learn import sklearn print('sklearn: {}'.format(sklearn.__version__))如果沒有報(bào)錯(cuò),那么安裝環(huán)節(jié)就成功了。
第2節(jié):熟悉使用python、numpy、matplotlib和pandas
第一步,你要能夠讀寫python腳本。
python是一門區(qū)分大小寫、使用#注釋、用tab縮進(jìn)表示代碼塊的語言。
這一小節(jié)目的在于練習(xí)python語法,以及在python環(huán)境下如何使用重要的Scipy生態(tài)工具。
包括:
- 使用python列表
- 使用numpy array數(shù)組操作
- 使用matplotlib簡單繪圖
- 使用pandas兩種數(shù)據(jù)結(jié)構(gòu)Series和DataFrame
第3節(jié):加載CSV數(shù)據(jù)
機(jī)器學(xué)習(xí)算法需要有數(shù)據(jù),這節(jié)講解如何在python中正確地加載CSV數(shù)據(jù)集
有幾種常用的方法供參考:
- 使用標(biāo)準(zhǔn)庫中CSV的CSV.reader()加載
- 使用第三方庫numpy中的numpy.loadtxt()加載
- 使用第三方庫pandas中的pandas.read_csv()加載
這里使用pandas來加載數(shù)據(jù)集,數(shù)據(jù)集使用網(wǎng)上數(shù)據(jù)Pima Indians onset of diabetes,你也可以使用本地?cái)?shù)據(jù)練習(xí)
# Load CSV using Pandas from URL import pandas # 導(dǎo)入pandas庫 url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = pandas.read_csv(url, names=names) # 讀取數(shù)據(jù) print(data.head(5)) # 打印數(shù)據(jù)集前5行第4節(jié):對數(shù)據(jù)進(jìn)行描述性統(tǒng)計(jì)分析
導(dǎo)入數(shù)據(jù)后,第一步要做的是理解數(shù)據(jù)。
對數(shù)據(jù)理解的越透徹,建立的模型也會越精確。這里就要提到描述性統(tǒng)計(jì)分析,主要包括數(shù)據(jù)的頻數(shù)分析、集中趨勢分析、離散程度分析、分布以及一些基本的統(tǒng)計(jì)圖形。
有以下幾點(diǎn)操作:
- 使用head()和tail()函數(shù)查看數(shù)據(jù)樣本
- 使用shape屬性查看數(shù)據(jù)規(guī)格
- 使用dtypes屬性查看每個(gè)變量的數(shù)據(jù)類型
- 使用describe()函數(shù)查看數(shù)據(jù)描述
- 使用corr()函數(shù)計(jì)算各個(gè)變量之間的相關(guān)性
依然使用pima數(shù)據(jù)集,接上一節(jié)讀取數(shù)據(jù)后:
# Load CSV using Pandas from URL import pandas # 導(dǎo)入pandas庫 url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = pandas.read_csv(url, names=names) # 讀取數(shù)據(jù)head_5 = data.head(5) # 查看前5行 print(head_5) tail_5 = data.tail(5) # 查看后5行 print(tail_5) shape_ = data.shape # 查看數(shù)據(jù)規(guī)格,即多少行多少列 print(shape) dtypes_ = data.dtypes # 查看每個(gè)變量的數(shù)據(jù)類型 print(dtypes_) corr_ = data.corr() # 查看各個(gè)變量之間的相關(guān)性 print(corr_) description = data.describe() # 查看數(shù)據(jù)描述 print(description)數(shù)據(jù)描述結(jié)果第5節(jié):對數(shù)據(jù)進(jìn)行可視化分析
僅僅是做描述性統(tǒng)計(jì)無法直觀地理解數(shù)據(jù),python提供了豐富的可視化工具,幫助展示數(shù)據(jù)。這一小節(jié)就是對上節(jié)數(shù)據(jù)集進(jìn)行可視化描述,讓你一目了然。
有以下幾點(diǎn)操作:
- 使用hist()方法創(chuàng)建每個(gè)變量的直方圖
- 使用plot(kind='box')方法創(chuàng)建每個(gè)變量的箱圖
- 使用plotting.scatter_matrix()方法創(chuàng)建矩陣散點(diǎn)圖
第6節(jié):數(shù)據(jù)預(yù)處理
在將數(shù)據(jù)用作機(jī)器學(xué)習(xí)模型之前,需要對數(shù)據(jù)的內(nèi)容和結(jié)構(gòu)做適當(dāng)?shù)恼{(diào)整,才能更好的適應(yīng)模型。這就是數(shù)據(jù)預(yù)處理工作。
有一些方法技術(shù)可以用于數(shù)據(jù)預(yù)處理,比如:
- 數(shù)據(jù)標(biāo)準(zhǔn)化。數(shù)據(jù)標(biāo)準(zhǔn)化是將數(shù)據(jù)按比例縮放,使之落入一個(gè)小的特定區(qū)間。有利于提升模型的收斂速度和模型精度。比較典型的標(biāo)準(zhǔn)化方法有min-max標(biāo)準(zhǔn)化、z-score 標(biāo)準(zhǔn)化、歸一化等
- 數(shù)據(jù)二值化。特征二值化是對數(shù)值特征進(jìn)行閾值處理以獲得布爾值的過程,根據(jù)閾值將數(shù)據(jù)二值化(將特征值設(shè)置為0或1)大于閾值的值映射到1,而小于或等于閾值的值映射到0.默認(rèn)閾值為0時(shí),只有正值映射到1。方法有Binarizing等。
- 分類數(shù)據(jù)連續(xù)化。通常,特征不是作為連續(xù)值給出的,而是文本字符串或者數(shù)字編碼的類別。比如性別數(shù)據(jù)通常是["男", "女"]這樣的數(shù)據(jù), 可以編碼成[1,2], 但是這種數(shù)據(jù)通常不是可以直接進(jìn)入機(jī)器學(xué)習(xí)模型的。將這種分類數(shù)據(jù)進(jìn)行連續(xù)化的方法最著名的就是one-hot-encoding
- 估算缺失的值。由于各種原因,許多真實(shí)世界的數(shù)據(jù)集包含缺失值,通常編碼為空白,NaN或其他占位符。然而,這樣的數(shù)據(jù)集與scikit-learn估計(jì)器不兼容,它們假定數(shù)組中的所有值都是數(shù)值的,并且都具有并保持含義。使用不完整數(shù)據(jù)集的基本策略是放棄包含缺失值的整個(gè)行和/或列。然而,這是以丟失可能有價(jià)值的數(shù)據(jù)為代價(jià)的(盡管不完整)。更好的策略是推算缺失值,即從數(shù)據(jù)的已知部分推斷它們。
上面提到的數(shù)據(jù)預(yù)處理技術(shù)都可以通過scikit-learn提供的方法實(shí)現(xiàn)。
簡單介紹下scikit-learn,scikit-learn擁有可以用于監(jiān)督和無監(jiān)督學(xué)習(xí)的方法,一般來說監(jiān)督學(xué)習(xí)使用的更多。sklearn中的大部分函數(shù)可以歸為估計(jì)器(Estimator)和轉(zhuǎn)化器(Transformer)兩類。
估計(jì)器(Estimator)其實(shí)就是模型,它用于對數(shù)據(jù)的預(yù)測或回歸。基本上估計(jì)器都會有以下幾個(gè)方法:
- fit(x,y):傳入數(shù)據(jù)以及標(biāo)簽即可訓(xùn)練模型,訓(xùn)練的時(shí)間和參數(shù)設(shè)置,數(shù)據(jù)集大小以及數(shù)據(jù)本身的特點(diǎn)有關(guān)
- score(x,y)用于對模型的正確率進(jìn)行評分(范圍0-1)。但由于對在不同的問題下,評判模型優(yōu)劣的的標(biāo)準(zhǔn)不限于簡單的正確率,可能還包括召回率或者是查準(zhǔn)率等其他的指標(biāo),特別是對于類別失衡的樣本,準(zhǔn)確率并不能很好的評估模型的優(yōu)劣,因此在對模型進(jìn)行評估時(shí),不要輕易的被score的得分蒙蔽。
- predict(x)用于對數(shù)據(jù)的預(yù)測,它接受輸入,并輸出預(yù)測標(biāo)簽,輸出的格式為numpy數(shù)組。我們通常使用這個(gè)方法返回測試的結(jié)果,再將這個(gè)結(jié)果用于評估模型。
轉(zhuǎn)化器(Transformer)用于對數(shù)據(jù)的處理,例如標(biāo)準(zhǔn)化、降維以及特征選擇等等。同與估計(jì)器的使用方法類似:
- fit(x,y):該方法接受輸入和標(biāo)簽,計(jì)算出數(shù)據(jù)變換的方式。
- transform(x):根據(jù)已經(jīng)計(jì)算出的變換方式,返回對輸入數(shù)據(jù)x變換后的結(jié)果(不改變x)
- fit_transform(x,y) :該方法在計(jì)算出數(shù)據(jù)變換方式之后對輸入x就地轉(zhuǎn)換。
列如,我要對數(shù)據(jù)集進(jìn)行標(biāo)準(zhǔn)化處理,用到scikit-learn庫中的StandardScaler()函數(shù),那么先要用該函數(shù)的fit()方法,計(jì)算出數(shù)據(jù)轉(zhuǎn)換的方式,再用transform()方法根據(jù)已經(jīng)計(jì)算出的變換方式,返回對輸入數(shù)據(jù)x標(biāo)準(zhǔn)化變換后的結(jié)果。
# 標(biāo)準(zhǔn)化數(shù)據(jù) (0 mean, 1 stdev) from sklearn.preprocessing import StandardScaler # 導(dǎo)入標(biāo)準(zhǔn)化函數(shù) import pandas import numpy # 讀取數(shù)據(jù) url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv" names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] dataframe = pandas.read_csv(url, names=names) array = dataframe.values # 將數(shù)據(jù)分割為輸入和響應(yīng)兩部分,即X和Y X = array[:,0:8] Y = array[:,8] # 對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理 scaler = StandardScaler().fit(X) rescaledX = scaler.transform(X) # summarize transformed data numpy.set_printoptions(precision=3) print(rescaledX[0:5,:])第7節(jié):通過重采樣方法進(jìn)行算法評估
用于訓(xùn)練模型的數(shù)據(jù)集稱為訓(xùn)練集,但如何評估訓(xùn)練出來的模型的準(zhǔn)確度呢?顯然不能再用訓(xùn)練集,否則既是裁判又是運(yùn)動員。
所以,需要一個(gè)新的數(shù)據(jù)集用于驗(yàn)證模型的準(zhǔn)確度,新數(shù)據(jù)的獲取就需要用到重采樣方法了。重采樣可以將數(shù)據(jù)集切分為訓(xùn)練集和驗(yàn)證集兩個(gè)數(shù)據(jù),前者用于訓(xùn)練模型,后者用于評估模型。
驗(yàn)證數(shù)據(jù)取自訓(xùn)練數(shù)據(jù),但不參與訓(xùn)練,這樣可以相對客觀的評估模型對于訓(xùn)練集之外數(shù)據(jù)的匹配程度。
模型在驗(yàn)證數(shù)據(jù)中的評估常用的是交叉驗(yàn)證,又稱循環(huán)驗(yàn)證。它將原始數(shù)據(jù)分成K組(K-Fold),將每個(gè)子集數(shù)據(jù)分別做一次驗(yàn)證集,其余的K-1組子集數(shù)據(jù)作為訓(xùn)練集,這樣會得到K個(gè)模型。這K個(gè)模型分別在驗(yàn)證集中評估結(jié)果,最后的誤差MSE(Mean Squared Error)加和平均就得到交叉驗(yàn)證誤差。
交叉驗(yàn)證有效利用了有限的數(shù)據(jù),并且評估結(jié)果能夠盡可能接近模型在測試集上的表現(xiàn),可以做為模型優(yōu)化的指標(biāo)使用。
最后要通過某種評估規(guī)則計(jì)算出模型準(zhǔn)確度的分?jǐn)?shù),這里提供了cross_val_score(scoring='')函數(shù)評估交叉驗(yàn)證結(jié)果,其中參數(shù)scoring代表評估規(guī)則。評估規(guī)則有很多種,針對回歸和分類,有不同的選擇,比如:
這一節(jié)要做的是:
- 將數(shù)據(jù)集切分為訓(xùn)練集和驗(yàn)證集
- 使用k折交叉驗(yàn)證估算算法的準(zhǔn)確性
- 使用cross_val_score()函數(shù)評估交叉驗(yàn)證結(jié)果,輸出k折交叉驗(yàn)證準(zhǔn)確度評分
未完待續(xù)
參考:machinelearningmastery
總結(jié)
以上是生活随笔為你收集整理的python datasets 下载_Python机器学习·微教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电气工程及其自动化专业英语苏小林翻译_“
- 下一篇: python 效率_Python 运行效