特征工程将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性。文章源码,仅供学习

1、字典特征提取

  • 作用:对字典数据进行特征值化
  • 类: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)

    • 按照原先的标准转换

流程:

  1. 实例化类DictVectorizer
  2. 调用fit_transform方法输入数据并转换 注意返回格式 对于类别型的数据先转换成字典,然后进行特征的抽取
# 字典特征抽取
from sklearn.feature_extraction import DictVectorizer# 1、准备数据
data = [{"city": "北京", "temperture": 30},{"city": "上海", "temperture": 60},{"city": "广州", "temperture": 20},{"city": "深圳", "temperture": 100}
]
# 2、实例化 DictVectorizer
dict_v = DictVectorizer(sparse=False)  # 不采用稀疏矩阵
# 3、调用fit_transform输入并转换数据
_data = dict_v.fit_transform(data)print(_data)  # 字典数据特征值化的结果
print(dict_v.get_feature_names())  # 返回类别名称
print(dict_v.inverse_transform(_data))  # 返回之前的数据格式结果显示:
[[  0.   1.   0.   0.  30.][  1.   0.   0.   0.  60.][  0.   0.   1.   0.  20.][  0.   0.   0.   1. 100.]]
['city=上海', 'city=北京', 'city=广州', 'city=深圳', 'temperture']
[{'temperture': 30.0, 'city=北京': 1.0}, {'city=上海': 1.0, 'temperture': 60.0}, {'city=广州': 1.0, 'temperture': 20.0}, {'city=深圳': 1.0, 'temperture': 100.0}]

2、文本特征抽取

  • 作用:对文本数据进行特征值化
  • 类:sklearn.feature_extraction.text.CountVectorizer

CountVectorizer语法

  • CountVectorizer(max_df=1.0,min_df=1,…)

    • max_df,min_df整数:指每个词的所有文档词频数不小于最小值,每个文档中每个词的词频不超过此文档的最大值
    • max_df,min_df小数:每个词的次数/所有文档数量
    • 返回词频矩阵
  • CountVectorizer.fit_transform(X)
    • X:文本或者包含文本字符串的可迭代对象
    • 返回值:返回sparse矩阵
  • CountVectorizer.inverse_transform(X)
    • X:array数组或者sparse矩阵
    • 返回值:转换之前数据格式
  • CountVectorizer.get_feature_names()
    • 返回值:单词列表

流程:

  1. 实例化类CountVectorizer
  2. 调用fit_transform方法输入数据并转换 注意返回格式,利用toarray()进行sparse矩阵转换array数组
# 文本特征抽取
from sklearn.feature_extraction.text import CountVectorizerdata = ["人生 苦短,我爱 python", "人生 漫漫,不用 python"]cv = CountVectorizer()
_data = cv.fit_transform(data)print(_data)
print(_data.toarray())  # sparse矩阵转换为array数组
print(cv.get_feature_names())结果显示:(0, 0) 1(0, 3) 1(0, 5) 1(0, 2) 1(1, 1) 1(1, 4) 1(1, 0) 1(1, 2) 1
[[1 0 1 1 0 1][1 1 1 0 1 0]]
['python', '不用', '人生', '我爱', '漫漫', '苦短']

结巴分词是一个非常好用的中文分词工具,这里不详细说明,网上资料很多。官网链接

# 结巴分词
import jiebatext = "沙瑞金赞叹易学习的胸怀,是金山的百姓有福,可是这件事对李达康的触动很大。易学习又回忆起他们三人分开的前一晚,大家一起喝酒话别,易学习被降职到道口县当县长,王大路下海经商,李达康连连赔礼道歉,觉得对不起大家,他最对不起的是王大路,就和易学习一起给王大路凑了5万块钱,王大路自己东挪西撮了5万块,开始下海经商。没想到后来王大路竟然做得风生水起。沙瑞金觉得他们三人,在困难时期还能以沫相助,很不容易。"cut_generator = jieba.cut(text)  # 返回一个生成器
# [i for i in cut_generator]result = " ".join(cut_generator)  # 将序列中的元素以指定的字符连接生成一个新的字符串
print(result)
print(result.split())  # 转换成列表
with open("./result.txt", "w") as f:f.write(result)返回结果:
沙 瑞金 赞叹 易 学习 的 胸怀 , 是 金山 的 百姓 有福 , 可是 这件 事对 李达康 的 触动 很大 。 易 学习 又 回忆起 他们 三人 分开 的 前一晚 , 大家 一起 喝酒 话别 , 易 学习 被 降职 到 道口 县当 县长 , 王 大路 下海经商 , 李达康 连连 赔礼道歉 , 觉得 对不起 大家 , 他 最 对不起 的 是 王 大路 , 就 和 易 学习 一起 给 王 大路 凑 了 5 万块 钱 , 王 大路 自己 东挪西撮 了 5 万块 , 开始 下海经商 。 没想到 后来 王 大路 竟然 做 得 风生水 起 。 沙 瑞金 觉得 他们 三人 , 在 困难 时期 还 能 以沫 相助 , 很 不 容易 。
['沙', '瑞金', '赞叹', '易', '学习', '的', '胸怀', ',', '是', '金山', '的', '百姓', '有福', ',', '可是', '这件', '事对', '李达康', '的', '触动', '很大', '。', '易', '学习', '又', '回忆起', '他们', '三人', '分开', '的', '前一晚', ',', '大家', '一起', '喝酒', '话别', ',', '易', '学习', '被', '降职', '到', '道口', '县当', '县长', ',', '王', '大路', '下海经商', ',', '李达康', '连连', '赔礼道歉', ',', '觉得', '对不起', '大家', ',', '他', '最', '对不起', '的', '是', '王', '大路', ',', '就', '和', '易', '学习', '一起', '给', '王', '大路', '凑', '了', '5', '万块', '钱', ',', '王', '大路', '自己', '东挪西撮', '了', '5', '万块', ',', '开始', '下海经商', '。', '没想到', '后来', '王', '大路', '竟然', '做', '得', '风生水', '起', '。', '沙', '瑞金', '觉得', '他们', '三人', ',', '在', '困难', '时期', '还', '能', '以沫', '相助', ',', '很', '不', '容易', '。']

