机器学习基础之特征工程

本文详细介绍了特征工程在机器学习中的重要性,包括特征抽取、处理和选择的步骤。特征抽取涉及字典和文本特征,如使用DictVectorizer和CountVectorizer进行数据转换。TF-IDF用于衡量词的重要性。特征处理涵盖归一化、标准化和处理缺失值。最后,介绍了Filter方法VarianceThreshold进行特征选择,并探讨了降维技术如PCA。
摘要由CSDN通过智能技术生成

目录

特征工程的定义及意义

数据的特征抽取

字典特征抽取

文本特征抽取

TF-IDF(词的重要性)

数据的特征处理 

归一化

标准化

处理缺失值

特征选择

Filter(过滤式):VarianceThreshold

降维API


特征工程的定义及意义

特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性。特征工程的意义是直接影响模型的预测结果。

数据的特征抽取

字典特征抽取

对应的API,sklearn.feature_extraction.DictVectorizer

语法:

DictVectorizer(sparse=True,…)

DictVectorizer.fit_transform(X)       X:字典或者包含字典的迭代器 返回值:返回sparse矩阵

DictVectorizer.inverse_transform(X)         X:array数组或者sparse矩阵 返回值:转换之前数据格式

DictVectorizer.get_feature_names()         返回类别名称

DictVectorizer.transform(X)         按照原先的标准转换

案例:

#coding=utf8
from sklearn.feature_extraction import DictVectorizer
def dictvec():
    """
    字典数据抽取
    """
    # 实例化
    dict = DictVectorizer(sparse=False)
    #调用fit_transform
    data = dict.fit_transform([{'city': '北京','temperature':100},{'city': '上海','temperature':60},
{'city': '深圳','temperature':30}])
    print(dict.get_feature_names())

    # print(dict.inverse_transform(data))
    print(data)

    return None

if __name__ == "__main__":
    dictvec()

结果:

['city=上海', 'city=北京', 'city=深圳', 'temperature']
[[  0.   1.   0. 100.]
 [  1.   0.   0.  60.]
 [  0.   0.   1.  30.]]

文本特征抽取

作用:对文本数据进行特征值化

API:sklearn.feature_extraction.text.CountVectorizer

语法:

CountVectorizer(max_df=1.0,min_df=1,…) 返回词频矩阵

CountVectorizer.fit_transform(X,y)      

X:文本或者包含文本字符串的可迭代对象 返回值:返回sparse矩阵

CountVectorizer.inverse_transform(X)

X:array数组或者sparse矩阵 返回值:转换之前数据格式

CountVectorizer.get_feature_names()         返回值:单词列表

英文案例:

# coding=utf-8
# 对英文文本进行特征值化
from sklearn.feature_extraction.text import CountVectorizer

def cvet():
    """
    对英文文本进行特征值化
    :return:
    """
    count = CountVectorizer()
    data = count.fit_transform(["life is short is,i like python","life is too long,i dislike python"])
    print(count.get_feature_names())
    print(data.toarray())
if __name__=='__main__':
    cvet()

 结果:

['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
[[0 2 1 1 0 1 1 0]
 [1 1 1 0 1 1 0 1]]

中文案例:

from sklearn.feature_extraction.text import CountVectorizer
import jieba
def cutword():
    con1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天")
    con2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值