sklearn(全称Scikit-learn库介绍)
•Python语言的机器学习工具
•Scikit-learn包括许多知名的机器学习算法的实现
•Scikit-learn文档完善,容易上手,丰富的API,使其在学术界颇受欢迎。
安装:windows下 pip install Scikit-learn 注:安装scikit-learn需要Numpy,pandas等库
数据的特征抽取
特征抽取(进行特征值化): · 字典特征抽取: 把字典的数据转换为具体的数据
· 文本特征抽取: 把文本的数据转换为具体额数据
注:特征值化是为了计算机更好的去理解数据
字典特征抽取
1.作用:对字典数据进行特征值化
2.语法:
•DictVectorizer(sparse=True,…)
(1) •DictVectorizer.fit_transform(X)
•X:字典或者包含字典的迭代器 传进去一个列表,列表中包含多个字典
•返回值:返回sparse矩阵
(2)•DictVectorizer.inverse_transform(X)
•X:array数组或者sparse矩阵
•返回值:转换之前数据格式
(3)•DictVectorizer.get_feature_names()
•返回类别名称
(4)•DictVectorizer.transform(X)
•按照原先的标准转换
3.流程与例子
打印的结果:from sklearn.feature_extraction import DictVectorizer def dictvec1(): dict = DictVectorizer() data = dict.fit_transform([ {"city": "上海", 'temperature': 100}, {"city": "北京", 'temperature': 60}, {"city": "深圳", 'temperature': 30} ]) print(data) return None def dictvec2(): dict = DictVectorizer(sparse=False) data = dict.fit_transform([ {"city": "上海", 'temperature': 100}, {"city": "北京", 'temperature': 60}, {"city": "深圳", 'temperature': 30} ]) print(dict.get_feature_names()) print(data) return None if __name__ == '__main__': dictvec1() dictvec2()
# 第一个函数的打印结果 (0, 0) 1.0 (0, 3) 100.0 (1, 1) 1.0 (1, 3) 60.0 (2, 2) 1.0 (2, 3) 30.0 # 第二个函数的打印结果 ['city=上海', 'city=北京', 'city=深圳', 'temperature'] [[ 1. 0. 0. 100.] [ 0. 1. 0. 60.] [ 0. 0. 1. 30.]]
第一 函数dictvec1() 的打印结果,就是sparse的矩阵模式 (在scipy模块中就是这种模式),也就是找下表,对应数据
转换成这种矩阵的模型是为了节约内存,方便读取处理
第二个函数的打印结果: 是一个二维数组的类型 对应numpy中的 ndarray类型,也即是 one-hot编码调用 get_feature_names() 函数,类似打印出类名,最后一个是结果值对应刚才输入的数据,第二个函数的数据数组,的第一个小数组,对应列名,第一个城市是上海,则对应的位置上就为,1,数组的最后一个就是对应的结果值,第二个小数组同理,第二值为1代表就是上海,最后一只也对应响应的结果值总结: 字典数据抽取:把字典中一些类别数据,分别进行转换成特征数据数据形式,有类别的这些特征,先要转换字典数据
4.ont-hot编码
比如说,Human的类别为1,Penguin的类别为2,Octopus的类别为3,Ailen的类别为4
只要数据对应的列名符合就为1,不符合的都为0