4.3特征工程
特征工程:找的与问题有关的任何信息,转换为矩阵数值。
常见特征:分类特征,文本特征,图像特征等。
图像特征就是将图像转换为像素编码方式。
缺失值填充:在Pandas中介绍很多缺失值处理方法,比如均值;
实例1:分类特征
def skLearn8():
'''
特征工程
:return:
'''
#分类特征
data = [
{'price':1000,'rooms':1,'type':'crowd'},
{'price':3400,'rooms':3,'type':'standard'},
{'price':4000,'rooms':5,'type':'wide'}
]
#将type编码
dict1 = {'crowd':0,'standard':1,'wide':2}
#这种编码会导致误会,type之间有数量大小关系。
#scikit learn提供一种编码方式,独热编码
from sklearn.feature_extraction import DictVectorizer
#sparse:是否稀疏矩阵
dictVec =DictVectorizer(sparse=False,dtype=int)
Xdata = dictVec.fit_transform(data)
print(Xdata)
#查看编码后特征名称
print(dictVec.get_feature_names_out())
实例2:文本特征,最主要就是将文本中单词统计,统计每个单词在文本中出现次数。
def skLearn9():
'''
文本特征
:return:
'''
data_text = ['profit','people','he','she','where','name','people','he','where','she']
#统计词频
from sklearn.feature_extraction.text import CountVectorizer
countVec = CountVectorizer()
Xtext = countVec.fit_transform(data_text)
print(Xtext)
#对应稀疏矩阵
Xpd = pd.DataFrame(Xtext.toarray(),columns=countVec.get_feature_names_out())
print(Xpd)
#排除常用词在文本中占太大比重,可以使用TF-IDF方法,
# 将词转换为一个比值,词语的常见程度越高,比值越低
from sklearn.feature_extraction.text import TfidfVectorizer
TfidVec =TfidfVectorizer()
Xtext1 = TfidVec.fit_transform(data_text)
Xpd1 = pd.DataFrame(Xtext1.toarray(),columns=TfidVec.get_feature_names_out())
print(Xpd1)