写点什么

机器学习中常用的处理手段

用户头像
子夜
关注
发布于: 2020 年 05 月 01 日
机器学习中常用的处理手段
  • 标准化:

处理数据时,要知道数据本身是怎样分布的,是需要截断处理还是缩减范围?截断会丢失数据,缩减范围会增加各个数据之间的对比差异。所以根据数据本身情况而定,不要想当然的随机选择一种方式

#方式 1
X = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
#方式 2 缩放到(0,1)
x = (x - np.min(x)) / np.max(x)
# 然后缩放到(a,b)
f(x) = (b-a) x + a
#方式 3
img(img < 0) = 0;
img(img > 255) = 255;
#方式 4
# Problem 1 - Implement Min-Max scaling for grayscale image data
def normalizegrayscale(imagedata):
"""
Normalize the image data with Min-Max scaling to a range of [0.1, 0.9]
:param imagedata: The image data to be normalized
:return: Normalized image data
"""
a = 0.1
b = 0.9
grayscalemin = 0
grayscalemax = 255
return a + ( ( (imagedata - grayscalemin)*(b - a) )/( grayscalemax - grayscale_min ) )



  • 独立热编码

#方式1
def onehotencode(x):
targets = np.array(x).reshape(-1)
return np.eye(10)[targets]
#方式2
from sklearn.preprocessing import LabelBinarizer
def onehotencode(x):
labelbinarizer = LabelBinarizer()
labelbinarizer.fit(x)
return label_binarizer.transform(x)



  • 随机散列数据

from sklearn.modelselection import StratifiedShuffleSplit
ss = StratifiedShuffleSplit(nsplits=1, testsize=0.2)
trainidx,validx = next(ss.split(codes, labels))
halfval = int(len(validx)/2)
validx,testidx = validx[:halfval],validx[halfval:]
trainx, trainy = codes[trainidx],labelsvecs[trainidx]
valx, valy = codes[validx],labelsvecs[validx]
testx, testy = codes[testidx],labelsvecs[testidx]
  • 输入图片可视化

def visualizeinput(img, ax):
ax.imshow(img, cmap='gray')
width, height = img.shape
thresh = img.max()/2.5
for x in range(width):
for y in range(height):
ax.annotate(str(round(img[x][y],2)), xy=(y,x),
horizontalalignment='center',
verticalalignment='center',
color='white' if img[x][y]<thresh else 'black')
fig = plt.figure(figsize = (12,12))
ax = fig.addsubplot(111)
visualizeinput(Xtrain[0], ax) #X_train[0] 就是一张图片
  • 权重的初始化,我们希望初始化的权重非常接近零但又不为零。一般建议在 ( 是输入的数量).



  • bias的初始化,建议使用tf.zeros来初始化为零值

  • 池化层放在激活层前面,可以减少激活层的计算量

  • 尝试增加卷积层和全链接层,增强下神经网络的计算能力

  • 卷积的输出通道数可以设为如 32 - 64 - 128 这样逐渐递增的形式;全连接层的节点数可以考虑类似 512 - 256 -128 的设定

  • 卷积核设置上经验上建议设为奇数



用户头像

子夜

关注

还未添加个人签名 2018.03.21 加入

还未添加个人简介

评论

发布
暂无评论
机器学习中常用的处理手段