作业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')