• 第一节 特征工程和文本特征提取


    机器学习数据:csv文件
    可用数据集:
    UCI:收录了360个数据集,覆盖科学、生活、经济等领域,数据量几十万
    Kaggle:大数据竞赛平台,80万科学家,数据真实,数据量巨大
    scikit-learn:数据量小,方便学习
    数据结构:特征值(+目标值)
    特征工程:将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高对未知数据的预测准确性,将会直接影响预测结果

    # 字典特征抽取,将字典中一些类别数据分别进行转换成特征,即把类别特征转换成One-hot编码
    from sklearn.feature_extraction import DictVectorizer
    
    def dicrvec():
        # 实例化一个对象,sparse是否转换成sparse矩阵格式数据,false转换成二维数组
        dictv = DictVectorizer(sparse=False)
        
        # fit_transform对字典进行数据特征抽取
        data = dictv.fit_transform([{'city':'北京', 'temperature':'100'}, {'city':'上海', 'temperature':'70'}, {'city':'广州', 'temperature':'60'}])
        
        # get_feature_names返回类别的名称
        print(dictv.get_feature_names())
        
        # 将数据转换成原来的字典,但是类别已经被转化成数字
        print(dictv.inverse_transform(data))
        
        print(data)
    
    if __name__ =="__main__":
        dicrvec()
    # 文本特征抽取:对文本数据进行特征值化
    from sklearn.feature_extraction.text import CountVectorizer
    
    def countvec():
        cv = CountVectorizer()
    
        # fit_transform首先统计文章中不重复的单词['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too'],单个字母不统计,因为单个字母不体现分类的依据
        # 然后统计上面列表中的单词在每一篇文章中出现的次数[0 1 1 1 0 1 1 0],[1 1 1 0 1 1 0 1]
        # 如果是中文的话,要先进行分词,需安装第三方库如,jieba
        data = cv.fit_transform(['life is short, i like python python', 'life is too long,i dislike python'])
    
        print(cv.get_feature_names())
    
        # CountVectorizer中没有sparse=false这个参数,只能用toarray将sparse矩阵转换成数组
        print(data.toarray())
    
    if __name__ == "__main__":
        countvec()
    # TF-IDF:TF词的频率,IDF逆文档频率log(总文档数量/该次出现的文档数),如果某个词或者短语在一篇文章中出现的概率高,并且在其他文章中很少出现则认为此词具有很好的类别区分能力,适合用来分类
    # TF-IDF用来评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度,结果但会浮点数,越大越重要 == TF*IDF
    from sklearn.feature_extraction.text import TfidfVectorizer
    
    def tfidtvec():
        tf = TfidfVectorizer()
    
        data = tf.fit_transform(['life is short, i like python python', 'life is too long,i dislike python'])
    
        print(tf.get_feature_names())
    
        # TfidfVectorizer中没有sparse=false这个参数,只能用toarray将sparse矩阵转换成数组
        print(data.toarray())
    
    if __name__ == "__main__":
        tfidtvec()
  • 相关阅读:
    jQuery实现DropDownList(MVC)
    解决MVC应用程序数据重复加载问题
    MVC应用程序使用jQuery接收Url的参数
    openstack上创建vm实例后,状态为ERROR问题解决
    分布式监控系统Zabbix--完整安装记录-批量添加主机和自动发现端口
    LInux下设置账号有效时间 以及 修改用户名(同时修改用户组名和家目录)
    Rsync+Inotify实时同步环境部署记录
    Shell+Curl监控网站页面访问状态,利用SendEmail发邮件通知
    Shell脚本字符串匹配及日常命令工具
    分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12565796.html
Copyright © 2020-2023  润新知