首先,用了python自带的shuffle函数对原始样本进行随机化,发现两个缺点,1 效率不高,计算速度较慢 。2 对分类结果提高不大,有可能还降低准确度。所以考虑另外一种随机方法对样本进行有效的随机排序。
在参考了excel的rand()函数排序方法之后,在Python上为每一条样本产生一个随机数,然后在根据此随机数对整个样本集进行降序或升序排序,这样的操作之后,分类准确度确实提高了不少,再次验证了样本集要随机化这一原则。
具体的参考代码如下:
#首先是随机数组产生器
rand = np.random.rand(array.size)
#然后是为每条样本添加一个随机数,也就是添加一个随机属性列,用到的是AddLabels函数 例如:AddLabels(outputfilename,rand.T,'rand')
def AddLabels(inputfile,labelArray,labelName):
csv_input = pd.read_csv(inputfile,error_bad_lines=False, skip_blank_lines=True )
try:
csv_input[labelName] = labelArray
except Exception ,e:
print Exception,":" ,e
finally:
csv_input.to_csv(inputfile, index = False, index_label = labelName, mode = 'wb+')
#然后是根据随机数对样本进行排序,其中csv_input是一个DataFrame
csv_input.sort_values(by='rand',axis = 0,inplace = True )