可以看出:结巴分词对一些人名地名处理的并不好,可以手动添加词汇

# 对一些人名地名结巴分词处理的不好,我们可以人为的给结巴分词器加入词汇
import jiebatext = "沙瑞金赞叹易学习的胸怀,是金山的百姓有福,可是这件事对李达康的触动很大。易学习又回忆起他们三人分开的前一晚,大家一起喝酒话别,易学习被降职到道口县当县长,王大路下海经商,李达康连连赔礼道歉,觉得对不起大家,他最对不起的是王大路,就和易学习一起给王大路凑了5万块钱,王大路自己东挪西撮了5万块,开始下海经商。没想到后来王大路竟然做得风生水起。沙瑞金觉得他们三人,在困难时期还能以沫相助,很不容易。"jieba.suggest_freq('沙瑞金', True)
jieba.suggest_freq('易学习', True)
jieba.suggest_freq('王大路', True)
jieba.suggest_freq('京州', True)cut_generator = jieba.cut(text)  # 返回一个生成器result = " ".join(cut_generator)  # 将序列中的元素以指定的字符连接生成一个新的字符串
print(result)返回结果:
沙瑞金 赞叹 易学习 的 胸怀 , 是 金山 的 百姓 有福 , 可是 这件 事对 李达康 的 触动 很大 。 易学习 又 回忆起 他们 三人 分开 的 前一晚 , 大家 一起 喝酒 话别 , 易学习 被 降职 到 道口 县当 县长 , 王大路 下海经商 , 李达康 连连 赔礼道歉 , 觉得 对不起 大家 , 他 最 对不起 的 是 王大路 , 就 和 易学习 一起 给 王大路 凑 了 5 万块 钱 , 王大路 自己 东挪西撮 了 5 万块 , 开始 下海经商 。 没想到 后来 王大路 竟然 做 得 风生水 起 。 沙瑞金 觉得 他们 三人 , 在 困难 时期 还 能 以沫 相助 , 很 不 容易 。

同样的方法,处理第二段文本内容

# 同样,对第二段文本进行分词
import jiebatext = "沙瑞金向毛娅打听他们家在京州的别墅,毛娅笑着说,王大路事业有成之后,要给欧阳菁和她公司的股权,她们没有要,王大路就在京州帝豪园买了三套别墅,可是李达康和易学习都不要,这些房子都在王大路的名下,欧阳菁好像去住过,毛娅不想去,她觉得房子太大很浪费,自己家住得就很踏实。"cut_generator = jieba.cut(text)
result = " ".join(cut_generator)
print(result)with open("./result2.txt", "w") as f:f.write(result)返回结果:
沙瑞金 向 毛娅 打听 他们 家 在 京州 的 别墅 , 毛娅 笑 着 说 , 王大路 事业有成 之后 , 要 给 欧阳 菁 和 她 公司 的 股权 , 她们 没有 要 , 王大路 就 在 京州 帝豪园 买 了 三套 别墅 , 可是 李达康 和 易学习 都 不要 , 这些 房子 都 在 王大路 的 名下 , 欧阳 菁 好像 去 住 过 , 毛娅 不想 去 , 她 觉得 房子 太大 很 浪费 , 自己 家住 得 就 很 踏实 。

对一些停用词需要剔除,可用的停用词表很多,这里给大家推荐几个,GitHub连接

