机器学习一百天中文版地址
https://github.com/MLEveryday/100-Days-Of-ML-Code
机器学习一百天英文版地址
https://github.com/Avik-Jain/100-Days-Of-ML-Code
本章是第一天内容的笔记,作记录学习之用
第一天的内容——数据预处理
第一步:导入需要的库 NumPy和Pandas
NumPy:包含数学计算函数
Pandas:用于导入和管理数据集
#导入库
import numpy as np
import pandas as pd
第二步是导入数据集
数据集的格式通常为**.csv**。csv是以文本形式保存表格数据,在电脑中可以用Excel软件打开。在代码中使用Pandas中的read_csv方法读取本地文件
#导入数据集
dataset = pd.read_csv('Data.csv')#读取csv文件
X = dataset.iloc[:,:-1].values #.iloc[行,列] 选取[-1,0]
Y = dataset.iloc[:,3].values #:表示全部行或者列,[a]表示第a行或者列
#Pandas 读取文件时候,注意文件的存储路径不能带有中文,否则读取可能出错。
#.iloc:根据标签的所在位置,从0开始计数,选取列
X
第三步是处理丢失的数据
一般情况下,我们得到的数据很少是完整的,为了不降低机器学习的性能,需要处理数据,一般使用整列的平均值或者中间值替换丢失的数据。使用sklearn.preprocessing 库中的Imputer
类完成
#处理丢失的数据
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = 'NaN',strategy = 'mean',axis = 0)
imputer = imputer.fit(X[:,1:3])#用数据拟合fit x 的前两列
X[:,1:3] = imputer.transform(X[:,1:3]) #计算缺失数据
'''missing_values:缺失值,可以为整数或NaN(缺失值numpy.nan用字符串‘NaN’表示)
默认为NaN
strategy:替换策略,字符串,默认用均值‘mean’替换
①若为mean时,用特征列的均值替换
②若为median时,用特征列的中位数替换
③若为most_frequent时,用特征列的众数替换
axis:指定轴数,默认axis=0代表列,axis=1代表行'''
X
第四步是解析分类数据
分类数据指的是含有标签值而不是数字值的变量。取值范围通常是固定的。“yes”和“no”不能用于模型的数学计算,所以需要解析成为数字。使用sklearn.preprocessing 库中导入LabelRncoder类实现
# 解析分类数据
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
#LabelEncoder:把字符串类型的数据转化为整型.
#OneHotEncoder :特征用一个二进制数字来表示
labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])
X
#创建虚拟变量
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y= LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
第五步是拆分数据集
拆分为训练集合以及测试集合,训练集合是用来训练模型,测试集合是用来验证模型,二者比例一般为8:2。使用sklearn.crossvalidation中的train_test_split()方法
#拆分数据集为训练集合测试集合
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)
#test_size:样本占比,如果是整数的话就是样本的数量
#random_state:是随机数的种子。
X_train
第六步是特征缩放
大部分模型算法使用两点间的欧氏距离函数表示,单此特惠佐能在幅度、单位和范围姿态问题上变化很大。在距离计算中,高幅度的特征比低幅度特征权重更大。可用特征标准化或者Z值归一化解决。使用sklearn.preprocessing库中的StandardScalar 类
# 特征量化,缩放
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)#fit_transform()的作用就是先拟合数据,然后转化它将其转化为标准形式
X_test = sc_X.transform(X_test)#tranform()的作用是通过找中心和缩放等实现标准化
X_train