1.数据预处理

 数据挖掘:也就是data mining,是一个很宽泛的概念,字面意思就是从大型数据存储库中挖掘有用的信息。

数据挖掘是统计学,机器学习,数据库三者的统一。它利用的思想有:

(1)统计学的抽样、估计、假设检验;

(2)人工智能、机器学习的算法、建模技术和理论;

(3)此外需要数据库提供有效的存储、索引、查询等处理支持。

之后的数据挖掘学习就分这几部分去学习:

数据预处理,关联分析,回归分析,分类,聚类,预测,诊断

在开始数据挖掘六大任务之前的,先了解数据预处理相关知识。

由于数据挖掘的数据基本来自生产、生活、商业中的实际数据,现实中我们采集到的数据往往存在:不正确、不完整、不一致这三个问题。因此需要提高数据质量,满足数据挖掘的需要。

数据预处理一般就四种:

数据清洗

用来清除数据中的噪声,纠正不一致。一般包括缺失值处理和异常值处理。

一、缺失值的处理:

总的来说分删除法和插补法

判断是否有缺失值:isnull(缺失True)、notnull(缺失False)

结合bool索引筛选不为空的数据:df[df['col1'].notnull()]

删除缺失值:df.dropna( )

填充缺失值:df.fillna()填充缺失值

替换缺失数据:df.replace()

缺失值插补-均值mean/中位数median/众数mode

临近值插补:method参数:pad / ffill → 用之前的数据填充,backfill / bfill → 用之后的数据填充

(1)删除法:删除存在缺失值的记录(仅当样本量很大且缺失值记录所占样本比例<5%时可行)

# 判断是否有缺失值数据 - isnull,notnull 

df = pd.DataFrame({'value1':[12,33,45,23,np.nan,np.nan,66,54,np.nan,99,190],

                  'value2':['a','b','c','d','e',np.nan,np.nan,'f','g',np.nan,'g']})

print(df.notnull())  # Dataframe直接判断是否是缺失值,返回一个两列的Series

print(df['value1'].notnull())  # 通过索引判断

# 删除缺失值 - dropna

s = pd.Series([12,33,45,23,np.nan,np.nan,66,54,np.nan,99])

df = pd.DataFrame({'value1':[12,33,45,23,np.nan,np.nan,66,54,np.nan,99,190],

                  'value2':['a','b','c','d','e',np.nan,np.nan,'f','g',np.nan,'g']})

s.dropna(inplace = True)    # 5.26发现可以这样写:s[s>0]

df2 = df['value1'].dropna()

(2)插补法:对称数据可以使用均值,倾斜数据应该使用中位数。

# 填充/替换缺失数据 - fillna、replace

s = pd.Series([12,33,45,23,np.nan,np.nan,66,54,np.nan,99])

s.fillna(0,inplace = True)

s.replace(np.nan,'缺失数据',inplace = True)   

# 缺失值插补

# 几种思路:均值/中位数/众数插补、临近值插补、插值法

#  1)均值/中位数/众数插补

s.fillna(s.mean(),inplace = True)          # 用均值填补,s.median()  # 中位数

s.replace(np.nan,s.mean(),inplace = True)    

#  2)临近值插补

s.fillna(method = 'ffill',inplace = True)    # 用前值插补

# method参数:# pad / ffill → 用之前的数据填充 # backfill / bfill → 用之后的数据填充

二、异常值处理方法 

异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析也称为离群点的分析。

异常值分析:

3σ原则:数据服从正态分布,异常值被定义为一组测定值中与平均值的偏差超过3倍的值 → p(|x - μ| > 3σ) ≤ 0.003 error=data[np.abs(data-u)>3*std]

箱型图:dat.plot.box()借助describe函数计算分位差IQR,下限mi=q1-1.5*iqr,上限ma=q3+1.5*iqrerror = data[(data < mi) | (data > ma)]

散点图:利用散点图观察异常点位置

(1)、3σ原则:如果数据服从正态分布,异常值被定义为一组测定值中与平均值的偏差超过3倍的值 → p(|x - μ| > 3σ) ≤ 0.003

data = pd.Series(np.random.randn(10000)*100)      # 创建数据

u = data.mean()    # 计算均值

error = data[np.abs(data - u) > 3*std]       # 筛选出异常值error

data_c = data[np.abs(data - u) <= 3*std]    # 剔除异常值之后的数据data_c

print('异常值共%i条' % len(error))

(2)、箱型图分析

s = data.describe()

q1 = s['25%']

q3 = s['75%']

iqr = q3 - q1    # # 计算分位差

mi = q1 - 1.5*iqr

ma = q3 + 1.5*iqr

print('分位差为:%.3f,下限为:%.3f,上限为:%.3f' % (iqr,mi,ma))

ax2 = fig.add_subplot(2,1,2)

error = data[(data < mi) | (data > ma)]          # 筛选出异常值error

data_c = data[(data >= mi) & (data <= ma)]

print('异常值共%i条' % len(error))                 # 剔除异常值之后的数据data_c

数据集成

将数据由多个数据源合并成一个一致的数据存储,减少数据集的冗余和不一致,去除重复。

数据规约

删除冗余特征或聚类降低数据的规模,仍接近原始数据的完整性。

数据变换

数据变化是将数据由一种表现形式变为另一种表现形式。常见的数据变换方式是:数据标准化、数据离散化、语义转换。

0-1标准化 将数据的最大最小值记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理 x = (x - Min) / (Max - Min)

Z-score标准化z=(x-μ)/σ,其中x为某一具体分数,μ为平均数,σ为标准差Z值的量代表着原始分数和母体平均值之间的距离,有正负。在分类、聚类算法中,需要使用距离来度量相似性的时候,Z-score表现更好

(1)数据标准化

0-1标准化:

# 将数据的最大最小值记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理

# x = (x - Min) / (Max - Min)

Z-score标准化:

# Z分数(z-score),是一个分数与平均数的差再除以标准差的过程 → z=(x-μ)/σ,其中x为某一具体分数,μ为平均数,σ为标准差

# Z值的量代表着原始分数和母体平均值之间的距离,是以标准差为单位计算。在原始分数低于平均值时Z则为负数,反之则为正数

# 数学意义:一个给定分数距离平均数多少个标准差?

# 经过处理的数据符合标准正态分布,即均值为0,标准差为1

# 什么情况用Z-score标准化:

# 在分类、聚类算法中,需要使用距离来度量相似性的时候,Z-score表现更好

(2)离散化

指将连续性数据切分为多个“段”,有些数据挖掘算法要求数据是分类属性的形式。

(3)语义转换

将{非常好,好,一般,差,非常差}这种转化为{1,2,3,4,5}来替代。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355