# 使用停用词
with open("./stopwords-master/百度停用词表.txt", "rb") as f:stop_words = f.read().decode("utf-8")# print(stop_words)
print(stop_words.splitlines())返回结果:
['--', '?', '“', '”', '》', '--', 'able', 'about', 'above', 'according', 'accordingly', 'across', 'actually', 'after', 'afterwards', 'again', 'against', "ain't", 'all', 'allow', 'allows', 'almost', 'alone', 'along', 'already', 'also', 'although', 'always', 'am', 'among', 'amongst', 'an', 'and', 'another', 'any', 'anybody', 'anyhow', 'anyone', 'anything', 'anyway', 'anyways', 'anywhere', 'apart', 'appear', 'appreciate', 'appropriate', 'are', "aren't", 'around', 'as', "a's", 'aside', 'ask', 'asking', 'associated', 'at', 'available', 'away', 'awfully', 'be', 'became', 'because', 'become', 'becomes', 'becoming', 'been', 'before', 'beforehand', 'behind', 'being', 'believe', 'below', 'beside', 'besides', 'best', 'better', 'between', 'beyond', 'both', 'brief', 'but', 'by', 'came', 'can', 'cannot', 'cant', "can't", 'cause', 'causes', 'certain', 'certainly', 'changes', 'clearly', "c'mon", 'co', 'com', 'come', 'comes', 'concerning', 'consequently', 'consider', 'considering', 'contain', 'containing', 'contains', 'corresponding', 'could', "couldn't", 'course', "c's", 'currently', 'definitely', 'described', 'despite', 'did', "didn't", 'different', 'do', 'does', "doesn't", 'doing', 'done', "don't", 'down', 'downwards', 'during', 'each', 'edu', 'eg', 'eight', 'either', 'else', 'elsewhere', 'enough', 'entirely', 'especially', 'et', 'etc', 'even', 'ever', 'every', 'everybody', 'everyone', 'everything', 'everywhere', 'ex', 'exactly', 'example', 'except', 'far', 'few', 'fifth', 'first', 'five', 'followed', 'following', 'follows', 'for', 'former', 'formerly', 'forth', 'four', 'from', 'further', 'furthermore', 'get', 'gets', 'getting', 'given', 'gives', 'go', 'goes', 'going', 'gone', 'got', 'gotten', 'greetings', 'had', "hadn't", 'happens', 'hardly', 'has', "hasn't", 'have', "haven't", 'having', 'he', 'hello', 'help', 'hence', 'her', 'here', 'hereafter', 'hereby', 'herein', "here's", 'hereupon', 'hers', 'herself', "he's", 'hi', 'him', 'himself', 'his', 'hither', 'hopefully', 'how', 'howbeit', 'however', "i'd", 'ie', 'if', 'ignored', "i'll", "i'm", 'immediate', 'in', 'inasmuch', 'inc', 'indeed', 'indicate', 'indicated', 'indicates', 'inner', 'insofar', 'instead', 'into', 'inward', 'is', "isn't", 'it', "it'd", "it'll", 'its', "it's", 'itself', "i've", 'just', 'keep', 'keeps', 'kept', 'know', 'known', 'knows', 'last', 'lately', 'later', 'latter', 'latterly', 'least', 'less', 'lest', 'let', "let's", 'like', 'liked', 'likely', 'little', 'look', 'looking', 'looks', 'ltd', 'mainly', 'many', 'may', 'maybe', 'me', 'mean', 'meanwhile', 'merely', 'might', 'more', 'moreover', 'most', 'mostly', 'much', 'must', 'my', 'myself', 'name', 'namely', 'nd', 'near', 'nearly', 'necessary', 'need', 'needs', 'neither', 'never', 'nevertheless', 'new', 'next', 'nine', 'no', 'nobody', 'non', 'none', 'noone', 'nor', 'normally', 'not', 'nothing', 'novel', 'now', 'nowhere', 'obviously', 'of', 'off', 'often', 'oh', 'ok', 'okay', 'old', 'on', 'once', 'one', 'ones', 'only', 'onto', 'or', 'other', 'others', 'otherwise', 'ought', 'our', 'ours', 'ourselves', 'out', 'outside', 'over', 'overall', 'own', 'particular', 'particularly', 'per', 'perhaps', 'placed', 'please', 'plus', 'possible', 'presumably', 'probably', 'provides', 'que', 'quite', 'qv', 'rather', 'rd', 're', 'really', 'reasonably', 'regarding', 'regardless', 'regards', 'relatively', 'respectively', 'right', 'said', 'same', 'saw', 'say', 'saying', 'says', 'second', 'secondly', 'see', 'seeing', 'seem', 'seemed', 'seeming', 'seems', 'seen', 'self', 'selves', 'sensible', 'sent', 'serious', 'seriously', 'seven', 'several', 'shall', 'she', 'should', "shouldn't", 'since', 'six', 'so', 'some', 'somebody', 'somehow', 'someone', 'something', 'sometime', 'sometimes', 'somewhat', 'somewhere', 'soon', 'sorry', 'specified', 'specify', 'specifying', 'still', 'sub', 'such', 'sup', 'sure', 'take', 'taken', 'tell', 'tends', 'th', 'than', 'thank', 'thanks', 'thanx', 'that', 'thats', "that's", 'the', 'their', 'theirs', 'them', 'themselves', 'then', 'thence', 'there', 'thereafter', 'thereby', 'therefore', 'therein', 'theres', "there's", 'thereupon', 'these', 'they', "they'd", "they'll", "they're", "they've", 'think', 'third', 'this', 'thorough', 'thoroughly', 'those', 'though', 'three', 'through', 'throughout', 'thru', 'thus', 'to', 'together', 'too', 'took', 'toward', 'towards', 'tried', 'tries', 'truly', 'try', 'trying', "t's", 'twice', 'two', 'un', 'under', 'unfortunately', 'unless', 'unlikely', 'until', 'unto', 'up', 'upon', 'us', 'use', 'used', 'useful', 'uses', 'using', 'usually', 'value', 'various', 'very', 'via', 'viz', 'vs', 'want', 'wants', 'was', "wasn't", 'way', 'we', "we'd", 'welcome', 'well', "we'll", 'went', 'were', "we're", "weren't", "we've", 'what', 'whatever', "what's", 'when', 'whence', 'whenever', 'where', 'whereafter', 'whereas', 'whereby', 'wherein', "where's", 'whereupon', 'wherever', 'whether', 'which', 'while', 'whither', 'who', 'whoever', 'whole', 'whom', "who's", 'whose', 'why', 'will', 'willing', 'wish', 'with', 'within', 'without', 'wonder', "won't", 'would', "wouldn't", 'yes', 'yet', 'you', "you'd", "you'll", 'your', "you're", 'yours', 'yourself', 'yourselves', "you've", 'zero', 'zt', 'ZT', 'zz', 'ZZ', '一', '一下', '一些', '一切', '一则', '一天', '一定', '一方面', '一旦', '一时', '一来', '一样', '一次', '一片', '一直', '一致', '一般', '一起', '一边', '一面', '万一', '上下', '上升', '上去', '上来', '上述', '上面', '下列', '下去', '下来', '下面', '不一', '不久', '不仅', '不会', '不但', '不光', '不单', '不变', '不只', '不可', '不同', '不够', '不如', '不得', '不怕', '不惟', '不成', '不拘', '不敢', '不断', '不是', '不比', '不然', '不特', '不独', '不管', '不能', '不要', '不论', '不足', '不过', '不问', '与', '与其', '与否', '与此同时', '专门', '且', '两者', '严格', '严重', '个', '个人', '个别', '中小', '中间', '丰富', '临', '为', '为主', '为了', '为什么', '为什麽', '为何', '为着', '主张', '主要', '举行', '乃', '乃至', '么', '之', '之一', '之前', '之后', '之後', '之所以', '之类', '乌乎', '乎', '乘', '也', '也好', '也是', '也罢', '了', '了解', '争取', '于', '于是', '于是乎', '云云', '互相', '产生', '人们', '人家', '什么', '什么样', '什麽', '今后', '今天', '今年', '今後', '仍然', '从', '从事', '从而', '他', '他人', '他们', '他的', '代替', '以', '以上', '以下', '以为', '以便', '以免', '以前', '以及', '以后', '以外', '以後', '以来', '以至', '以至于', '以致', '们', '任', '任何', '任凭', '任务', '企图', '伟大', '似乎', '似的', '但', '但是', '何', '何况', '何处', '何时', '作为', '你', '你们', '你的', '使得', '使用', '例如', '依', '依照', '依靠', '促进', '保持', '俺', '俺们', '倘', '倘使', '倘或', '倘然', '倘若', '假使', '假如', '假若', '做到', '像', '允许', '充分', '先后', '先後', '先生', '全部', '全面', '兮', '共同', '关于', '其', '其一', '其中', '其二', '其他', '其余', '其它', '其实', '其次', '具体', '具体地说', '具体说来', '具有', '再者', '再说', '冒', '冲', '决定', '况且', '准备', '几', '几乎', '几时', '凭', '凭借', '出去', '出来', '出现', '分别', '则', '别', '别的', '别说', '到', '前后', '前者', '前进', '前面', '加之', '加以', '加入', '加强', '十分', '即', '即令', '即使', '即便', '即或', '即若', '却不', '原来', '又', '及', '及其', '及时', '及至', '双方', '反之', '反应', '反映', '反过来', '反过来说', '取得', '受到', '变成', '另', '另一方面', '另外', '只是', '只有', '只要', '只限', '叫', '叫做', '召开', '叮咚', '可', '可以', '可是', '可能', '可见', '各', '各个', '各人', '各位', '各地', '各种', '各级', '各自', '合理', '同', '同一', '同时', '同样', '后来', '后面', '向', '向着', '吓', '吗', '否则', '吧', '吧哒', '吱', '呀', '呃', '呕', '呗', '呜', '呜呼', '呢', '周围', '呵', '呸', '呼哧', '咋', '和', '咚', '咦', '咱', '咱们', '咳', '哇', '哈', '哈哈', '哉', '哎', '哎呀', '哎哟', '哗', '哟', '哦', '哩', '哪', '哪个', '哪些', '哪儿', '哪天', '哪年', '哪怕', '哪样', '哪边', '哪里', '哼', '哼唷', '唉', '啊', '啐', '啥', '啦', '啪达', '喂', '喏', '喔唷', '嗡嗡', '嗬', '嗯', '嗳', '嘎', '嘎登', '嘘', '嘛', '嘻', '嘿', '因', '因为', '因此', '因而', '固然', '在', '在下', '地', '坚决', '坚持', '基本', '处理', '复杂', '多', '多少', '多数', '多次', '大力', '大多数', '大大', '大家', '大批', '大约', '大量', '失去', '她', '她们', '她的', '好的', '好象', '如', '如上所述', '如下', '如何', '如其', '如果', '如此', '如若', '存在', '宁', '宁可', '宁愿', '宁肯', '它', '它们', '它们的', '它的', '安全', '完全', '完成', '实现', '实际', '宣布', '容易', '密切', '对', '对于', '对应', '将', '少数', '尔后', '尚且', '尤其', '就', '就是', '就是说', '尽', '尽管', '属于', '岂但', '左右', '巨大', '巩固', '己', '已经', '帮助', '常常', '并', '并不', '并不是', '并且', '并没有', '广大', '广泛', '应当', '应用', '应该', '开外', '开始', '开展', '引起', '强烈', '强调', '归', '当', '当前', '当时', '当然', '当着', '形成', '彻底', '彼', '彼此', '往', '往往', '待', '後来', '後面', '得', '得出', '得到', '心里', '必然', '必要', '必须', '怎', '怎么', '怎么办', '怎么样', '怎样', '怎麽', '总之', '总是', '总的来看', '总的来说', '总的说来', '总结', '总而言之', '恰恰相反', '您', '意思', '愿意', '慢说', '成为', '我', '我们', '我的', '或', '或是', '或者', '战斗', '所', '所以', '所有', '所谓', '打', '扩大', '把', '抑或', '拿', '按', '按照', '换句话说', '换言之', '据', '掌握', '接着', '接著', '故', '故此', '整个', '方便', '方面', '旁人', '无宁', '无法', '无论', '既', '既是', '既然', '时候', '明显', '明确', '是', '是否', '是的', '显然', '显著', '普通', '普遍', '更加', '曾经', '替', '最后', '最大', '最好', '最後', '最近', '最高', '有', '有些', '有关', '有利', '有力', '有所', '有效', '有时', '有点', '有的', '有着', '有著', '望', '朝', '朝着', '本', '本着', '来', '来着', '极了', '构成', '果然', '果真', '某', '某个', '某些', '根据', '根本', '欢迎', '正在', '正如', '正常', '此', '此外', '此时', '此间', '毋宁', '每', '每个', '每天', '每年', '每当', '比', '比如', '比方', '比较', '毫不', '没有', '沿', '沿着', '注意', '深入', '清楚', '满足', '漫说', '焉', '然则', '然后', '然後', '然而', '照', '照着', '特别是', '特殊', '特点', '现代', '现在', '甚么', '甚而', '甚至', '用', '由', '由于', '由此可见', '的', '的话', '目前', '直到', '直接', '相似', '相信', '相反', '相同', '相对', '相对而言', '相应', '相当', '相等', '省得', '看出', '看到', '看来', '看看', '看见', '真是', '真正', '着', '着呢', '矣', '知道', '确定', '离', '积极', '移动', '突出', '突然', '立即', '第', '等', '等等', '管', '紧接着', '纵', '纵令', '纵使', '纵然', '练习', '组成', '经', '经常', '经过', '结合', '结果', '给', '绝对', '继续', '继而', '维持', '综上所述', '罢了', '考虑', '者', '而', '而且', '而况', '而外', '而已', '而是', '而言', '联系', '能', '能否', '能够', '腾', '自', '自个儿', '自从', '自各儿', '自家', '自己', '自身', '至', '至于', '良好', '若', '若是', '若非', '范围', '莫若', '获得', '虽', '虽则', '虽然', '虽说', '行为', '行动', '表明', '表示', '被', '要', '要不', '要不是', '要不然', '要么', '要是', '要求', '规定', '觉得', '认为', '认真', '认识', '让', '许多', '论', '设使', '设若', '该', '说明', '诸位', '谁', '谁知', '赶', '起', '起来', '起见', '趁', '趁着', '越是', '跟', '转动', '转变', '转贴', '较', '较之', '边', '达到', '迅速', '过', '过去', '过来', '运用', '还是', '还有', '这', '这个', '这么', '这么些', '这么样', '这么点儿', '这些', '这会儿', '这儿', '这就是说', '这时', '这样', '这点', '这种', '这边', '这里', '这麽', '进入', '进步', '进而', '进行', '连', '连同', '适应', '适当', '适用', '逐步', '逐渐', '通常', '通过', '造成', '遇到', '遭到', '避免', '那', '那个', '那么', '那么些', '那么样', '那些', '那会儿', '那儿', '那时', '那样', '那边', '那里', '那麽', '部分', '鄙人', '采取', '里面', '重大', '重新', '重要', '鉴于', '问题', '防止', '阿', '附近', '限制', '除', '除了', '除此之外', '除非', '随', '随着', '随著', '集中', '需要', '非但', '非常', '非徒', '靠', '顺', '顺着', '首先', '高兴', '是不是', '说说', ' ']

