怎么选择数据集?
推荐阅读:机器学习可使用的数据集介绍
本次实验所用的鸢尾花 iris 数据集是来自于 UCI Machine Learning Repository ,比较简单,总共150行5列,前四列为特征向量,第五列为标签(0:Iris-setosa,1:Iris-versicolor,2:Iris-virginica),这三类各50行。
观察所下载的 iris.data 文件:
为了便于后面实验,分别将 Iris-setosa、Iris-versicolor、Iris-virginica 替换为0、1、2,作为标签变量。
怎么导入?
导入本次实验有关的 packages 和数据文件。
import numpy as np # 数值运算
import pandas as pd # 数据处理,CSV文件I/O
iris = pd.read_csv('iris.data.csv', header = None) # 导入文件
怎么观察数据集?
导入后,用该语句可观察数据集大小、行列、数据类型、数据格式及有无缺失值
iris.info() # 可观察数据集大小、行列、数据类型、数据格式及有无缺失值
怎么数组格式转化?
在代码行中运行 iris 可看到所导入数据集的情况:
从这两图可知,iris 数据集目前是按照表格排列,对其进行数据格式转换(array数组):
iris = iris.values # 转换为array数组
X = iris[:, 0:4] # X取前四列特征变量
Y = iris[:, 4] # Y取第5列标签target
基于 Anaconda + Jupyter Notebook 环境的运行结果:
缺失值这么处理?
由于 iris 数据集本身是完整的数据集,不存在缺失值,为了简单演示怎么处理数据集中含有的缺失值,我随意选择 iris 数据集中的一些行列,删除一些数据点作为“缺失值”。
存在缺失值的行列情况:
观察还有缺失值的列:
# 打印含有 ‘nan’ 的列
droping_list_all = [ ]
for j in range(0, 4):
if not iris.iloc[:, j].notnull().all():
droping_list_all.append(j)
droping_list_all
对含有 ‘nan’ 的列用该列的均值进行填充:
# 对含有 ‘nan’ 的列用该列的均值进行填充
for j in range(0, 4):
iris.iloc[:, j]=iris.iloc[:, j].fillna(iris.iloc[:, j].mean())
可看到 iris 数据集目前不存在缺失值:
# 观察 iris 数据集是否还存在缺失值
iris.isnull().sum()
填充效果: