1、为什么要做数据规范:
是为了减少数据在可视化是的距离差异:(如:将数据 X1薪水:4023、5000、8000 X2年龄:40、33、30,将这些数据按照一定的比例尽量处理到-1跟1之间),这个句话可能只有我自己能理解,
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’必需为数值
数值?数字?
因为原本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语言的数据规范化。