KNN, LDA, SVM 实战 —— 运用在Farm-ads(python)

本文通过KNN、LDA、SVM三种算法解决UCI Farm-ads数据集的分类问题。实验包括小数据集和全数据集的测试,结果显示SVM在分类效果上更优,但手写SVM在全数据集上运行时间过长。LDA因数据稀疏性无法求解,KNN和sklearn的LDA、SVM均有较好表现。
摘要由CSDN通过智能技术生成

概述

使用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,代表该广告是否被接受。我们要做的就是,给定一系列的单词,判断这些单词组成的广告是否会被接受。

数据预处理

  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

  1. 数据预处理思路
    对于文本数据,常见的处理思路是根据词料(也就是源数据)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值