【机器学习个人笔记】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# 因变量应该是个向量
原始数据集:3.处理缺省数据
文章图片
x:
文章图片
y:
文章图片
遇到缺失数据时,我们首先想到的是要把这条记录删掉,但这条记录可能包含了一些重要的信息, 所以应该采取别的方法。例如,用整列的平均值代替缺失数据。
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:
文章图片
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数据集:5.划分训练集和测试集
文章图片
其中前3列是‘国家’虚拟编码后的结果
# 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)
文章图片
以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已经拟合过了,所以不用再拟合了
缩放后的数据完整代码
- 数据预处理的几个基本步骤就介绍到这里,希望能够帮助到大家。
推荐阅读
- 机器学习实战|sklearn常用数据预处理方法
- ICT|一文将大数据、云计算、物联网、5G(移动网)、人工智能等最新技术串起来
- python机器学习与数据挖掘|数据预处理(七)——利用sklearn进行数据预处理
- 神经网络|机器学习-人工神经网络 最基础的单层神经网络编写
- python|部署证明书提出了挑战和架构正统观念
- 人工智能|2天训练出15亿参数大模型,国产开源项目力克英伟达Megatron-LM,来自LAMB作者团队...
- 深度学习|【吴恩达深度学习】03_week2_quiz Autonomous driving (case study)
- 大数据|升级版NanoDet-Plus来了!简单辅助模块加速训练收敛,精度大幅提升!
- 目标检测算法讲解与部署|NanoDet代码逐行精读与修改(四)动态软标签分配(dynamic soft label assigner)