下面对这些使用结巴分词后的文本数据进行特征工程:

# 中文特征值化(使用停用词)
from sklearn.feature_extraction.text import CountVectorizerwith open("./result.txt", "rb") as f:data1 = f.read().decode("GBK")with open("./result2.txt", "rb") as f:data2 = f.read().decode("GBK")with open("./stopwords-master/百度停用词表.txt", "rb") as f:stop_words = f.read().decode("utf-8")stop_words = stop_words.split()
cv = CountVectorizer(stop_words=stop_words)data = [data1, data2]_data = cv.fit_transform(data)
print("中文特征值化:\n", _data.toarray()[:5])
print("特征名称:\n", cv.get_feature_names())
print("特征长度:\n", len(cv.get_feature_names()))返回结果:
中文特征值化:[[2 2 0 2 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 5 0 0 4 0 2 0 1 0 0 1 0 1 2 0 00 1 0 0 2 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1][0 0 1 0 1 0 1 0 2 0 1 0 2 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 2 1 0 1 0 1 2 31 0 1 3 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0]]
特征名称:['万块', '三人', '三套', '下海经商', '不想', '东挪西撮', '事业有成', '事对', '京州', '以沫', '公司', '分开', '别墅', '前一晚', '县当', '县长', '名下', '喝酒', '回忆起', '困难', '大路', '太大', '好像', '学习', '家住', '对不起', '帝豪园', '很大', '房子', '打听', '时期', '易学习', '有福', '李达康', '欧阳', '毛娅', '沙瑞金', '没想到', '浪费', '王大路', '瑞金', '百姓', '相助', '竟然', '股权', '胸怀', '触动', '话别', '赔礼道歉', '赞叹', '踏实', '这件', '连连', '道口', '金山', '降职', '风生水']
特征长度:57
# 中文特征值化(不使用停用词)
from sklearn.feature_extraction.text import CountVectorizerwith open("./result.txt", "rb") as f:data1 = f.read().decode("GBK")with open("./result2.txt", "rb") as f:data2 = f.read().decode("GBK")cv = CountVectorizer()data = [data1, data2]_data = cv.fit_transform(data)
print("中文特征值化:\n", _data.toarray()[:5])
print("特征名称:\n", cv.get_feature_names())
print("特征长度:\n", len(cv.get_feature_names()))返回结果:
中文特征值化:[[2 2 2 0 2 0 0 1 0 0 1 0 2 1 0 1 0 1 1 1 1 0 1 1 1 1 2 5 0 0 0 4 0 1 2 01 1 0 0 1 0 1 2 0 0 0 1 0 0 0 2 1 1 1 0 1 1 2 1 1 1 1 0 0 1 1 1 1 1 1][0 0 0 1 0 1 1 0 1 1 0 2 1 0 1 0 2 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 10 0 2 1 0 1 0 1 2 3 1 0 1 1 3 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0]]
特征名称:['一起', '万块', '三人', '三套', '下海经商', '不想', '不要', '东挪西撮', '之后', '事业有成', '事对', '京州', '他们', '以沫', '公司', '分开', '别墅', '前一晚', '县当', '县长', '可是', '名下', '后来', '喝酒', '回忆起', '困难', '大家', '大路', '太大', '她们', '好像', '学习', '家住', '容易', '对不起', '帝豪园', '开始', '很大', '房子', '打听', '时期', '易学习', '有福', '李达康', '欧阳', '毛娅', '沙瑞金', '没想到', '没有', '浪费', '王大路', '瑞金', '百姓', '相助', '竟然', '股权', '胸怀', '自己', '觉得', '触动', '话别', '赔礼道歉', '赞叹', '踏实', '这些', '这件', '连连', '道口', '金山', '降职', '风生水']
特征长度:71

