Dive Into MindSpore – CSVDataset For Dataset Load
MindSpore易点通·精讲系列–数据集加载之CSVDataset
本文开发环境
- Ubuntu 20.04
- Python 3.8
- MindSpore 1.7.0
本文内容摘要
- 先看API
- 数据准备
- 两种试错
- 正确示例
- 本文总结
- 问题改进
- 本文参考
1. 先看API
老传统,先看看官方文档:
参数解读:
-
dataset_files – 数据集文件路径,可以单文件也可以是文件列表
-
filed_delim – 字段分割符,默认为","
-
column_defaults – 一个巨坑的参数,留待后面解读
-
column_names – 字段名,用于后续数据字段的key
-
num_paraller_workers – 不再解释
-
shuffle – 是否打乱数据,三种选择[False, Shuffle.GLOBAL, Shuffle.FILES]
- Shuffle.GLOBAL – 混洗文件和文件中的数据,默认
- Shuffle.FILES – 仅混洗文件
-
num_shards – 不再解释
-
shard_id – 不再解释
-
cache – 不再解释
2. 数据准备
2.1 数据下载
说明:
使用如下命令下载数据iris.data和iris.names到目标目录:
mkdir iris && cd iris
wget -c https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
wget -c https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.names
**备注:**如果受系统限制,无法使用wget命令,可以考虑用浏览器下载,下载地址见说明。
2.2 数据简介
Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。
更详细的介绍参见官方说明:
5. Number of Instances: 150 (50 in each of three classes)
6. Number of Attributes: 4 numeric, predictive attributes and the class
7. Attribute Information:
1. sepal length in cm
2. sepal width in cm
3. petal length in cm
4. petal width in cm
5. class:
-- Iris Setosa
-- Iris Versicolour
-- Iris Virginica
8. Missing Attribute Values: None
Summary Statistics:
Min Max Mean SD Class Correlation
sepal length: 4.3 7.9 5.84 0.83 0.7826
sepal width: 2.0 4.4 3.05 0.43 -0.4194
petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)
petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)
9. Class Distribution: 33.3% for each of 3 classes.
2.3 数据分配
这里对数据进行初步分配,分成训练集和测试集,分配比例为4:1。
相关处理代码如下:
from random import shuffle
def preprocess_iris_data(iris_data_file, train_file, test_file, header=True):
cls_0 = "Iris-setosa"
cls_1 = "Iris-versicolor"
cls_2 = "Iris-virginica"
cls_0_samples = []
cls_1_samples = []
cls_2_samples = []
with open(iris_data_file, "r", encoding="UTF8") as fp:
lines = fp.readlines()
for line in lines:
line = line.strip()
if not line:
continue
if cls_0 in line:
cls_0_samples.append(line)
continue
if cls_1 in line:
cls_1_samples.append(line)
continue
if cls_2 in line:
cls_2_samples.append(line)
shuffle(cls_0_samples)
shuffle(cls_1_samples)
shuffle(cls_2_samples)
print("number of class 0: {}".format(len(cls_0_samples)), flush=True)
print("number of class 1: {}".format(len(cls_1_samples)), flush=True)
print("number of class 2: {}".format

本文详细介绍了如何在MindSpore中使用CSVDataset加载Iris数据集,包括API解读、数据预处理、常见错误分析及正确示例,展示了列默认值、header处理和数据类型转换的实践过程。
最低0.47元/天 解锁文章
811

被折叠的 条评论
为什么被折叠?



