数据为CSV表格有8列,其中abstime列为时间列,其余列为特征列
!wget http://82.156.209.173/s/dHCnaH32rtZdxcs/download
!mv download sample_data_A100159.csv
1. 对给出的样本文件中的所有特征列做normalization,映射至(0-255)的区间,从abstime的第一行开始每隔200条取一次整行数据,并将最终取出的数据并以PNG格式的图片输出。
提示:输出图片用PIL库
可参考 https://blog.csdn.net/qq_42967398/article/details/95388563
对于样本
X
N
×
K
X_{N\times K}
XN×K,共
N
N
N个样本,
K
K
K个特征。sample_data_A100159.csv的shape是(4905, 8)。所以有
N
=
4905
N=4905
N=4905,
K
=
8
K=8
K=8。
1)归一化是按照每个特征进行归一化。对于第
k
k
k个特征,将数据归一化到[0,1]:
X
=
X
−
X
m
i
n
X
m
a
x
−
X
m
i
n
X=\frac{X-X_{min}}{X_{max}-X_{min}}
X=Xmax−XminX−Xmin2)对于第
k
k
k个特征,将数据归一化到[0,255],令
l
o
w
=
0
,
h
i
g
h
=
255
low=0,high=255
low=0,high=255:
X
=
l
o
w
+
X
−
X
m
i
n
X
m
a
x
−
X
m
i
n
∗
(
h
i
g
h
−
l
o
w
)
X=low+\frac{X-X_{min}}{X_{max}-X_{min}}*(high-low)
X=low+Xmax−XminX−Xmin∗(high−low)3)若第
k
k
k个特征的值全部相同,那么
X
m
a
x
−
X
m
i
n
=
0
X_{max}-X_{min}=0
Xmax−Xmin=0,分母为0,计算结果溢出,程序报错。令分母加一个小数(1e-5)。
4)numpy便于对N维数组对象进行整体的 *** 作。比如有
K
K
K列特征,不用循环
K
K
K次进行归一化 *** 作。数据是二维的,在第一维度上进行最大值最小值计算。第一维度是样本数量。
d
a
t
a
.
m
i
n
(
a
x
i
s
=
0
)
data.min(axis=0)
data.min(axis=0)以及
d
a
t
a
.
m
a
x
(
a
x
i
s
=
0
)
data.max(axis=0)
data.max(axis=0)两个 *** 作。
import pandas as pd
import numpy as np
import random
from PIL import Image
#################################
# CODING HERE
sample_data = pd.read_csv("sample_data_A100159.csv",header = 0)
data = np.array(sample_data)
print(data.size) #39240
print(data.shape) #(4905, 8)
print(data.ndim) #2
print(data.dtype) #float64
#归一化
x_nor = (data - data.min(axis=0))/(data.max(axis=0)-data.min(axis=0)+1e-5)* (255.0-0.0)+0.0
#(某个元素-它这列最小的数)/(它这列最大的数-它这列最小的数)
print(x_nor.shape)
data = pd.DataFrame(x_nor)
data.to_csv("normalization_A100159.csv",index=False,header=False)
abstime=data[:][6]
print(data[:][6])
ans = [][]
for i in range(0 , 4094 , 200):
ans.append(abstime[i])
print(ans.length())
#################################
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)