可见,使用停用词可以减少不必要的特征,也算是起到降维的作用了吧!

TF-IDF
TF-IDF的主要思想是:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

  • TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
  • 类:sklearn.feature_extraction.text.TfidfVectorizer

TfidfVectorizer语法

  • TfidfVectorizer(stop_words=None,…)

    • 返回词的权重矩阵
  • TfidfVectorizer.fit_transform(X)

    • X:文本或者包含文本字符串的可迭代对象
    • 返回值:返回sparse矩阵
  • TfidfVectorizer.inverse_transform(X)

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

    • 返回值:单词列表
# 使用TfidfVectorizer进行中文特征值化
from sklearn.feature_extraction.text import TfidfVectorizerwith open("./stopwords-master/百度停用词表.txt", "rb") as f:stop_words = f.read().decode("utf-8")with open("./result.txt", "rb") as f:data1 = f.read().decode("GBK")with open("./result2.txt", "rb") as f:data2 = f.read().decode("GBK")data = [data1, data2]
stop_words = stop_words.split()tf = TfidfVectorizer(stop_words=stop_words)_data = tf.fit_transform(data)print("中文特征值化:\n", _data.toarray())
print("特征名称:\n", tf.get_feature_names())
print("特征长度:\n", len(tf.get_feature_names()))返回结果:
中文特征值化:[[0.2096282  0.2096282  0.         0.2096282  0.         0.10481410.         0.1048141  0.         0.1048141  0.         0.10481410.         0.1048141  0.1048141  0.1048141  0.         0.10481410.1048141  0.1048141  0.52407051 0.         0.         0.41925640.         0.2096282  0.         0.1048141  0.         0.0.1048141  0.         0.1048141  0.14915219 0.         0.0.         0.1048141  0.         0.         0.2096282  0.10481410.1048141  0.1048141  0.         0.1048141  0.1048141  0.10481410.1048141  0.1048141  0.         0.1048141  0.1048141  0.10481410.1048141  0.1048141  0.1048141 ][0.         0.         0.14212485 0.         0.14212485 0.0.14212485 0.         0.28424969 0.         0.14212485 0.0.28424969 0.         0.         0.         0.14212485 0.0.         0.         0.         0.14212485 0.14212485 0.0.14212485 0.         0.14212485 0.         0.28424969 0.142124850.         0.14212485 0.         0.101123   0.28424969 0.426374540.14212485 0.         0.14212485 0.42637454 0.         0.0.         0.         0.14212485 0.         0.         0.0.         0.         0.14212485 0.         0.         0.0.         0.         0.        ]]
特征名称:['万块', '三人', '三套', '下海经商', '不想', '东挪西撮', '事业有成', '事对', '京州', '以沫', '公司', '分开', '别墅', '前一晚', '县当', '县长', '名下', '喝酒', '回忆起', '困难', '大路', '太大', '好像', '学习', '家住', '对不起', '帝豪园', '很大', '房子', '打听', '时期', '易学习', '有福', '李达康', '欧阳', '毛娅', '沙瑞金', '没想到', '浪费', '王大路', '瑞金', '百姓', '相助', '竟然', '股权', '胸怀', '触动', '话别', '赔礼道歉', '赞叹', '踏实', '这件', '连连', '道口', '金山', '降职', '风生水']
特征长度:57

