持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
总计:今天是十月更文计划第二十二天,第四十三篇
特征工程
今天继续特征工程的学习
特征工程就类似就数据预处理,由数据清洗过程中,将用户的数据导入,然后进行数据预处理,特征工程,机器学习,模型评估。
在特征工程的学习工程中,主要是学习sklearn方法:
def dictvec():
"""
字典数据抽取
:return: None
"""
# 实例化
# sparse改为True,输出的是每个不为零位置的坐标,稀疏矩阵可以节省存储空间
#矩阵中存在大量的0,sparse存储只记录非零位置,节省空间的作用
dict = DictVectorizer(sparse=False) # 把sparse改为True看看
#每个样本都是一个字典,有三个样本
# 调用fit_transform
data = dict.fit_transform([{'city': '北京', 'temperature': 100},
{'city': '上海', 'temperature': 60},
{'city': '深圳', 'temperature': 30}])
print(data)
print('-' * 50)
print(dict.get_feature_names_out()) # 字典中的一些类别数据,分别进行转换成特征
print('-' * 50)
print(dict.inverse_transform(data)) #去看每个特征代表的含义,逆转回去
return None
dictvec()
输出的结果如下:
DictVectorizer的左右就是把数据类型变为one-hot编码。
one-hot编码在应对分类特征的过程中,有些特征值是离散的,无序的,要对这种进行特征数字化
男 01
女 10
篮球 001
足球 010
乒乓球 100
那么这样子男子篮球编码就为:01001
女子乒乓球编码就为:10100
sparse=False
表示稀疏度
为True表稀疏:
data = dict.fit_transform
.fit_transform表示对输入的样本进行自动处理
def couvec():
# 实例化CountVectorizer
# max_df, min_df整数:指每个词的所有文档词频数不小于最小值,出现该词的文档数目小于等于max_df
# max_df, min_df小数:某个词的出现的次数/所有文档数量
# min_df=2
# 默认会去除单个字母的单词,默认认为这个词对整个样本没有影响
vector = CountVectorizer(min_df=2)
# 调用fit_transform输入并转换数据
res = vector.fit_transform(
["life is short,i like python life",
"life is too long,i dislike python",
"life is short"])
# 打印结果,把每个词都分离了
print(vector.get_feature_names())
print('-'*50)
print(res)
print('-'*50)
print(type(res))
# 对照feature_names,标记每个词出现的次数
print('-'*50)
print(res.toarray())
print('-'*50)
#拿每个样本里的特征进行显示
print(vector.inverse_transform(res))
输出结果如下:
vector = CountVectorizer(min_df=1)
在代码中较为重要,表示
max_df, min_df整数:指每个词的所有文档词频数不小于最小值,出现该词的文档数目小于等于max_df
max_df, min_df小数:某个词的出现的次数/所有文档数量
来进行切割划分,如果min_df=1表示输出的结果为: