python 数据挖掘 之 对数据进行简单预处理(1)

  • Post author:
  • Post category:python




python 数据挖掘 之 对数据进行简单预处理

在我们对数据集进行数据挖掘之前,需要先对数据集进行简单的处理,让数据集变得更规范更具有代表性。

对数据集进行的预处理又许多种,接下来我就简单说几种常用的。

光说不如边做边说,我这里有一个在网上找到的数据集,我们可以拿它来做例子。

seeds_dataset.txt



数据集介绍

三种不同品种小麦籽粒几何性状的测定。软X射线技术和GRAINS包用于构建所有七个实值属性

数据集来源: https://archive.ics.uci.edu/ml/datasets/seeds

数据集特征:多变量

实例数:210

检查组包括属于三种不同品种小麦的籽粒:Kama,Rosa和Canadian,每种70个元素,随机选择用于实验。

使用软X射线技术检测内部核结构的高质量可视化。

它是非破坏性的,并且比其他更复杂的成像技术(如扫描显微镜或激光技术)便宜得多。

将图像记录在13×18cm X射线KODAK板上。

使用来自实验田的联合收获的小麦谷粒进行研究,在卢布林的波兰科学院的农业生物学研究所进行了探索。


上面是凑字数的,

下面是重点:

为了构建数据,测量了小麦籽粒的七个几何参数:

1 面积A

2 周长P

3 紧凑度C = 4 pi A / P ^ 2

4 籽粒长度

5 籽粒宽度

6 不对称系数

7 核槽的长度

所有这些参数都是实值连续的。然后第八项是小麦的品种,取值1,2,3分别代表不同的小麦品种。

这是一些数据样例:

14.29 14.09 0.905 5.291 3.337 2.699 4.825 1

13.84 13.94 0.8955 5.324 3.379 2.259 4.805 1

16.17 15.38 0.8588 5.762 3.387 4.286 5.703 2

12.21 13.47 0.8453 5.357 2.893 1.661 5.178 3

.

.

.



用python将数据集提取成列表

from pandas import Series,DataFrame,np
from numpy import nan as NA
import pandas as pd
from scipy.interpolate import lagrange
#部分可能用不上,但多了不出错。。。

#打开文件并读取
filename = r"seeds_dataset.txt"
#这里用绝对路径相对路径均可,看情况而定

a=[]#创建一个列表准备承载数据
try:
    fp=open(filename,"r")
    print('%s 文件打开成功' % filename)
    for line in fp.readlines():   
        line=line.strip('\n')
        #因为在每一行后面都有换行符所以需要先删掉
        
        line=line.split('\t')
        #这个文档中数据与数据之间是缩进符,所以是以 '\t' 为为分隔符
        #其他的有 ','' ' 等以分隔符,换成对应的即可
                    
        a.append(line)#把每一行加入到列表中

    fp.close()
    print("文件内容为:")
    print(a)
except IOError:
    print("文件打开失败,%s文件不存在" % filename)

运行后发现a里面已经塞进了数据。



删除重复数据

有些数据集中有一些数据是重复的,这可能会对之后的数据挖掘产生一定的误差,所以我们需要先把重复的部分删除。


b=[]
for i in a :
    if i not in b :
        b.append(i)
a=b
#print('删除重复数据后b的长度',len(a))

这里运用一个新建列表进行迁移的方式来删除重复部分。



删除所有带有缺失数据的数据行

print('未处理前数据长度为',len(a))
s=[]
for q in range(len(a)):    #首先找出有问题的坐标
    for i in a[q]:
        if (i=='0' or i==''):#这里输入不合格的数据,可以用or继续扩展
            s.append(q)
            break
print(s)
for i in range(len(s)):#倒序一个一个的把有问题的删除
    del a[s[-1]
    s.pop()
print('删除带有缺失的数据行后数据长度为',len(a))

下面是结果示意,可以看到已经删掉部分数据了

在这里插入图片描述

当然也有其他的方法处理有数据异常的数据,比如检测后替换异常值,替换的值可以选用数据平均值等数据,这里不再赘述。

实际上数据的预处理还可以有许多步骤,像是数据规范化,归一化,可以选择最大最小规范化,零均值规范化,小数定标规范化等方式处理(

相关概念可以问度娘。网络是个好东西,得好好利用。



说白了是我懒得写了


),这个数据集我感觉可以不用这样处理,所以就不加了。

这些就是关于数据集的一些简单的预处理, 如果有机会的话我还会写写其他的预处理方式的。

欢迎大家讨论和发言啊。。,,



版权声明:本文为longling0原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。