显示两段文本内容中词语的权重

word_list = tf.get_feature_names()
weight_list = _data.toarray()#打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重
for i in range(len(weight_list)):  print("-------第",i,"段文本的词语tf-idf权重------") for j in range(len(word_list)):  print(word_list[j],weight_list[i][j]) 返回结果:
-------第 0 段文本的词语tf-idf权重------
万块 0.2096282020164691
三人 0.2096282020164691
三套 0.0
下海经商 0.2096282020164691
不想 0.0
东挪西撮 0.10481410100823454
事业有成 0.0
事对 0.10481410100823454
京州 0.0
以沫 0.10481410100823454
公司 0.0
分开 0.10481410100823454
别墅 0.0
前一晚 0.10481410100823454
县当 0.10481410100823454
县长 0.10481410100823454
名下 0.0
喝酒 0.10481410100823454
回忆起 0.10481410100823454
困难 0.10481410100823454
大路 0.5240705050411727
太大 0.0
好像 0.0
学习 0.4192564040329382
家住 0.0
对不起 0.2096282020164691
帝豪园 0.0
很大 0.10481410100823454
房子 0.0
打听 0.0
时期 0.10481410100823454
易学习 0.0
有福 0.10481410100823454
李达康 0.1491521922580067
欧阳 0.0
毛娅 0.0
沙瑞金 0.0
没想到 0.10481410100823454
浪费 0.0
王大路 0.0
瑞金 0.2096282020164691
百姓 0.10481410100823454
相助 0.10481410100823454
竟然 0.10481410100823454
股权 0.0
胸怀 0.10481410100823454
触动 0.10481410100823454
话别 0.10481410100823454
赔礼道歉 0.10481410100823454
赞叹 0.10481410100823454
踏实 0.0
这件 0.10481410100823454
连连 0.10481410100823454
道口 0.10481410100823454
金山 0.10481410100823454
降职 0.10481410100823454
风生水 0.10481410100823454
-------第 1 段文本的词语tf-idf权重------
万块 0.0
三人 0.0
三套 0.1421248473147575
下海经商 0.0
不想 0.1421248473147575
东挪西撮 0.0
事业有成 0.1421248473147575
事对 0.0
京州 0.284249694629515
以沫 0.0
公司 0.1421248473147575
分开 0.0
别墅 0.284249694629515
前一晚 0.0
县当 0.0
县长 0.0
名下 0.1421248473147575
喝酒 0.0
回忆起 0.0
困难 0.0
大路 0.0
太大 0.1421248473147575
好像 0.1421248473147575
学习 0.0
家住 0.1421248473147575
对不起 0.0
帝豪园 0.1421248473147575
很大 0.0
房子 0.284249694629515
打听 0.1421248473147575
时期 0.0
易学习 0.1421248473147575
有福 0.0
李达康 0.10112299942192488
欧阳 0.284249694629515
毛娅 0.42637454194427243
沙瑞金 0.1421248473147575
没想到 0.0
浪费 0.1421248473147575
王大路 0.42637454194427243
瑞金 0.0
百姓 0.0
相助 0.0
竟然 0.0
股权 0.1421248473147575
胸怀 0.0
触动 0.0
话别 0.0
赔礼道歉 0.0
赞叹 0.0
踏实 0.1421248473147575
这件 0.0
连连 0.0
道口 0.0
金山 0.0
降职 0.0
风生水 0.0

