版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
机器学习 scikit-learn 特征提取
字典特征抽取
from sklearn.feature_extraction.dict_vectorizer import DictVectorizer
def dict_extract():
"""字典特征抽取"""
vector = DictVectorizer()
res = vector.fit_transform(
[{'city': "北京", 'temperature': 100}, {'city': "上海", 'temperature': 60}, {'city': "深圳", 'temperature': 30}])
print(vector.get_feature_names())
print(res.toarray())
'''
['city=上海', 'city=北京', 'city=深圳', 'temperature']
[[ 0. 1. 0. 100.]
[ 1. 0. 0. 60.]
[ 0. 0. 1. 30.]]
'''
文本特征抽取
from sklearn.feature_extraction.text import CountVectorizer
def text_extract():
"""
文本特征抽取
对于单个字母不进行统计
"""
# 实例化 CountVectorizer
vector = CountVectorizer()
# 调用fit_transform输入并转换数据
res = vector.fit_transform(["life is short,i like python", "life is too long,i dislike python"])
# 打印结果
print(vector.get_feature_names())
print(res.toarray())
'''
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
[[0 1 1 1 0 1 1 0]
[1 1 1 0 1 1 0 1]]
'''
文本特征抽取(中英文混合)
from sklearn.feature_extraction.text import CountVectorizer
import jieba
def china_text_extract():
"""
文本特征抽取
单词+中文
"""
vector = CountVectorizer()
content1 = '人生苦短,我用python'
content2 = '人生漫长,我不用python'
result1 = ' '.join(list(jieba.cut(content1)))
result2 = ' '.join(list(jieba.cut(content2)))
print("result1: %s" % result1)
print("result2: %s" % result2)
res = vector.fit_transform([result1, result2])
print(vector.get_feature_names())
print(res.toarray())
'''
result1: 人生 苦短 , 我用 python
result2: 人生 漫长 , 我 不用 python
['python', '不用', '人生', '我用', '漫长', '苦短']
[[1 0 1 1 0 1]
[1 1 1 0 1 0]]
'''
TF-IDF
主要思想: 如果某个单词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
作用: 用来评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
def tf_idf_text_extract():
vector = TfidfVectorizer()
content1 = '人生苦短,我用python'
content2 = '人生漫长,我不用python'
result1 = ' '.join(list(jieba.cut(content1)))
result2 = ' '.join(list(jieba.cut(content2)))
print("result1: %s" % result1)
print("result2: %s" % result2)
res = vector.fit_transform([result1, result2])
print(vector.get_feature_names())
print(res.toarray())
'''
result1: 人生 苦短 , 我用 python
result2: 人生 漫长 , 我 不用 python
['python', '不用', '人生', '我用', '漫长', '苦短']
[[0.40993715 0. 0.40993715 0.57615236 0. 0.57615236]
[0.40993715 0.57615236 0.40993715 0. 0.57615236 0. ]]
'''