從零開始擴展機器學習數(shù)據(jù)
許多機器學習算法都希望數(shù)據(jù)能夠持續(xù)擴展。在本教程中,你可以學會如何為機器學習重新調(diào)整數(shù)據(jù)。挖坑一時爽,填坑拖延黨,你們的贊將是學姐填坑的強大動力!點贊吧同學們!
?
許多機器學習算法期望輸入數(shù)據(jù)甚至輸出數(shù)據(jù)的規(guī)模是等價的。在線性回歸和邏輯回歸中,這有助于對輸入進行加權(quán)以作出預(yù)測。在人工神經(jīng)網(wǎng)絡(luò)和深度學習等復(fù)雜的加權(quán)輸入組合方法中,這很重要。
?
在本教程中,我們將練習縮放一個標準機器學習數(shù)據(jù)集的CSV格式。
?
用皮馬印第安人數(shù)據(jù)集(共768行和9列)。文件中的所有值都是數(shù)字,特別是浮點值。我們將首先學習如何加載文件,然后學習如何將加載的字符串轉(zhuǎn)換為數(shù)值。
?
數(shù)據(jù)集文件及詳細信息:
https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.csv
https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.names
?
接下來教程三步走:1、規(guī)范化數(shù)據(jù);2、標準化數(shù)據(jù);3、何時規(guī)范化和標準化。
?
規(guī)范化數(shù)據(jù)
?
根據(jù)上下文的不同,規(guī)范化可以引用不同的技術(shù)。
?
在這里,我們使用規(guī)范化指的是將輸入變量重新縮放到0到1之間。
?
規(guī)范化要求我們知道每個屬性的最小值和最大值,通過枚舉值,可以輕松估計數(shù)據(jù)集中每個屬性的最小值和最大值。
?
如果您對問題領(lǐng)域有深入了解,則可以從訓練數(shù)據(jù)中估計或直接指定。
?
下面的代碼片段定義了dataset_minmax() 函數(shù),該函數(shù)計算數(shù)據(jù)集中每個屬性的最小值和最大值,然后返回這些最小值和最大值的數(shù)組。
?
?
我們可以設(shè)計一個小數(shù)據(jù)集進行測試,如下所示:
使用這個設(shè)計的數(shù)據(jù)集,我們可以測試計算每個列的最小值和最大值的函數(shù)。
?
運行該示例會產(chǎn)生以下輸出。
?
首先,數(shù)據(jù)集以列表格式打印,然后每列的最小值和最大值以column1: min,max 和 column2: min,max格式打印。
?
例如:
?
?
一旦我們估計了每列的最大和最小允許值,我們現(xiàn)在可以將原始數(shù)據(jù)歸一化到范圍 0 和 1。
?
對列的單個值進行歸一化的計算是:
?
?
接下來用normalize_dataset()函數(shù),該函數(shù)對提供的數(shù)據(jù)集的每一列的值進行規(guī)范化。
?
?
可以將這個函數(shù)與dataset_minmax()函數(shù)綁定在一起,并對已創(chuàng)建的數(shù)據(jù)集進行規(guī)范化。
?
?
運行此示例將打印以下輸出,包括標準化數(shù)據(jù)集。
?
?
我們可以將此代碼與加載 CSV 數(shù)據(jù)集的代碼結(jié)合起來,并加載和規(guī)范化 Pima Indians 糖尿病數(shù)據(jù)集。
?
下載 Pima Indians 數(shù)據(jù)集并將其放置在您當前的目錄中,名稱為pima-indians-diabetes.csv。
?
數(shù)據(jù)集文件:
https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.csv
?
打開文件并刪除底部的所有空行。
?
該示例首先加載數(shù)據(jù)集并將每列的值從字符串轉(zhuǎn)換為浮點值。每列的最小值和最大值從數(shù)據(jù)集中估計,最后,數(shù)據(jù)集中的值被歸一化。
?
?
運行該示例會產(chǎn)生以下輸出。
?
數(shù)據(jù)集中的第一條記錄在標準化前后print,顯示縮放的效果。
?
?
標準化數(shù)據(jù)
?
標準化是一種重新縮放技術(shù),是指將數(shù)據(jù)的分布集中在值 0 上,將標準偏差集中在值 1 上。
?
均值和標準差可以一起用于總結(jié)正態(tài)分布,也稱為高斯分布或鐘形曲線。
?
它要求在縮放之前知道每列值的平均值和標準偏差。與上面的歸一化一樣,我們可以從訓練數(shù)據(jù)中估計這些值,或者使用領(lǐng)域知識來指定它們的值。
?
讓我們從創(chuàng)建函數(shù)來估計數(shù)據(jù)集中每一列的均值和標準差統(tǒng)計數(shù)據(jù)開始。
?
均值描述了一組數(shù)字的中間或集中趨勢。列的平均值計算為列的所有值的總和除以值的總數(shù)。
?
?
下面名為column_means()的函數(shù)計算數(shù)據(jù)集中每一列的平均值。
?
?
標準偏差描述了值與平均值的平均分布。它可以計算為每個值與平均值之間的平方差之和除以值的數(shù)量減 1 的平方根。
下面名為column_stdevs()的函數(shù)計算數(shù)據(jù)集中每一列值的標準偏差,并假設(shè)已經(jīng)計算了平均值。
?
同樣,我們可以設(shè)計一個小數(shù)據(jù)集來演示對數(shù)據(jù)集的均值和標準差的估計。
?
使用 Excel 電子表格,我們可以估計每列的均值和標準差,如下所示:
?
使用設(shè)計的數(shù)據(jù)集,我們可以估計匯總統(tǒng)計信息。
?
執(zhí)行該示例提供以下輸出,與電子表格中計算出的數(shù)字相匹配。
一旦計算了匯總統(tǒng)計數(shù)據(jù),我們就可以輕松地對每列中的值進行標準化。
?
標準化給定值的計算如下:
下面是一個名為standardize_dataset()的函數(shù),它實現(xiàn)了這個方程
將其與用于估計均值和標準差匯總統(tǒng)計數(shù)據(jù)的函數(shù)相結(jié)合,我們可以標準化我們設(shè)計的數(shù)據(jù)集。
執(zhí)行此示例會產(chǎn)生以下輸出,顯示人為數(shù)據(jù)集的標準化值。
同樣,我們可以證明機器學習數(shù)據(jù)集的標準化。
?
下面的示例演示了如何加載和標準化 Pima Indians 糖尿病數(shù)據(jù)集,假設(shè)與前面的標準化示例一樣位于當前工作目錄中。
運行示例打印數(shù)據(jù)集的第一行,首先以加載的原始格式打印,然后標準化,這使我們能夠看到差異以進行比較。
?
何時規(guī)范化和標準化
?
標準化是一種縮放技術(shù),它假設(shè)您的數(shù)據(jù)符合正態(tài)分布。
?
如果給定的數(shù)據(jù)屬性正?;蚪咏#@可能是要使用的縮放方法。
?
記錄標準化過程中使用的匯總統(tǒng)計數(shù)據(jù)是一種很好的做法,以便您可以在將來標準化數(shù)據(jù)時應(yīng)用它們,您可能希望與您的模型一起使用。
?
規(guī)范化是一種不假設(shè)任何特定分布的縮放技術(shù)。
?
如果您的數(shù)據(jù)不是正態(tài)分布的,請考慮在應(yīng)用機器學習算法之前對其進行標準化。
?
再次記錄規(guī)范化過程中使用的每一列的最小值和最大值是一種很好的做法,以防您將來需要規(guī)范化新數(shù)據(jù)以用于您的模型。
?
?
文章來源:
https://machinelearningmastery.com/scale-machine-learning-data-scratch-python/
免責聲明:所載內(nèi)容來源互聯(lián)網(wǎng),僅供參考。轉(zhuǎn)載稿件版權(quán)歸原作者和機構(gòu)所有,如有侵權(quán),請聯(lián)系我們刪除。