完成中文文本的挖掘工作,接下来就是建立分析模型了!回聊!

机器学习sklearn之特征工程相关推荐

  1. 用机器学习神器sklearn做特征工程!

    Datawhale干货 作者:jasonfreak,编辑:数据STUDIO 使用sklearn做特征工程 特征工程是什么? 有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是 ...

  2. 机器学习中的特征工程——分类变量的处理

    出品 | CDA数据分析研究院,转载需授权 文章目录 分类变量 概念 判断 类型 少类别分类变量处理方法 独热编码(One-hot encoding) 虚拟编码(Dummy coding) 效应编码( ...

  3. 机器学习实战之特征工程

    机器学习实战与特征工程 1.机器学习概述 1.1 什么是机器学习 1.2 为什么要机器学习 1.3 机器学习应用场景 1.4 学习框架和资料的介绍 2.特征工程 2.1 特征工程介绍 2.1.1 数据 ...

  4. 机器学习中的特征工程

    机器学习中的特征工程 什么是特征工程 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已.特征工程指的是把原始数据转变为模型的训练数据的过程,它的目的就是获取更好的训练数据特征,使得机器 ...

  5. 【数据平台】sklearn库特征工程之数据预处理

    1.背景: 通过特征提取,我们能得到未经处理的特征,这时的特征可能有以下问题: 不属于同一量纲:即特征的规格不一样,不能够放在一起比较.无量纲化可以解决这一问题. 信息冗余:对于某些定量特征,其包含的 ...

  6. 第五课 机器学习中的特征工程

    本系列是七月算法机器学习课程笔记 文章目录 1 特征工程与意义 2 数据与特征处理 2.1数据采集 2.2 数据清洗 2.3 数据采样 2.4 特征处理 2.4.1 数值型 2.4.2 类别型 2.4 ...

  7. 机器学习笔记六——特征工程之数据预处理

    特征工程之数据预处理 1. 处理缺失值 2. 处理异常值 2.1 异常值检测 2.2异常值处理 3.离散特征的连续化处理 4.连续特征的离散化处理 5. 处理类别不平衡问题 6. 图片数据扩充 数据预 ...

  8. 机器学习流程(三)-特征工程

    目录 一.数据预处理 1.异常值处理 2.缺失值处理 3.不均衡样本-数据采样 1.欠采样(undersampling) 2.过采样(oversampling) 3.阈值移动 4.基于聚类的过采样方法 ...

  9. 机器学习概述和特征工程

    机器学习笔记一 机器学习 概述 数据集的结构 特征工程 特征抽取 特征的预处理 数据降维 机器学习基础 机器学习开发流程 机器学习 概述 影响人工智能发展的因素 硬件的计算能力 数据的限制 算法的发展 ...

最新文章

  1. 任命新CFO 百度迎来首位女性高管
  2. R语言plotly可视化:plotly可视化箱图、基于预先计算好的分位数、均值、中位数等统计指标可视化箱图、箱图中添加缺口、可视化均值和标准差(With Precomputed Quartiles)
  3. AI:人工智能的多模态融合模型的简介、发展以及未来趋势
  4. 网易java实习面试_2019届网易JAVA实习2面经历
  5. python 线程中出现执行错乱_多处理会导致Python崩溃,并在调用fork()时在另一个线程中出现错误...
  6. Qt工作笔记-仿QQ登录界面(换肤,切换语言)
  7. 一般项目的并发量有多少_汽车保养一般包含哪些项目、保养周期是多少
  8. 13日直播预告丨Oracle多套库整合到多租户平台案例分享
  9. 语言常用c100单词,英语口语练习_夏普新款PW-C100-G电子词典测评_沪江英语
  10. 北京联通光猫 F427 路由改桥接的方法
  11. Android XML解析之PULL及单元测试
  12. java下载神奇宝贝mega,神奇宝贝mega
  13. Java:判断某年是闰年or平年并输出某月的天数
  14. MSP430F149 微安级低功耗模式设置总结
  15. 数据库工具sqlDBx连接mysql
  16. 2021年全国职业院校技能大赛 “大数据技术与应用”—模拟赛题(二)
  17. JSP酒店管理系统myeclipse开发mysql数据库bs框架java编程jdbc详细设计
  18. 关于计算机网络各层协议
  19. 河南朱砂服务器位置,探访河南境内规模最大的龙山遗址 龙山大墓主人头部疑似涂有朱砂...
  20. Delphi 10.3.1 RIO官方下载

热门文章

  1. 视频编辑利器,截取视频中指定区域并实现静音操作
  2. SqlServer数据库SQL语句(超详细)
  3. 魅族15完美开启usb调试模式的经验
  4. 联发科技推出曦力A系列 掀起智能手机科技普及革命
  5. 分类算法如何绘制roc曲线,如何绘制knn模型的ROC曲线
  6. 达美乐:乘着“懒人经济”东风扶摇直上
  7. Elasticsearch Java API 之Query、Filter、count、Aggregations
  8. Java设计模式:责任链模式
  9. 魅族计算机记录,魅族Flyme这个功能太好了,90%的人都不知道,用过的都说好
  10. 【算法】计算三角形面积