假设你团队正在开发一个文本分类模型,用于将客户评论分类为正面或负面。由于文本数据具有高维度的特性,模型训练和预测的效率受到影响。你提议使用卡方检验进行特征选择,挑选出与分类任务最相关的词汇,降低数据的维度,从而提高模型的性能。 请你编写一个程序,使用卡方检验对给定的文本数据集进行特征选择。具体要求如下: 1. 读取输入数据集,包含多篇标注了类别的文本文档。 2. 提取特征,采用词频(Bag-of-Words)模型,将文本转换为特征向量。(不能忽视单词字母大小写) 3. 计算每个特征(词)的卡方统计量,衡量其与类别标签的相关性。 4. 根据卡方统计量选择前 ( k ) 个最重要的特征。 5. 输出选定的特征列表。
输入描述:
    •    第一行包含一个整数 ( N ),表示文档的数量。    •    接下来的 ( N ) 行,每行包含一个文档,格式为:\t        •    :文档的类别,取值为 'positive' 或 'negative'。        •    \t:一个制表符,分隔类别标签和文档内容。        •    :文档的内容,由若干单词组成,单词之间用空格分隔。    •    最后一行包含一个整数 ( k ),表示需要选择的特征数量。


输出描述:
    •    输出 ( k ) 行,每行包含一个单词(特征),按照卡方统计量从大到小排序。如果多个特征的卡方值相同,按字母顺序升序排列。
示例1

输入

6
positive	I love this movie
negative	I hate this movie
positive	This film was fantastic
negative	This film was terrible
positive	What a great experience
negative	What a bad experience
3

输出

bad
fantastic
great

说明

    •    步骤 1:读取 6 篇文档及其类别标签。
    •    步骤 2:统计每个单词在不同类别中的出现次数,计算卡方统计量。
    •    步骤 3:根据卡方值从大到小排序,选择前 3 个特征。
    •    步骤 4:输出选定的特征列表。

备注:
    •    卡方检验公式对于每个特征(单词),卡方统计量计算公式为:其中:    •    ( ) 是观察到的频数,表示特征是否出现和类别的四种组合情况。    •      是期望频数,按照独立性假设计算:
加载中...