学习机器学习100天系列_Day01_数据预处理

前言

以前一直没有系统的学习ML的知识,对于机器学习深度学习的知识很混乱
以及python的使用不熟练
准备从今天开始更新机器学习100天系列github 100-Days-Of-ML-Code项目

两个part

一、每天的机器学习项目
二、Python的学习

废话不多说,Day01

一、Day_01 数据预处理

数据预处理分为6个部分:

第一步 需要的库(Numpy、Pandas)

(1)Numpy是一个由多维数组对象和用于处理数组的例程集合组成的库:

a) 数学计算函数;
b) 数组的算数和逻辑运算;
c) 傅立叶变换和用于图形操作的例程;
d) 与线性代数有关的操作;
e) NumPy 拥有线性代数和随机数生成的内置函数

(2)Pandas用于导入和管理数据

第二步 导入数据

数据集通常是.csv文件的格式,csv是文本形式保存表格数据,每一行都是一条数据。
使用pandas的read_csv方法读取本地的csv文件作为一个数据帧。
接下来需要从数据帧中制作自变量和因变量的矩阵和向量;

第三步 处理丢失数据

数据很少是完整的,为了不降低机器学习模型的性能,数据丢失的话需要进行预处理。
可以使用整列平均值或者中值替换丢失的数据。
使用sklearn.preprocessing中的SimpleImputer类来完成数据插值

扫描二维码关注公众号,回复: 14663044 查看本文章

第四步 解析分类数据

目的是为了将含有标签值(比如“yes”“no”)这一类的值转化为数字模型。
使用sklearn.preprocessing中的LabelEncoder类
sklearn.compose中的ColumnTransformer类来对数据进行分类

第五步 拆分数据集为测试集合与训练集合

为了更好的展现模型的性能,数据集需要分为训练集合测试集,一般为4:1。导入sklearn.model_selection中的trian_test_split()方法来实现。

第六步 特征缩放

目的是为了提高算法的收敛速度,大部分的模型算法计算两点间的欧式距离;
如果一个特征比其它的特征有更大的范围值,那么距离将会被这个特征值所主导。
因此需要进行特征标准化或者Z值归一化(标准化),使用sklearn. preprocessing中的StandardScalar类
(特征标准化使每个特征的值有零均值(zero-mean)和单位方差(unit-variance)。)

x ′ = x − mean ⁡ ( x ) std ⁡ ( x ) x^{\prime}=\frac{x-\operatorname{mean}(x)}{\operatorname{std}(x)} x=std(x)xmean(x)
其中 s t d ( x ) {std}(x) std(x)
std ⁡ ( x ) = ∑ ( x − mean ⁡ ( x ) ) 2 n \operatorname{std}(x)=\sqrt{\frac{\sum(x-\operatorname{mean}(x))^{2}}{n}} std(x)=n(xmean(x))2

代码:

#第一步,需要的库(Numpy、Pandas)

import numpy as np
import pandas as pd

#第二步 导入数据

dataTest = pd.read_csv('./datasets/Data.csv')#在github上能找到
#iloc[ : , : ] 行列切片以“,”隔开,前面的冒号就是取行数,后面的冒号是取列数
#得到第1列到倒数第2列的数据作为X
X = dataTest.iloc[ : , :-1].values
#得到第4列的数据作为Y
Y = dataTest.iloc[ : , 3].values
print("X")
print(X)
print("Y")
print(Y)

#第三步 处理丢失数据

from sklearn.impute import SimpleImputer
#处理丢失为Nan的数据,方法为mean
mean_proc = SimpleImputer(missing_values=np.nan, strategy="mean")

#根据数据集学习到特征,返回值为SimpleImputer类型的对象
# mean_proc = mean_proc.fit(X[ : ,1:3])
mean_proc.fit(X[ : ,1:3])
#根据特征应用的到数据集
X[ : , 1:3] = mean_proc.transform(X[ : ,1:3])
print("---------------------")
print("三")
print(X)

#第四步 解析分类数据

#编码与编码还原类
from sklearn.preprocessing import LabelEncoder
#独热编码:分类编码变量,将每一个类可能取值的特征变换为二进制特征向量,每一类的特征向量只有一个地方是1,其余位置都是0
from sklearn.preprocessing import OneHotEncoder
#数据转换器
#ColumnTransformer,必须指定一个转换器列表。每个转换器是一个三元素元组,用于定义转换器的名称,要应用的转换以及要应用于其的列索引,例如:(名称,对象,列)
from sklearn.compose import ColumnTransformer

#transformer list 转换器列表 ("",OneHotEncoder(),[0])
ct = ColumnTransformer([("",OneHotEncoder(),[0])],remainder='passthrough')

#将转换之后的数据应用在X中
X = ct.fit_transform(X)

LabelEncoder_y = LabelEncoder()

Y = LabelEncoder_y.fit_transform(Y)


print("四")
print("X")
print(X)
print("Y")
print(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_test = sc_X.fit_transform(X_test)

二、python学习

1、[n:m]
意思是取从n开始到m-1的值;
详情介绍请看python中[n:m]是什么?
2、对象实例化
python中的类
3、ipython直接交互
在ipython会话环境中,所有文件都可以通过%run命令当做Python程序来运行,输入%run 路径+python文件名称即可
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40595787/article/details/123353429