「作者主頁」:士別三日wyx
「作者簡介」:CSDN top100、阿里云博客專家、華為云享專家、網絡安全領域優(yōu)質創(chuàng)作者
「推薦專欄」:對網絡安全感興趣的小伙伴可以關注專欄《網絡安全入門到精通》
特征工程就是從「原始數據」中提取「特征」,以供「算法」和「模型」使用。
簡單來說就是將任意數據(比如文本和圖像)轉換為可用于機器學習的數字特征。
一、特征提取API
sklearn.feature_extraction 是用來提取特征的 API 。
sklearn.feature_extraction.DictVectorizer(sparse=True)
- DictVectorizer.fit_transform( data ):接收字典類型的原始數據,返回提取的數字特征(sparse矩陣)
- DictVectorizer.inverse_transform( data ):將提取的數字特征,轉回原始數據。
- DictVectorizer.get_feature_names_out():返回特征名字
一、提取數字特征
我們準備一個字典類型的數據,然后「提取」數字特征。
from sklearn import feature_extraction
# 原始數據(字典)
old_data = [
{'name': "張三", 'age': 18},
{'name': "李四", 'age': 20}]
# 初始化
vector = feature_extraction.DictVectorizer(sparse=False)
# 轉換數據
new_data = vector.fit_transform(old_data)
print(new_data)
輸出:
[[18. 1. 0.]
[20. 0. 1.]]
二、特征名字
如果想知道提取的數字特征是什么意思,可以用 get_feature_names_out() 獲取「特征名字」,也就是特征和原始數據的對應關系。
from sklearn import feature_extraction
# 原始數據(字典)
old_data = [
{'name': "張三", 'age': 18},
{'name': "李四", 'age': 20},
{'name': "王五", 'age': 22}]
# 初始化
vector = feature_extraction.DictVectorizer(sparse=False)
# 轉換數據
new_data = vector.fit_transform(old_data)
print(new_data)
# 特征名字
print(vector.get_feature_names_out())
輸出:
[[18. 1. 0. 0.]
[20. 0. 1. 0.]
[22. 0. 0. 1.]]
['age' 'name=張三' 'name=李四' 'name=王五']
接下來,解釋一下提取的數字特征是什么意思。提取的數字特征是個二維數組,里面包含了三個數組。
一個數組即一行,代表一個樣本;而一列,就代表一個特征。比如上面這個特征:
每個數組的第一列是age特征,age本來就是數字,所以就沒必要轉換了;
第二列是張三特征,用0和1表示,1表示name是張三,0表示name不是張三;
第三列是李四特征,1表示name是李四,0表示name不是李四;
第四列十王五特征,1表示name是王五,0表示name不是王五。
如果沒看懂,可以自己修改原始數據,然后查看輸出的結果。
這個提取的數字特征數組,其位置和特征類型有關,比如這里有 age、張三、李四、王五 四種特征類型,那么數字特征數組就有4個位置。如果特征類型有五種,那么數字特征數組就會變成5個位置,以此類推。這種提取方式也叫 one-hot編碼,
三、返回原始數據
將提取的數字特征,轉換會原始數據,可以使用 inverse_transform()。文章來源:http://www.zghlxwxcb.cn/news/detail-510603.html
from sklearn import feature_extraction
# 原始數據(字典)
old_data = [
{'name': "張三", 'age': 18},
{'name': "李四", 'age': 20},
{'name': "王五", 'age': 22}]
# 初始化
vector = feature_extraction.DictVectorizer(sparse=False)
# 轉換數據
new_data = vector.fit_transform(old_data)
print(new_data)
# 轉回原始數據
print(vector.inverse_transform(new_data))
輸出:文章來源地址http://www.zghlxwxcb.cn/news/detail-510603.html
[[18. 1. 0. 0.]
[20. 0. 1. 0.]
[22. 0. 0. 1.]]
[{'age': 18.0, 'name=張三': 1.0}, {'age': 20.0, 'name=李四': 1.0}, {'age': 22.0, 'name=王五': 1.0}]
到了這里,關于【機器學習】特征工程 - 字典特征提取的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!