文本特征抽取
使用TF-IDF
解释:
- TF:term frequency 词的频率
- IDF:inverse document frequency 逆文档频率
- log(总文档数量 / 该词出现的文档数量)
TF * IDF = 重要性程度
TfidfVectorizer语法
TfidfVecotrizer(stop_words = None, …)
返回词的权重矩阵
- TfidVectorizer.fit_transform(X)
- X:文本或者包含文本字符串的可迭代对象
- 返回值:返回sparse矩阵
- TfidVectorizer.inverse_transform(X)
- X:array数组或者sparse矩阵
- 返回值:转换之前数据格式
- TfidVectorizer.get_feature_names()
- 返回值:单词列表
特征预处理
- 对数据进行处理
- 通过特定的统计方法(数学方法)将数据转换成算法要求的数据
数值型数据:标准缩放
- 归一化
- 标准化
类别型数据:one-hot编码
时间类型:时间的切分
sklearn特征处理API
sklearn.preprocessing
-
归一化
- 特定:通过对原始数据进行变换把数据映射到默认为[0, 1]之间
- 公式
注:作用于每一列,max为一列的最大值,min为一列的最小值,那么为最终结果,mx,mi分别为指定区间.默认mx为1,mi为0
-
sklearn归一化API:sklearn.preprocessing.MinMaxScaler
-
语法:
-
MinMaxScalar(feature_range=(0, 1)…)
- 每个特征缩放到给定范围(默认[0, 1])
-
MinMaxScalar.fit_transform(X)
- X:numpy array 格式的数据[n_samples, n_features]
- 返回值:转换后的形状相同的array
-
归一化步骤:
- 实例化MinMaxScalar
- 调用fit_transform
-
目的:使得一个特征对最终结果不会造成更大影响
-
注意:在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性(稳定性)较差,只适合传统精确小数据场景
- 标准化
- 特定:通过对原始数据进行交换把数据变换到均值为0,标准差为1范围内
- 公式
注:作用于每一列,mean为平均值,σ为标准差
其中:var为方差(考量数据的稳定性)
- 对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变
- 对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小
- sklearn标准化API:sklearn.preprocession.StandardScalar