跳转至

作业1

提交截至时间:2022/03/04 下周五 20:00(晚上)

理论部分

习题1. 现有一组图片数据集,任务目标是将这些图片分类。其中图片中包含的类别有:猫、狗、鹦鹉、人。试试用 one-hot 向量将类别表示为向量。

解. 猫、狗、鹦鹉、人可分别表示为

\[ \left( \begin{array}{c} 1 \\ 0 \\ 0 \\ 0 \end{array} \right), \left( \begin{array}{c} 0 \\ 1 \\ 0 \\ 0 \end{array} \right), \left( \begin{array}{c} 0 \\ 0 \\ 1 \\ 0 \end{array} \right), \left( \begin{array}{c} 0 \\ 0 \\ 0 \\ 1 \end{array} \right) \]

习题 2. 现有文本集(一行为一个文本):

I know.   
You know.   
I know that you know.   
I know that you know that I know. 

试计算,该文本集中各个单词的 TF-IDF值。

解. TF 值:

TF I You(you) know that
文档1 0.5 / 0.5 /
文档2 / 0.5 0.5 /
文档3 0.2 0.2 0.4 0.2
文档4 0.25 0.125 0.325 0.25

IDF 值:

        I You(you) know that
IDF ln(4/3) ln(4/3) 0 ln(2)

TF-IDF 值:

TF列,行 I You(you) know that
文档1 0.5ln(4/3) / 0 /
文档2 / 0.5ln(4/3) 0 /
文档3 0.2ln(4/3) 0.2ln(4/3) 0 0.2ln(2)
文档4 0.25ln(4/3) 0.125ln(4/3) 0 0.25ln(2)

实操部分

习题 3. 利用 python 统计 IMDB 影评数据集 data.txt 文件中,每一行表示一篇影评文档。请计算每篇影评中各单词的 tf、idf 以及 tf-idf。提交时需要分别提交三个 csv 文件,分别含有各单词的 tf、idf以及 tf-idf以及实现的代码。如下给出部分参考代码(仅供参考):

num_of_doc=10  
tf_words = []  
num_of_words = []  
#读入数据并计算tf  
with open('data.txt', 'r', encoding='UTF-8') as f:  
    for i in range(num_of_doc):  
        words = f.readline().split()  
        #num_of_words.append (# todo #)  
        tf_words.append({})  
        for word in words:  
            if word in tf_words[i]:  
                # todo #  
            else:
                # todo #  

#计算idf  
idf_words={}  
for i in range(num_of_doc):  
    for item in tf_words[i].items():  
        # todo # 

#计算tfidf   
tf_idf_words = []   
for i in range(num_of_doc):   
    tf_idf_words.append({})   
    for item in tf_words[i].items():   
        # todo #   


#导出csv   
import pandas as pd   

tf=pd.DataFrame(tf_words).fillna(0)   
idf=pd.DataFrame([idf_words]).fillna(0)   
tfidf=pd.DataFrame(tfidf_words).fillna(0)   

tf.to_csv('tf.csv')   
idf.to_csv('idf.csv')   
tf_idf.to_csv('tfidf.csv')