一、余弦相似度
参考链接:https://www.bilibili.com/video/BV1wG411b76y/?spm_id_from=333.337.search-card.all.click&vd_source=d016656d50c44c3fbab50ebd4e87a627
参考代码: https://zhuanlan.zhihu.com/p/265765067 https://link.zhihu.com/?target=https%3A//github.com/ZhanPwBibiBibi/CHlikelihood
用余弦值代表向量差异
第一步:将文本转换成向量(分词;去掉停用词)
分词 -> 词频统计
停用词 -> 使用停用词词典(eg.我 是)
停用词表 链接 http://silencedream.gitee.io/
过程:文本 => 分词 =>(去掉停用词) => 文本向量化 => 余弦向量化
每个词通过换行来分割,一行一个词,对每一行进行读取,将读取的词存入stopwordlist空列表中
wordcut表示分词结果
二、数据预处理
参考书籍:Python数据分析与应用:从数据获取到可视化
1.空值 None 和缺失值 NaN 的处理
库:Pandas
1)判断数据集中是否存在空值和缺少值
pandas.isnull( obj ) 数据中存在None和NaN,返回True,否则返回False
pandas.notnull( obj ) 数据中存在None和NaN,返回False,否则返回True
2)删除含有空值或缺失值的行和列
dropna(axis = 0, how = 'any', thresh = None, subset = None, inplace = False ) eg.df_obj.dropna()
3)填充空值或缺失值
fillna(value = None, method = None, axis = None, inplace = False, limit = None, downcast = None, **kwargs)
eg.df_obj.fillna('66.0') #使用66.0替换缺失值
eg.df_obj.fillna({'A': 4.0, 'B': 5.0}) #指定列填充数据
eg.df_obj.fillna({method = 'ffill' ) #前向填充数据
>method表示填充方式,默认值为None,另外还支持以下取值:
pad/ffil:用缺失值前面的一个值代替缺失值(前向填充);
back/bfill:用缺失值后面的一个值代替缺失值(后向填充)。
2.重复值的处理
库:Pandas
1)标记是否有重复值
duplicated(subset = None, keep = 'first') eg.person_info.duplicated()
>keep表示删除重复项并保留第一次出现的项,取值可为first,last,False
first:从前向后查找,除了第一次出现外,其余相同的被标记为重复(默认)。
last:从后向前查找,除了最后一次出现外,其余相同的被标记为重复。
False:所有相同的都被标记为重复。
2)删除重复值
drop_duplicates(subset = None, keep = 'first', inplace = False) eg.person_info.drop_duplicates()
3.异常值的处理——异常值,指样本中的个别值,其数值明显偏离它所属样本的其余观测值
1)基于3σ原则检测异常值(拉依达原则)
3σ原则,指假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,凡是超过这个区间的误差都是粗大误差,在此范围误差内的数据应予以剔除。
*要求数据服从正态分布或近似正态分布
2)基于箱型图检测异常值
箱型图是一种用作显示一组数据分散情况的统计图。在箱型图中,异常值通常被定义为小于QL-1.5QR或QU+1.5IQR的值。其中:
>QL:称为下四分位数,表示全部观察中四分之一的数据取值比它小
>QU:称为上四分位数,表示全部观察中四分之一的数据取值比它大
>IQR:称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半
*对数据没有任何要求,箱型图判断异常值的标准是以四分位数和四分位距为基础
①绘制箱型图 boxplot() eg. df.boxplot(column = ['A', 'B', 'C', 'D' ])
离散点表示的是异常值,上界表示除异常值以外数据中最大值,下界表示除异常值以外数据中最小值。
②修正异常值,可使用Pandas中replace()方法进行替换,可单个或多个数据替换
replace(to_replace = None, value = None, inplace = False, limit = None, regex = False, method = 'pad' )
eg. df.replace(to_replace = 388,value = 38.8) #将388替换为38.8
4.更改数据类型
1)明确指定数据的类型
df.dtypes #查看数据的类型
在使用构造方法创建对象时,使用dtype参数指定数据的类型
eg.df = pd.DataFrame({'A': ['5', '6', '7' ], 'B': ['3', '2', '1']}, dtype = 'int')
2)通过 astype() 方法强制转换数据的类型
astype(dtype, copy = True, errors = 'raise', **kwargs) eg.df['B'].astype(dtype = 'int') #强制转换为int类型
3)通过to_numeric()函数转换数据类型——解决astype()方法 待转换的数据中存在数字以外的字符,进行类型转换时会出现错误
pandas.to_numeric(arg, errors = 'raise', downcast = None)
>arg表示要转换的数据,可以是list,tuple,Series
eg. pd.to_numeric(ser_obj, errors = 'raise')