機器學習之數據規范化

1、為什么要做數據規范:

是為了減少數據在可視化是的距離差異:(如:將數據 X1薪水:4023、5000、8000 X2年齡:40、33、30,將這些數據按照一定的比例盡量處理到-1跟1之間),這個句話可能只有我自己能理解,


數據規范化草圖,比如age 20,30 薪資100234,343424242,兩列之間偏差很大

2、用Python處理數據規范化

#數據分割 1、驗證模型做得對不對? (一塊用了訓練模型,一塊數據用來驗證模型的正確性)

from sklearn.cross_validation import train_test_split

X_train, X_text, Y_train, Y_test = train_test_split(X,Y,test_size = 0.2,random_state = 0)

#數據規范化(減少數據之間的差異,如 4000 100 200 ,-1到1之間,按照一定比例縮放)

from sklearn.preprocessing import StandardScaler

sc_X = StandardScaler()

X_train = sc_X.fit_transform(X_train)

X_text = sc_X.fit_transform(X_text)

3、R語言處理數據規范化

datasets = read.csv('Data.csv')

#missData 缺失數據填充

datasets$Age = ifelse(is.na(datasets$Age),ave(datasets$Age,FUN = function(x) mean(x, na.rm = TRUE)),

datasets$Age)

datasets$Salary = ifelse(is.na(datasets$Salary),ave(datasets$Salary,FUN = function(x) mean(x, na.rm = TRUE)),

datasets$Salary)

#數據明確

datasets$Country = factor(datasets$Country,levels = c('France','Spain','Germany'), labels = c(1,2,3))

datasets$Purchased = factor(datasets$Purchased,levels = c('No','Yes'), labels = c(1,2))

#數據分割

#用

library(caTools)

#set.seed(123)里面有數據就是隨機處理

set.seed(123)

split = sample.split(datasets$Purchased, SplitRatio = 0.8)

training_set = subset(datasets, split == TRUE) #80%

test_set = subset(datasets, split == FALSE) #20%

#數據規范化(縮放)

training_set= scale(training_set)

test_set= scale(test_set)

這個數據在R數據處理數據規范化得時候會遇到一個坑,提示‘X’必需為數值


R語言遇到一個坑

數值?數字?

因為原本datasets$Purchased是True false 我們轉成了1、2, 這個時候的1、2是數字,還不是數值,所以這個時候我們要注意,

因為這個 時候我們是需要對Age 和 Salary 處理就可以

training_set[,2:3 ] = scale(training_set[, 2:3])

test_set[,2:3 ] = scale(test_set[,2:3 ])

運行代碼后,這個時候看到規范后的數據了,數值很靠近,接近-1和1之間。

training_set

Country? ? ? ? Age? ? Salary Purchased

2? ? ? 2 -1.42857869 -1.1397581? ? ? ? 2

3? ? ? 3 -1.05088836 -0.6631119? ? ? ? 1

4? ? ? 2 -0.04371416 -0.1070247? ? ? ? 1

5? ? ? 3? 0.20807939? 0.1136448? ? ? ? 2

6? ? ? 1 -0.42140448 -0.3453478? ? ? ? 2

7? ? ? 2? 0.05420556 -0.8219940? ? ? ? 1

8? ? ? 1? 1.21525360? 1.3229138? ? ? ? 2

9? ? ? 3? 1.46704715? 1.6406780? ? ? ? 1

ok,這就是Pythonh和R語言的數據規范化。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容