首先,文本数据属于非结构化数据,一般要转换成结构化的数据,一般是将文本转换成“文档-词频矩阵”,矩阵中的元素使用词频或者TF-IDF。
TF-IDF的主要思想是:如果某一个词或短语在一篇文章中出现的频率高,并且在其他文章中很少出现,则认为此词或短语具有很好的类别区分能力,适合用于分类。TF-IDF=TF*IDF
IDF主要思想:如果包含词条t的文档越少,也就是n越小,IDF越到,则说明词条t具有很好的区分能力。
TF指的是某一个给定的词语在该文件中出现的频率,这是对词数的归一化,IDF是一个词语重要性的度量,IDF=log(D/Dn),其中对数以2为底,D为文本总数,Dn为该词在n个网页中出现过。具体证明推导可以参考《数学之美》中对于TF-IDF的介绍,其实IDF是一个特定条件下关键词的概率分布的交叉熵,是信息论中的内容。
from sklearn.datasets import load_files
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import MultinomialNB
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklea