机器学习-Python实践Day3(特征工程--数据预处理)

1、数据预处理(Pima Indians 印第安人医疗数据)

  • 1、数据预处理
    • 1.1、调整数据尺度(Rescale Data)
    • 1.2、正态化数据(Standardize Data)
    • 1.3、标准化数据(Normalize Data)
    • 1.4、二值化数据(Binarize Data)

对数据的处理需要根据数据本身和算法的特点来进行,由此才能设计出一个准确度较高的模型。
不同的数据有不同的处理方式:

  • 有缺失值的要填补
  • 有无效数据的要剔除
  • 有冗余维的要筛选
  • 有数据过大或过小的要统一数据尺度

1、数据预处理

在导入数据、理解数据之后就需要对数据做进一步的处理,这一步的处理称为数据预处理。
数据预处理大致分为3个步骤,我们需要熟知的是数据的转换步骤:

  1. 数据导入
  2. 数据转换
  3. 数据输出

其中数据转换有以下几种方法:

  • 调整数据尺度 (Rescale Data)
  • 正态化数据 (Standardize Data)
  • 标准化数据 (Normalize Data)
  • 二值化数据(Binarize Data)

在这里,我们依旧使用pima indians 印第安人医疗数据来做数据预处理。

# 数据导入
import pandas as pd
names=['preg','plas','pres','skin','test','mass','pedi','age','class']
df=pd.read_csv('pima_data.csv',names=names)
print(df.head())
# 将数据切分为特征集和标签集
X=df.iloc[:,:-1].values
Y=df.iloc[:,-1].values

机器学习-Python实践Day3(特征工程--数据预处理)_第1张图片

1.1、调整数据尺度(Rescale Data)

通过将数据转换到某一指定范围(0和1)之间的值,达到调整数据尺度的目的。

# 数据转换 ---调整数据尺度
from sklearn.preprocessing import MinMaxScaler
import numpy as np

mms=MinMaxScaler(feature_range=(0,1))
newX=mms.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未调整数据尺度:\n",X)
print("已调整数据尺度:\n",newX)

机器学习-Python实践Day3(特征工程--数据预处理)_第2张图片

1.2、正态化数据(Standardize Data)

正态化数据是有效处理符合高斯分布数据的方法,输出结果以0位中位数,方差为1.

# 数据转换 ---正态化数据
from sklearn.preprocessing import StandardScaler
import numpy as np

ss_X=StandardScaler()
newX=ss_X.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未正态化数据:\n",X)
print("已正态化数据:\n",newX)

机器学习-Python实践Day3(特征工程--数据预处理)_第3张图片

1.3、标准化数据(Normalize Data)

标准化数据处理是将每一行的数据的距离处理为1,又称为归一化处理,适合处理稀疏数据(具有很多为0的数据)。归一化处理的数据对使用权重输入的神经网络和使用距离的K近邻算法的准确度有显著提升。

# 数据转换 ---标准化数据
from sklearn.preprocessing import Normalizer
import numpy as np

nm_X=Normalizer()
newX=nm_X.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未标准化数据:\n",X)
print("已标准化数据:\n",newX)

机器学习-Python实践Day3(特征工程--数据预处理)_第4张图片

1.4、二值化数据(Binarize Data)

二值数据是使用阈值将数据转化为二值,大于阈值为1,小于阈值为0.

# 数据转换 ---二值化数据
from sklearn.preprocessing import Binarizer
import numpy as np

bz_X=Binarizer(threshold=0.0)
newX=bz_X.fit_transform(X)
# 设置精确度到小数点后3位
np.set_printoptions(precision=3)
print("未二值化数据:\n",X)
print("已二值化数据:\n",newX)

机器学习-Python实践Day3(特征工程--数据预处理)_第5张图片

你可能感兴趣的:(机器学习,机器学习,数据预处理,二值化,独热编码,标签编码)