SKlearn简介
scikit-learn,又写作sklearn,是一个开源的基于python语言的机器学习工具包。,它通过NumPy, SciPy和Matplotlib等python数值计算的库实现高效的算法应用,并且对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。
安装:pip install -U scikit-learn
SKlearn官网:http://scikit-learn.org/stable/index.html
sklearn特征抽取API:sklearn.feature_extraction
字典特征抽取:sklearn.feature_extraction.DictVectorizer
代码示例:
# 字典特征抽取
from sklearn.feature_extraction import DictVectorizer
dict_obj = DictVectorizer(sparse=False)
data = dict_obj.fit_transform(
[
{"city": "beijing", "temperature": 100},
{"city": "shanghai", "temperature": 80},
{"city": "shenzhen", "temperature": 60},
]
)
print(dict_obj.get_feature_names())
print(data)
文本特征抽取:sklearn.feature_extraction.text.CountVectorizer
默认不统计单个的字母和单个的字
文本特征抽取的另一种方式:sklearn.feature_extraction.text.TfidfVectorizer
TF-IDF的主要思想是:如果某个词语或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词语或短语具有很好的类别区分能力,适合用来分类。 作用:用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
文本特征抽取需要对中文进行分词才能详细的进行特征值化,在这里使用的是结巴分词对中文进行分词
代码示例:
import jieba
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
def count_word():
"""
把文章分词,转换成分词之后的字符串返回
:return: str
"""
c1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")
c2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
c3 = jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系")
# 转换格式
content1 = list(c1)
content2 = list(c2)
content3 = list(c3)
# 让列表装成以空格隔开的字符串
con1 = " ".join(content1)
con2 = " ".join(content2)
con3 = " ".join(content3)
return con1, con2, con3
def count_vectorizer():
"""
文本特征抽取
:return: None
"""
a, b, c = count_word()
# CountVectorizer文本特征抽取
cv = CountVectorizer()
data = cv.fit_transform([a, b, c])
print(cv.get_feature_names())
print(data.toarray( ))
# TfidfVectorizer文本特征抽取
tf = TfidfVectorizer()
data_tf = tf.fit_transform([a, b, c])
print((tf.get_feature_names()))
print(data_tf.toarray())