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

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

  • 1.导入数据处理标准库
  • 2.导入数据集
  • 3.处理缺省数据
  • 4.处理分类数据,虚拟编码
  • 5.划分训练集和测试集
  • 6.特征缩放
  • [完整代码](https://github.com/carrycarry5/ml-personal-notes)

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实现数据预处理_第1张图片
x:
【机器学习个人笔记】part1——用sklearn实现数据预处理_第2张图片
y:
【机器学习个人笔记】part1——用sklearn实现数据预处理_第3张图片

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实现数据预处理_第4张图片

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实现数据预处理_第5张图片
其中前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实现数据预处理_第6张图片

以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已经拟合过了,所以不用再拟合了

缩放后的数据

完整代码

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

你可能感兴趣的:(机器学习,数据预处理,处理缺省值,特征缩放,处理分类标签,虚拟编码)