概述
使用KNN,LDA,SVM求解UCI中的Farm-ads数据集。其中KNN为纯手写,LDA包括手写和使用sklearn的模块,SVM也包括手写和使用sklearn模块。
github代码
实验环境
anaconda + jupyter notebook + python3.7
数据
数据集来源
实验数据来源于:UCI机器学习数据库(http://archive.ics.uci.edu/ml/index.php)
其中,本次实验用到的数据集是Farm Ads Data Set。
其中UCI是一个非常适合入门的数据库,里面包括各种大小数据集,适用于分类,回归等多种任务。
数据集分析
这是一个纯文本数据集。每一行(共有4143行)是一条广告分割出来的单词。第一个特征是y,取值为1或者-1,代表该广告是否被接受。我们要做的就是,给定一系列的单词,判断这些单词组成的广告是否会被接受。
数据预处理
- 数据集格式
首先看一下数据的具体情况。一共有两个文件,一个是farm-ads,一个是farm-ads-vect。第一个打开后如图1所示:
图1:farm-ads
里面的每一行代表一条广告。其中第一个词是1或者-1,表示这条广告是否会被拒收。也就是最后的y。x便是后面的单词。其中存在一些没有意义的前缀和单词,如“page”“com”等。下一步会进行预处理。
Farm-ads-vect打开之后如图2所示。数据提供者将单词转换成为一个id,每个单词对应一个id。但是感觉不是很对应,有些数据对应出错。所以后面的实验并没有使用该文件。
图2:farm-ads-vect
- 数据预处理思路
对于文本数据,常见的处理思路是根据词料(也就是源数据)