机器学习笔记(一):特征工程 sklear的API
机器学习——特征工程利用Scikit-learn进行特征抽取sklearn特征抽取APIsklearn.feature_extraction字典特征抽取类:sklearn.feature_extraction.DictVectorizer作用:对字典数据进行特征值化语法:DictVectorizer(sparse=Ture,...)DictVectorizer.fit_transform(X) X
·
机器学习——特征工程
利用Scikit-learn进行特征抽取
sklearn特征抽取API
sklearn.feature_extraction
字典特征抽取
-
类:
sklearn.feature_extraction.DictVectorizer
-
作用:对字典数据进行特征值化
-
语法:
DictVectorizer(sparse=Ture,...)
DictVectorizer.fit_transform(X)
X表示字典或包含字典的迭代器;返回sparse矩阵DictVectorizer.inverse_transform(X)
X表示array数组或sparse矩阵;返回原先的数据格式DictVectorizer.get_feature_names()
返回类别名称DictVectorizer.transform(X)
按照原先的标准转换
示例:
from sklearn.feature_extraction import DictVectorizer
def dictvec():
'''
字典数据抽取
return : None
'''
# 实例化
dict = DictVectorizer(sparse=True)
# 调用fit_transform
data = dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':60},{'city':'深圳','temperature':30}])
print(data)
print(dict.get_feature_names())
return None
if __name__ == '__main__':
dictvec()
输出:
(0, 1) 1.0
(0, 3) 100.0
(1, 0) 1.0
(1, 3) 60.0
(2, 2) 1.0
(2, 3) 30.0
['city=上海', 'city=北京', 'city=深圳', 'temperature']
文本特征抽取
- 类:
CountVectorizer()
- 作用:返回词频矩阵
- CountVectorizer.fit_transform(X)
- X:文本或者包含文本字符串的可迭代对象
- 返回值:返回sparse矩阵
- CountVectorizer.inverse_transform(X)
- X:array数组或者sparse矩阵
- 返回值:转换之前的数据格式
- CountVectorizer.get_feature_names()
- 返回值:单词列表
- CountVectorizer.fit_transform(X)
示例:
'''
文本数据抽取
'''
from sklearn.feature_extraction.text import CountVectorizer
def countvec():
# 实例化
count = CountVectorizer()
# 调用fit_transform
data = count.fit_transform(['life is short,I like python','life is too long, I dislike python'])
print(data)
print(count.get_feature_names())
return None
if __name__ == "__main__":
countvec()
输出:
(0, 2) 1
(0, 1) 1
(0, 6) 1
(0, 3) 1
(0, 5) 1
(1, 2) 1
(1, 1) 1
(1, 5) 1
(1, 7) 1
(1, 4) 1
(1, 0) 1
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
注意看输出结果,connt.fit_transfrom
不会统计单个的字母(比如上文中的’I’)
注意:中文是不能自动进行分词的,所以如果要使用中文分词,则需要用jieba
分词器(可用pip3 install jieba
下载)
例如:
import jieba
jieba.cut('人生苦短,我用python')
返回值:词语生成器
文本特征分析中的tf和idf
在文本特征分析中,我们最终的目的往往是进行文本分类或情感分析。但有些词是所有文章都会常用的词(比如’我们’、‘所以’…)所以我们用tf和idf来排除这种干扰
- tf:term frequency 词频
- idf:inverse document frequency 逆文档频率
- idf = log(总文档数量/该词出现的文档数)
- 单词重要性 = tf * idf
我们可以通过词的重要性来进行文本分析和情感分析
语法:
- 类:
sklearn.feature_exctraction.text.TfidfVectorizer
- 返回词的权重矩阵
TfidfVectorizer.fit_transform(X)
- X:文本或包含文本字符的可迭代对象
- 返回值:sparse矩阵
TfidfVectorizer.inverse_transform(X)
- X:array数组或sparse矩阵
- 返回值:转换为之前的格式
TfidfVectorizer.get_feature_names()
- 返回值:单词列表
更多推荐
已为社区贡献1条内容
所有评论(0)