数据的特征工程
1.特征工程是什么
特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性
2.特征工程的意义
更好的特征意味着更强的鲁棒性
更好的特征意味着只需用简单模型
更好的特征意味着更好的结果
3.scikit-learn库介绍
Python语言的机器学习工具
Scikit-learn包括许多知名的机器学习算法的实现
基于NumPy、SciPy和matplotlib构建
开源、商业可用 - BSD许可
Scikit-learn文档完善,容易上手,丰富的API,使其在学术界颇受欢迎。
4.数据的特征抽取
4.1 定义
特征抽取:将任意数据格式(例如文本和图像)转换为机器学习的数字特征。
特征抽取针对非连续型数据
特征抽取对文本等进行特征值化
特征值化是为了计算机更好的去理解数据
4.2 sklearn特征抽取API
sklearn.feature_extraction
4.3 字典特征抽取
定义:将字典中的一些类别数据,分别进行转换成特征
作用:对字典数据进行特征值化
类:sklearn.feature_extraction.DictVectorizer
分类特征变量/字典提取语法:
sklearn.feature_extraction.DictVectorizer(sparse = True)----将映射列表转换为Numpy数组或scipy.sparse矩阵
sparse :是否转换为scipy.sparse矩阵表示,默认开启
方法:
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 dictver():
"""字典数据抽取"""
dict = DictVectorizer()
data = dict.fit_transform([{'city': '北京','temperature':100},{'city': '上海','temperature':60},{'city': '深圳','temperature':30}])
print(data)
print(dict.get_feature_names())
print(data.toarray()) # 转化为数组
print(dict.inverse_transform(data))
if __name__ == '__main__':
dictver()
结果为:
4.4 文本特征提取(只限于英文)
作用:对文本数据进行特征值化
类:sklearn.feature_extraction.text.CountVectorizer
语法:
sklearn.feature_extraction.text.CountVectorizer()----将文本文档的集合转换为计数矩阵
方法:
CountVectorizer.fit_transform(X,y)
X:文本或者包含文本字符串的可迭代对象----返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X)
X:array数组或者sparse矩阵----返回值:转换之前数据格式
CountVectorizer.get_feature_names()
返回值:单词列表
from sklearn.feature_extraction.text import CountVectorizer
def countvec():
"""对文本进行特征值化"""
cv = CountVectorizer()
data = cv.fit_transform(["life is short,i like python","life is too long,i dislike python"])
print(cv.get_feature_names()) # 返回词的列表,重复的只统计一次,单个字母不统计
print(data.toarray()) # 对每篇文章,在词的列表里面进行统计每个词出现的次数
if __name__ == '__main__':
countvec()
结果为