用SVM处理XSS时,数据清洗打标数据标准化处理的方法和意义

def get_len(url):
    return len(url)

def get_url_count(url):
    if re.search('(http://)|(https://)', url, re.IGNORECASE) :
        return 1
    else:
        return 0

def get_evil_char(url):
    return len(re.findall("[<>,\'\"/]", url, re.IGNORECASE))

def get_evil_word(url):
    return len(re.findall("(alert)|(script=)(%3c)|(%3e)|(%20)|(onerror)|(onload)|(eval)|(src=)|(prompt)",url,re.IGNORECASE))

def get_last_char(url):
    if re.search('/$', url, re.IGNORECASE) :
        return 1
    else:
        return 0

def get_feature(url):
    return [get_len(url),get_url_count(url),get_evil_char(url),get_evil_word(url)]

def etl(filename,data,isxss):               #加载特征统计函数,处理filename,并特征打标到data
    try:
        file_object = open(filename)
        for line in (file_object):
            f1=get_len(line)
            f2=get_url_count(line)
            f3=get_evil_char(line)
            f4=get_evil_word(line)
            data.append([f1,f2,f3,f4])
            if isxss:
                y.append(1)
            else:
                y.append(0)
    finally:
        file_object.close( )
    return data

etl('xss-200000.txt',x,1)   #加载正常数据并打标1到data(也就是x)中
etl('good-xss-200000.txt',x,0) ##加载异常数据并打标0到data(也就是x)中

min_max_scaler = preprocessing.MinMaxScaler()  #标准化缩放
x_min_max=min_max_scaler.fit_transform(x)

而在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。
不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。
常见的方法有:min-max标准化(Min-max normalization),log函数转换,atan函数转换,z-score标准化

posted @ 2018-03-22 16:20  DrKang  阅读(996)  评论(0编辑  收藏  举报