无标题文章

作者: aleck_zhang13 | 来源:发表于2018-03-11 11:49 被阅读0次

## 关于ExtraSensory 数据集的分析过程

> 在这一周的学习当中,我进行对UCSD的传感器数据集进行了分析和学习,我对我学习和尝试的过程,进行复盘

我们首先先从需要解决的问题入手: 

- 我们需要对数据进行了解和清洗 

- 清洗完成后我们需要对其做一个分类的问题

## 观察数据

根据官网的描述,我们得知如下:

ExtraSensory 数据集由 UCSD 下 Yonatan Vaizman 和 Katherine Ellis 收集, 由手机 APP --the

ExtraSensory App进行收集,收集的信息为手机各类传感器的数据和此时的人体状态等一些数据。

该数据集有 60个'csv.gz'文件,文件的命名格式为[UUID].features_label.csv.gz。 UUID为每个用户独有的 ID, 使用 gzip 进行压缩。

我们打开其中一个UUID为 1155FF54-63D3-4AB2-9863-8385D0BD0A13 的单个数据集

进行分析

部分截图

我们对其进行具体的观察,我们得知在该数据集中以timestamp作为主键进行排序,拥有221个feature,和51个label,和一个sourelabel(此不作为label进行学习)

我当时第一个想法是将csv文件读入后,将timestamp、feature、label三部分进行划分,单独取出来 

```

# parse_header_of_csv函数将feature和label进行区分归类

# parse_body_of_csv函数将feature和label的具体数据进行分割存储

# read_user_data函数将csv文件读入

def parse_header_of_csv(csv_str):

    headline = csv_str[:csv_str.index('\n')]

    column = headline.split(",")

    # 进行assert测试

    assert column[0] == 'timestamp'

    assert column[-1] == 'label_source'

    # 找到label开始的位置

    for (ci,col) in enumerate(column):

        if col.startswith("label:"):

            first_start_lind = ci

            break

        pass

    feature_names = column[1:first_start_lind]

    label_names = column[first_start_lind:-1]

    ##去除多余无效的字符

    for (li,label) in enumerate(label_names):

        # assert

        assert label.startswith("label:")

        label_names[li] = label.replace('label:',"")

        pass

    return (feature_names, label_names)

def parse_body_of_csv(csv_str,n_feature):

    full_body = np.loadtxt(StringIO(csv_str),delimiter=',',skiprows=1)

    # 数据的主键为timestamp

    timestamps = full_body[:,0].astype(int)

    # 将特征和标签分开,前面的是特征即传感器

    X = full_body[:,1:(n_feature+1)]

    #分离出所有label数据

    trinary_labels_mat = full_body[:,(n_feature+1):-1]

    M = np.isnan(trinary_labels_mat)# 将其进行判断有哪些是nan值

    Y = np.where(M,0,trinary_labels_mat)>0.## 进行判断哪里有Nan值则将其转化为0,则保留原来的数值

                                          ##并将其转化为布尔值

    return (X,Y,M,timestamps)

# 输出feature数据矩阵X,label数据矩阵Y,label的缺失数据分布矩阵M,feature_names,label_names   

def read_user_data(uiud):

    user_data_file = '%s.features_labels.csv.gz'%uuid

    with gzip.open(user_data_file,'r') as fid:

        csv_str = fid.read()

        csv_str = csv_str.decode(encoding = 'utf-8')

        pass

    (feature_names,label_names) = parse_header_of_csv(csv_str)

    n_feature = len(feature_names)

    (X,Y,M,timestamps) = parse_body_of_csv(csv_str, n_feature)

    return (X,Y,M,timestamps,feature_names,label_names)

```

在这段代码中,主要有三个函数 

def read_user_data(uiud)读入用户数据,并且其中将读取数据的过程再次抽离出两个函数进行抽象。分别是:parse_header_of_csv()、 parse_body_of_csv().

> 值得注意的是在这里,我们使用的Python,Python在IO输入的时候和Python2有所不同,我们进行读取之后需要对其进行decode()操作,encoding为utf-8

parse_header_of_csv(csv_str)函数:由于我们直接将csv文件整个进行输入,所以我们直接将其作为一个大的str进行分析,我们通过判断\n的位置,进行对heading(column)的截取。为了更为严谨,我们在其中插入了assert函数进行判断,截取之后再使用enumerate对column进行从新标号,判断label开始的位置,得到位置之后在依旧使用enumrate对其进行分析,对label标签进行处理,return (feature_names, label_names)

parse_body_of_csv(csv_str,n_feature)函数:我们使用使用numpy中的loadtxt进行读取,以StringIo进行读取,在将feature和label进行分割。

``` 

    #分离出所有label数据

    trinary_labels_mat = full_body[:,(n_feature+1):-1]

    M = np.isnan(trinary_labels_mat)# 将其进行判断有哪些是nan值

    Y = np.where(M,0,trinary_labels_mat)>0.

    ##进行判断哪里有Nan值则将其转化为0,则保留原来的数值

    ##并将其转化为布尔值

```

由上我们得到状态存在矩阵M,同时使用where函数对其进行从新置换。

相关文章

  • 无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章 无标题文章无标题文章无标题文章无...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • fasfsdfdf

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章

  • 无标题文章

    无标题文章 无标题文章 无标题文章无标题文章 无标题文章 无标题文章

网友评论

    本文标题:无标题文章

    本文链接:https://www.haomeiwen.com/subject/fagrbttx.html