机器学习A-Z 数据预处理

什么是标准库?

标准库相当于是个工具包,里面包含了很多编写好的工具。如果我们想用某种方法达到某种目的,并且已经有标准库的话,那直接用标准库里面的工具,直接传递相对应的参数进去,就可快速实现。这也是写代码比较快速的方法。

导入标准库

在整个机器学习的过程中有很多标准库,但有3个标准库几乎每次都会用到:

#improting the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

设置程序工作路径

方法一:在 File  选择  save as  保存到数据所在的文件夹里面,程序就会默认选择此文件下面的data

方法二:在 窗口  file explorer 中打开数据所在的文件夹

 

导入数据集

Ctrl  + Enter运行代码,得到结果如下图

知识点1:python 是 从 0 开始计数的 ,比如  for i in range(0,10)

知识点2:国家、年龄、salary  是自变量 ,purchased是因变量

知识点3:format 格式化数据:   %.0f  ---意思是不显示小数,数据格式为float

处理结果为 

知识点4:在python处理数据的过程中,需要将自变量处理成矩阵,将因变量处理成向量

#将自变量处理成矩阵
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:,:-1].values #:表示取所有的行或列

#将因变量处理成向量
y = dataset.iloc[:,3].values

处理结果可在窗口里查看

 

处理缺失数据

处理数据方法:

1.删掉数据不全的数据

2.将此列其他数据的平均数、众数、中数 补充到这里

扩展阅读;

https://blog.csdn.net/sinat_29957455/article/details/79418041     

https://blog.csdn.net/u013524655/article/details/40887323     

 

使用平均值填充

from sklearn.preprocessing import Imputer
#从skearn中导入处理数据的方法Imputer
imputer = Imputer(missing_values = 'NaN',strategy = 'mean',axis = 0)
#使用 Imputer 处理缺失的数据,必须赋值的参数为以上3个
imputer = imputer.fit(X[:,1:3])
#用fit来拟合数据
X[:,1:3] = imputer.transform(X[:,1:3])
#将拟合好的数据,替换现在的数据

处理后的矩阵如下:

 

分类数据  和 处理虚拟编码

机器学习中,实际是上将各种数据输入方程中计算,但是定性的描述 比如 中国 日本,没办法输入方程,所以得 定性变量转为有意义的数值

from sklearn.preprocessing import LabelEncoder,OneHotEncoder
#LabelEnconder这个类就是将标签编码,转义成数字
labelencoder_X = LabelEncoder()
#继承类
X[:,0] = labelencoder_X.fit_transform(X[:,0])
#将国家转化为数字
#将矩阵的X的 0  列,转化数字
#这么做之后会有问题, 0 1 2表示大小区分,但原始数据国家没有区分使用虚拟编码可解决这个问题
#虚拟编码处理分类的变量
onehotencoder = OneHotEncoder(categorical_features = [0])
#指定处理X的0列
X = onehotencoder.fit_transform(X).toarray()

 

处理结果

 

 

#处理y,因为y是因变量,python可以自动识别为分类数据,所以不需要onehotcoder这个类
labelencoder_y = LabelEncoder()
#继承类
y = labelencoder_y.fit_transform(y)

处理结果:

 

 

将数据分为训练集 和  测试集

#将数据划分为测试集和训练集
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 = 0)
 

处理结果

 

 

特征缩放

什么是特征缩放:特征缩放定义 特征缩放是用来标准化数据特征的范围

为什么特征缩放:训练模型的过程中,经常会用到欧氏距离,如果两组数据不在一个维度,另一个特征基本上可以忽略不计。或者不用欧式距离,但收敛速度会很快。

出门右转    https://mp.csdn.net/postedit/82755021

知识点1:欧式距离,两个点之间线段长度  

扩展阅读:

https://baike.baidu.com/item/%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E5%BA%A6%E9%87%8F/1274107?fromtitle=%E6%AC%A7%E5%BC%8F%E8%B7%9D%E7%A6%BB&fromid=2809635&fr=aladdin 

 

欧式距离、标准化欧式距离、马氏距离、余弦距离

https://blog.csdn.net/Kevin_cc98/article/details/73742037

#特征缩放
from sklearn.preprocessing import StandardScaler
#导入类
sc_X = StandardScaler()
#建立对象
X_train = sc_X.fit_transform(X_train)
#将X_train拟合并且替代原来的X_train
X_test = sc_X.transform(X_test)
#上一步骤中,X已经被拟合,所以此处只转换替代就行
#针对虚拟变量可以标准化,也可以不需要根据实际情况处理

#以上是针对自变量特征缩放,本次因变量是0  1表示分类,不用特征缩放。
#如果想处理回归的问题,因变量有可能非常大,所以需要特征标准化

--------------------------------------以下是全部代码---------------------

#importing the librarise
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#导入数据集
dataset = pd.read_csv('Data.csv')

#将自变量处理成矩阵
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:,:-1].values #:表示取所有的行或列

#将因变量处理成向量
y = dataset.iloc[:,3].values

#处理缺失数据
from sklearn.preprocessing import Imputer
#从skearn中导入处理数据的方法Imputer
imputer = Imputer(missing_values = 'NaN',strategy = 'mean',axis = 0)
#使用 Imputer 处理缺失的数据,必须赋值的参数为以上3个
imputer = imputer.fit(X[:,1:3])
#用fit来拟合数据
X[:,1:3] = imputer.transform(X[:,1:3])
#将拟合好的数据,替换现在的数据


#分类数据  和 虚拟编码
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
#LabelEnconder这个类就是将标签编码,转义成数字
labelencoder_X = LabelEncoder()
#继承类
X[:,0] = labelencoder_X.fit_transform(X[:,0])
#将国家转化为数字
#将矩阵的X的 0  列,转化数字
#这么做之后会有问题, 0 1 2表示大小区分,但原始数据国家没有区分使用虚拟编码可解决这个问题
#虚拟编码处理分类的变量
onehotencoder = OneHotEncoder(categorical_features = [0])
#指定处理X的0列
X = onehotencoder.fit_transform(X).toarray()


#处理y,因为y是因变量,python可以自动识别为分类数据,所以不需要onehotcoder这个类
labelencoder_y = LabelEncoder()
#继承类
y = labelencoder_y.fit_transform(y)


#将数据划分为测试集和训练集
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 = 0)


#特征缩放
from sklearn.preprocessing import StandardScaler
#导入类
sc_X = StandardScaler()
#建立对象
X_train = sc_X.fit_transform(X_train)
#将X_train拟合并且替代原来的X_train
X_test = sc_X.transform(X_test)
#上一步骤中,X已经被拟合,所以此处只转换替代就行
#针对虚拟变量可以标准化,也可以不需要根据实际情况处理

#以上是针对自变量特征缩放,本次因变量是0  1表示分类,不用特征缩放。
#如果想处理回归的问题,因变量有可能非常大,所以需要特征标准化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值