机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理


【机器学习个人笔记】part1——用sklearn实现数据预处理

  • 1.导入数据处理标准库
  • 2.导入数据集
  • 3.处理缺省数据
  • 4.处理分类数据,虚拟编码
  • 5.划分训练集和测试集
  • 6.特征缩放
  • [完整代码](https://github.com/carrycarry5/ml-personal-notes)
【机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理】

1.导入数据处理标准库
import numpy as np import pandas as pd import matplotlib.pyplot as plt

2.导入数据集
dataset = pd.read_csv('../Data.csv') x1 = dataset.iloc[:, :-1]# dataframe格式 x = dataset.iloc[:, :-1].values# numpy格式自变量应该是个矩阵 y = dataset.iloc[:,-1:].values# 因变量应该是个向量

原始数据集:
机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理
文章图片

x:
机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理
文章图片

y:
机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理
文章图片

3.处理缺省数据
遇到缺失数据时,我们首先想到的是要把这条记录删掉,但这条记录可能包含了一些重要的信息, 所以应该采取别的方法。例如,用整列的平均值代替缺失数据。
from sklearn.preprocessing import Imputer#该类专门用于处理缺失对象 imputer = Imputer(missing_values= 'NaN',strategy='mean',axis=0) #用均值来填补缺省值,axis=0代表对列操作 imputer.fit(x[:,1:3])# 用x去拟合 x[:,1:3] = imputer.transform(x[:,1:3])

处理后的x:
机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理
文章图片

Imputer类中的strategy的可选值共有:mean(均值),median(中位数),most_frequent(众数)
4.处理分类数据,虚拟编码
某些标签,比如国家,不能直观的看出其差异,将其转换为数字更好观察
但这些国家并没有数值上的差异,它们只是不一样,这种排序是没有意义的,如何解决?
——虚拟编码

# encoding categorical data# 处理分类数据 from sklearn.preprocessing import LabelEncoder,OneHotEncoder # 该类用于将label标准化 label_encoder_x = LabelEncoder()# 转换'国家' x[:,0] = label_encoder_x.fit_transform(x[:,0]) # 拟合、转换 label_encoder_y = LabelEncoder() # 转换'是否购买' y = label_encoder_y.fit_transform(y[:,0])# 虚拟编码 onehotencoder = OneHotEncoder(categorical_features = [0]) x = onehotencoder.fit_transform(x).toarray()

处理后的x数据集:
机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理
文章图片

其中前3列是‘国家’虚拟编码后的结果
5.划分训练集和测试集
# sptting the dataset into the Training set and Test set划分训练集和测试集 from sklearn.model_selection import train_test_split x_train , x_test, y_train, y_test = train_test_split(x,y, test_size=0.2,random_state=42)

机器学习|【机器学习个人笔记】part1——用sklearn实现数据预处理
文章图片

以1:4的比例将数据集切割成测试集合训练集
6.特征缩放
何为特征缩放:https://blog.csdn.net/xlinsist/article/details/51212348
# Feature Scaling from sklearn.preprocessing import StandardScaler sc_x = StandardScaler() x_train[:,-2:] = sc_x.fit_transform(x_train[:,-2:]) x_test[:,-2:] = sc_x.transform(x_test[:,-2:]) # 之前sc_x已经拟合过了,所以不用再拟合了

缩放后的数据

完整代码
  • 数据预处理的几个基本步骤就介绍到这里,希望能够帮助到大家。

    推荐阅读