<noframes id="r35z7"><menuitem id="r35z7"></menuitem>
<var id="r35z7"><strike id="r35z7"></strike></var>
<var id="r35z7"><video id="r35z7"></video></var>
<cite id="r35z7"></cite>
<var id="r35z7"><strike id="r35z7"><listing id="r35z7"></listing></strike></var>
<var id="r35z7"></var>
<cite id="r35z7"></cite>
<var id="r35z7"></var>
<var id="r35z7"></var>

Python中機器學習的數據預處理

添加時間:2020-10-20 16:15:19

來源:

瀏覽:

預處理是指在將數據饋送到算法之前應用于我們的數據的轉換。

?數據預處理是一種用于將原始數據轉換為干凈數據集的技術。換句話說,無論何時從不同來源收集數據,數據都以原始格式收集,這對于分析是不可行的。


數據預處理的需求

?為了從機器學習項目中的應用模型中獲得更好的結果,數據的格式必須正確。某些指定的機器學習模型需要使用指定格式的信息,例如,隨機森林算法不支持空值,因此要執行隨機森林算法,必須從原始原始數據集中管理空值。

?另一個方面是,數據集的格式應確保在一個數據集中執行多個機器學習和深度學習算法,并從中選擇最好的算法。


本文包含3種用于機器學習的不同數據預處理技術。


每種技術都使用Pima印度糖尿病數據集。

這是一個二進制分類問題,其中所有屬性都是數字并且具有不同的比例。

這是可以從預處理中受益的數據集的一個很好的例子。

您可以在UCI機器學習存儲庫網頁上找到此數據集。

請注意,該程序可能無法在Geeksforgeeks IDE上運行,但可以在您本地的python解釋器上輕松運行,前提是您已安裝了所需的庫。


1.

重新縮放數據?當我們的數據由具有不同比例的屬性組成時,許多機器學習算法都可以從將屬性重新縮放為所有具有相同比例的數據中受益。

?這對于在機器學習算法(例如梯度下降)的核心中使用的優化算法很有用。

?對于加權輸入(例如回歸和神經網絡)的算法以及使用距離度量(例如K最近鄰)的算法也很有用。

?我們可以使用MinMaxScaler類使用scikit-learn重新縮放您的數據。


filter_none

編輯

play_arrow


亮度_4

# Python code to Rescale data (between 0 and 1) 

import pandas 

import scipy 

import numpy 

from sklearn.preprocessing import MinMaxScaler 

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"

names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] 

dataframe = pandas.read_csv(url, names=names) 

array = dataframe.values 

  

# separate array into input and output components 

X = array[:,0:8] 

Y = array[:,8] 

scaler = MinMaxScaler(feature_range=(0, 1)) 

rescaledX = scaler.fit_transform(X) 

  

# summarize transformed data 

numpy.set_printoptions(precision=3) 

print(rescaledX[0:5,:]) 

重新縮放后,請注意所有值都在0到1之間。


輸出量

[[0.353 0.744 0.59 0.354 0.0 0.501 0.234 0.483]

 [0.059 0.427 0.541 0.293 0.0 0.396 0.117 0.167]

 [0.471 0.92 0.525 0. 0.0 0.347 0.254 0.183]

 [0.059 0.447 0.541 0.232 0.111 0.419 0.038 0.0]

 [0.0 0.688 0.328 0.354 0.199 0.642 0.944 0.2]]

2.二進制化數據(二進制)

?我們可以使用二進制閾值轉換數據。所有高于閾值的值都標記為1,所有等于或低于閾值的值都標記為0。

?這稱為對數據進行二進制化或對數據進行閾值處理。當您有可能要做出明晰的值的概率時,此功能很有用。當進行要素工程并且您想添加表示有意義的新要素時,該功能也很有用。

?我們可以使用帶有Binarizer類的scikit-learn在Python中創建新的二進制屬性。


filter_none

編輯

play_arrow


亮度_4

# Python code for binarization 

from sklearn.preprocessing import Binarizer 

import pandas 

import numpy 

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"

names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] 

dataframe = pandas.read_csv(url, names=names) 

array = dataframe.values 

  

# separate array into input and output components 

X = array[:,0:8] 

Y = array[:,8] 

binarizer = Binarizer(threshold=0.0).fit(X) 

binaryX = binarizer.transform(X) 

  

# summarize transformed data 

numpy.set_printoptions(precision=3) 

print(binaryX[0:5,:]) 

我們可以看到所有等于或小于0的值都標記為0,所有大于0的值都標記為1。


輸出量

[[1. 1. 1. 1. 1. 0. 1. 1. 1.]

 [1. 1. 1. 1. 0. 1. 1. 1.]

 [1. 1. 1. 0. 0. 1. 1. 1.]

 [1. 1. 1. 1. 1. 1. 1. 1. 1.]

 [0. 1. 1. 1. 1. 1. 1. 1. 1.]]

3.標準化數據

?標準化是一種有用的技術,可將具有高斯分布,均值和標準差不同的屬性轉換為平均值為0和標準差為1的標準高斯分布。

?我們可以使用scikit-learn對數據進行標準化該StandardScaler類。


filter_none

編輯

play_arrow


亮度_4

# Python code to Standardize data (0 mean, 1 stdev) 

from sklearn.preprocessing import StandardScaler 

import pandas 

import numpy 

url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"

names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] 

dataframe = pandas.read_csv(url, names=names) 

array = dataframe.values 

  

# separate array into input and output components 

X = array[:,0:8] 

Y = array[:,8] 

scaler = StandardScaler().fit(X) 

rescaledX = scaler.transform(X) 

  

# summarize transformed data 

numpy.set_printoptions(precision=3) 

print(rescaledX[0:5,:]) 

現在,每個屬性的值的平均值為0,標準差為1。


輸出量

[[0.64 0.848 0.15 0.907 -0.693 0.204 0.468 1.426]

 [-0.845 -1.123 -0.161 0.531 -0.693 -0.684 -0.365 -0.191]

 [1.234 1.944 -0.264 -1.288 -0.693 -1.103 0.604 -0.106]

 [-0.845 -0.998 -0.161 0.155 0.123 -0.494 -0.921 -1.042]

 [-1.142 0.504 -1.505 0.907 0.766 1.41 5.485 -0.02]]


用戶名 Name
評論 Comment

聯系我們

/ CONTACT US

地 址:四川省成都市航空路豐德國際廣場

郵政編碼:610000

電 話:18215660330

傳 真:18215660330

手機:18215660330

郵 箱:179001057@qq.com

投訴郵 箱:179001057@qq.com

姓名Name
標題Title
郵 箱Emali
聯系電話Tel
內容Content
凤凰彩票