sklearn特征抽取API
#sklearn.feature_extraction
- 字典特征抽取
#类:sklearn.feature_extraction.DictVectorizer
DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X)
#X:字典或者包含字典的迭代器
#返回值:返回sparse矩阵
DictVectorizer.inverse_transform(X)
#X:array数组或者sparse矩阵
#返回值:转换之前数据格式
DictVectorizer.get_feature_names()
#返回类别名称
DictVectorizer.transform(X)
#按照原先的标准转换
注意one-hot编码
- 文本特征抽取
#类:sklearn.feature_extraction.text.CountVectorizer
CountVectorizer(max_df=1.0,min_df=1,…)
#返回词频矩阵
CountVectorizer.fit_transform(X,y)
#X:文本或者包含文本字符串的可迭代对象
#返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X)
#X:array数组或者sparse矩阵
#返回值:转换之前数据格式
CountVectorizer.get_feature_names()
#返回值:单词列表
如何去对中文文本特征值化
不支持单个中文字!
用jieba.lcut()
TF-IDF
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,
并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分
能力,适合用来分类。
TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
#类:sklearn.feature_extraction.text.TfidfVectorizer
TfidfVectorizer(stop_words=None,…)
#返回词的权重矩阵
TfidfVectorizer.fit_transform(X,y)
#X:文本或者包含文本字符串的可迭代对象
#返回值:返回sparse矩阵
TfidfVectorizer.inverse_transform(X)
#X:array数组或者sparse矩阵
#返回值:转换之前数据格式
TfidfVectorizer.get_feature_names()
#返回值:单词列表
特征的预处理
数值型数据:标准缩放:
1、归一化
2、标准化
3、缺失值
类别型数据:one-hot编码
时间类型:时间的切分
#sklearn. preprocessing
- 归一化
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(X)
#X:numpy array格式的数据[n_samples,n_features]
#返回值:转换后的形状相同的array
StandardScaler(…)
#处理之后每列来说所有数据都聚集在均值0附近方差为1
StandardScaler.fit_transform(X,y)
#X:numpy array格式的数据[n_samples,n_features]
#返回值:转换后的形状相同的array
StandardScaler.mean_
#原始数据中每列特征的平均值
StandardScaler.std_
#原始数据每列特征的方差
- 缺失值处理
sklearn缺失值API: sklearn.preprocessing.SimpleImputer
from sklearn.impute import SimpleImputer
SimpleImputer(missing_values='NaN', strategy='mean', axis=0)
#完成缺失值插补
SimpleImputer.fit_transform(X,y)
#X:numpy array格式的数据[n_samples,n_features]
#返回值:转换后的形状相同的array
流程:
1、初始化Imputer,指定”缺失值”,指定填补策略,指定行或列
注:缺失值也可以是别的指定要替换的值
2、调用fit_transform
[[1, 2],
[np.nan, 3],
[7, 6]]
#1、 numpy的数组中可以使用np.nan/np.NaN来代替缺失值,属于float类型
#2、如果是文件中的一些缺失值,可以替换成nan,通过np.array转化成float型的数组即可
特征选择
特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。
主要方法(三大武器):
Filter(过滤式):VarianceThreshold
Embedded(嵌入式):正则化、决策树
Wrapper(包裹式)
其他选择特征的方法:神经网络
降维
本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
作用:可以削减回归分析或者聚类分析中特征的数量
sklearn降维API:sklearn. decomposition
PCA(n_components=None)
将数据分解为较低维数空间
PCA.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后指定维度的array