【人工智能概论】 数据预处理——MaxMin归一化、Z-Score异常判断、经验异常判断、突变异常分析
一. MaxMin归一化
1.1 数据标准化的目的与好处
将数据按比例缩放,去除数据单位的限制,将量纲转化成纯数值。 再多评价指标体系下,不同单位造成数据数值取值差异大,如果直接对原始数据进行分析,可能会过分突出取值大的数据,而对数值小的数据不够关注,为了保证结果的可靠性,必须对原始数据进行标准化处理。
1.2 归一化公式
它是一种线性归一化,是对原始数据进行线性映射,使得数据被映射到[0 , 1]之间,转换函数如下:
x
′
=
x
−
m
i
n
(
x
)
m
a
x
(
x
)
−
m
i
n
(
x
)
x' = \frac{x - min(x)}{max(x) - min(x)}
x ′ = ma x ( x ) − min ( x ) x − min ( x )
1.3 归一化代码
from sklearn. preprocessing import MinMaxScaler
data = [ [ [ - 1 , 17 ] , [ - 0.9 , 17.6 ] , [ - 1.5 , 18 ] , [ - 1 , 18.5 ] ] , [ [ 0.36 , 0.67 ] , [ 0.35 , 0.25 ] , [ 0.58 , 0.68 ] , [ 0.25 , 0.35 ] ] ]
data2 = [ [ 0.36 , 0.67 ] , [ 0.35 , 0.25 ] , [ 0.58 , 0.68 ] , [ 0.25 , 0.35 ] ]
print ( data)
scaler = MinMaxScaler( )
scaler. fit( data)
data1 = scaler. transform( data)
print ( data1)
print ( scaler. inverse_transform( data1) )
data3 = scaler. inverse_transform( data2)
print ( data3)
print ( scaler. transform( data3) )
二. Z-Score
2.1 Z-Score 原理
Z分数法的公式如下:
Z
=
x
−
μ
σ
Z = \frac{x - \mu }{\sigma }
Z = σ x − μ 通常认为,Z-Score分数大于3或小于-3的数据是一条异常数据,要对其进行处理,此处以直接删除为例。
2.2 代码
import pandas as pd
def abnormal_data_delete ( df) :
df_zscore = df. copy( )
cols = df. columns
for col in cols:
df_col = df[ col]
z_score = ( df_col - df_col. mean( ) ) / df_col. std( )
df_zscore[ col] = z_score. abs ( ) > 2.2
df_zscore[ 'sum' ] = df_zscore. sum ( axis = 1 )
df = df[ df_zscore[ 'sum' ] == False ]
return df
df = pd. DataFrame( { 'col1' : [ 1.5 , 120 , 3 , 5 , 2 , 12 , 13 ] ,
'col2' : [ 12 , 17 , 31 , 53 , 22 , 32 , 43 ] } )
print ( df)
df = abnormal_data_delete( df)
print ( df)
三. 经验异常分析
经验异常:指根据长期生产劳动经验对异常数据进行筛选,以海洋温度为例,某地海洋温度长期保持在30度左右,突然出现80度,很明显这是有问题的,可以通过过滤即可实现筛选。
df[ df[ 'Tem' ] < 40 ]
四. 突变异常分析
大部分数据的变化应该是渐变的,如果突变很可能是异常,不妨按照下式计算
k
=
∣
(
x
−
x
∗
)
x
∗
∣
k = \left | \frac{ (x - x^{*})}{x^{*}} \right |
k =
x ∗ ( x − x ∗ )
其中
x
∗
x^{*}
x ∗ 为前五条数据的平均值,根据数据特点设定一个阈值,以此筛选突变的异常值。