以下内容皆为原创,制作不易,请帅锅、镁铝点点赞赞和关注吧❥(^_^)
一.提问环节
机器学习是什么?
机器学习的流程?
没错,这就是第一关的重点,我们这关主要是搞特征工程。
二.特征工程
1.定义:
特征工程是使用专业的背景知识和技巧处理数据,使得特征在机器学习算法中发挥更好的作用的过程。(其实就是更高尚的处理数据,开玩笑的啊)
2.意义:
直接影响机器学习的效果。
3.与数据预处理的区别:
特征工程的过程中,专门用sklearn对特征进行处理。
而数据预处理,主要对原数据,进行数据清洗,异常值、缺失值处理。
4.特征工程的内容:
每个数据都有自己的特征,包括文本类型,每个字都有属于自己的特征。那么我们可以用sklearn去将它们转为数值,转化后的数值就是它们的特征。
三.特征提取
我们今天先讲特征提取,正所谓,慢活出细糠嘛。
1.将任意数据(如文本和图像)转化为机器学习的数字特征
特征提取分为三类 |
字典特征提取(特征离散化) |
文本特征提取 |
图像特征提取 |
这三类,当你遇到字典,那就字典特征提取。当你遇到文本类型数据,那就文本特征提取。遇到图像,那就图像特征提取。
2.特征提取API
sklearn.feature_exrtaction
四.字典特征提取
作用:对字典数据进行特征值化
内心独白:这些方法很好记,都是英语单词,vector向量、矢量。extraction提取。
sklearn.feature_extraction.DictVectorizer(sparse=True)
1.DictVectorizer.fit_transform(X)
X是字典或者包含字典的迭代器返回值,返回sparse矩阵(稀疏矩阵)
2.DictVectorizer.inverse_transform(X)
X是array数组或者sparse矩阵,返回值:转换之前数据格式
3.DictVectorizer.get_feature_names()
返回类别名称
应用:
我们对以下数据(字典类型的,因为这章节讲的就是字典特征提取)进行特征提取
这段代码是用于对字典数据进行特征提取,它会返回一个稀疏矩阵(记住这个,等下讲到)。每个特征都会对应一个向量。
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
data = [{'city':'北京','temperature':100}, {'city':'上海', 'temperature':60}, {'city':'深圳', 'temperature':30}]
# 1.实例化一个转换器类
transfer = DictVectorizer()
# 2.调用fit_transform()
data_new = transfer.fit_transform(data)
print("data_new\n", data_new)
解释时刻:
请问返回的为什么不是一个二维数组?
废话不多说,开始弄。
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
data = [{'city':'北京','temperature':100}, {'city':'上海', 'temperature':60}, {'city':'深圳', 'temperature':30}]
# 1.实例化一个转换器类
transfer = DictVectorizer(sparse=False)
# 2.调用fit_transform()
data_new = transfer.fit_transform(data)
print("data_new\n", data_new)
# 如果下面报错了,你就换最下面那个,可能是版本不同吧,方法名不一样
# print("特征名字\n", transfer.get_feature_names())
print("特征名字\n", transfer.get_feature_names_out())
五.总结
你看这两个的区别,左边是稀疏矩阵,右边是二维数组。稀疏矩阵的六个坐标(只会将非零值按位置表现出来),分别对应右边非零值的位置。
六.应用场景
(1)数据集中类别特征比较多
1.将数据集特征==》字典类型
2.DictVectorizer转换
(2)本身拿到的数据就是字典类型