机器学习sklearn —数据类型和文本特征抽取

sklearn与特征工程

数据的来源与类型

来源

大部分数据来源于已有的数据库、与爬虫工程师的采集

数据的类型

按数据分类

标称型:标称型目标变量的结果只在有限目标中取值(如真与假)主要用于分类
数值型:数值型目标变量则可以从无限的数值集合中取值 (如0.100 ,42.001)主要用于回归分析

按数据的分布分类

离散型:离散变量是指其数值只能用自然或整数单位计算的则为离散变量 (班级人数)
连续型:指在指定区间内可以是任意一个数值(票房数据)

数据的特征抽取

现实世界中多数特征都不是连续变量,比如分类、文字、图像等,为了对非连续变量做特征表述,需要对这些特征做数学化表述,因此就用到了特征提取. sklearn.feature_extraction提供了特征提取的很多方法

分类特征变量提取

将城市和环境作为字典数据,来进行特征的提取

sklearn.feature_extraction.DictVectorizer(sparse = True)

将映射列表转换为Numpy数组或scipy.sparse矩阵

sparse 是否转换为scipy.sparse矩阵表示,默认开启

方法

fit_transform(X,y)  应用并转化映射列表X,y为目标类型
inverse_transform(X[, dict_type]) 将Numpy数组或scipy.sparse矩阵转换为映射列表
from sklearn.feature_extraction import DictVectorizer
onehot = DictVectorizer() # 如果结果不用toarray,请开启sparse=False
instances = [{'city': '北京','temperature':100},{'city': '上海','temperature':60}, {'city': '深圳','temperature':30}]
X = onehot.fit_transform(instances).toarray()
print(onehot.inverse_transform(X))

文本特征提取(限于英文使用)

文本的特征提取应用于很多方面,比如说文档分类、垃圾邮件分类和新闻分类。那么文本分类是通过词是否存在、以及词的概率(重要性)来表示。

1文档中词的出现(1出现 0未出现)

sklearn.feature_extraction.text.CountVectorizer()

将文本文档的集合转换为计数矩阵(scipy.sparse matrices)

方法

fit_transform(raw_documents,y) 学习词汇词典并返回词汇文档矩阵

from sklearn.feature_extraction.text import CountVectorizer
content = ["life is short,i like python","life is too long,i dislike python"]
vectorizer = CountVectorizer()
print(vectorizer.fit_transform(content).toarray())
需要toarray()方法转变为numpy的数组形式

2TF-IDF表示词的重要性

TfidfVectorizer会根据指定的公式将文档中的词转换为概率表示

方法

fit_transform(raw_documents,y) 学习词汇和idf,返回术语文档矩阵。

from sklearn.feature_extraction.text import TfidfVectorizer
content = ["life is short,i like python","life is too long,i dislike python"]
vectorizer = TfidfVectorizer(stop_words='english')
print(vectorizer.fit_transform(content).toarray())
print(vectorizer.vocabulary_)

猜你喜欢

转载自blog.csdn.net/qq_39161737/article/details/78879987