MindSpore易点通·精讲系列--数据集加载之CSVDataset

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

Dive Into MindSpore – CSVDataset For Dataset Load

MindSpore易点通·精讲系列–数据集加载之CSVDataset

本文开发环境

  • Ubuntu 20.04
  • Python 3.8
  • MindSpore 1.7.0

本文内容摘要

  • 先看API
  • 数据准备
  • 两种试错
  • 正确示例
  • 本文总结
  • 问题改进
  • 本文参考

1. 先看API

老传统,先看看官方文档:
csvdatset参数解读:

  • 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 数据下载

说明:

数据下载地址:UCI Machine Learning Repository: Iris Data Set

使用如下命令下载数据iris.datairis.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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值