加载数据(Data Loading)
数据集:pima-indians.data.csv
“皮马印第安人糖尿病问题”作为测试数据集。其中包括768个患者的记录数据,每条记录的第一列为记录序号,后面跟着每条记录的7个数值型数据特征,最后第9列是0/1标签值,表示患者是否是在5年之内感染的糖尿病。
#coding=utf-8
#加载数据
import numpy as np
import urllib
# url with dataset
url = "http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
# download the file
raw_data = urllib.urlopen(url)
# load the CSV file as a numpy matrix
dataset = np.loadtxt(raw_data, delimiter=",")
# separate the data from the target attributes
X = dataset[:,0:7] #特征矩阵为X
y = dataset[:,8] #标签为y
数据归一化(Data Normalization)
进行归一化或标准化
归一化:通过对原始数据进行线性变换把数据映射到[0,1]之间。
原理:不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。
其中min是样本中最小值,max是样本中最大值,在数据流场景下最大值与最小值是变化的。而且最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。公式:
标准化:去除均值和方差的缩放,将数据按特征减去其均值后除以其方差。使得对于每个特征来说所有数据都聚集在0附近,方差为1。
原理:公式表示的是原始值与均值之间差多少个标准差,是一个相对值,所以也有去除量纲的作用。同时还使得均值为0,标准差为1。因为每个变量的重要程度正比于这个变量在这个数据集上的方差。如果让每一维变量的标准差都为1(即方差都为1),则每维变量在计算距离的时候重要程度相同。
其中μ是样本的均值,σ是样本的标准差,可以通过现有样本进行估计。在已有样本足够多的情况下比较稳定,适合嘈杂大数据场景。公式:
#数据归一化
from sklearn