《Python数据挖掘入门与实践》第一章内容,实现一个简单的分类处理,实现OneR算法。
OneR算法的思路很简单,它根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类。OneR也就是One Rule的缩写,即“一条规则”,表示我们只选取特征中分类效果最好的一个作为分类的依据。虽然这个算法十分的简单,但是在很多真实数据集上却有着不凡的表现。算法首先遍历每个特征的每个取值,对于每个特征值,统计它在各个类别中出现的次数,找到它出现次数最多的类别,并统计它在其他类别中出现的次数。接着,我们计算每个特征的错误率——把该特征的各个取值的错误率相加。最后选取错误率最低的特征作为唯一的分类标准,也就是“One Rule”。
在《Python数据挖掘入门与实践》一书中的代码在我实验的过程中有一些小问题,下面的代码是经过修改整合之后的,可以正常运行的代码。
实例中采用鸢尾花数据集,该数据集可以通过sklearn包中直接载入。
代码如下:
"""
分类问题的简单实例
使用鸢尾花数据集
实现OneR算法
"""
from sklearn.model_selection import train_test_split #分割数据集成为训练集和测试集(默认是25%)
from sklearn.datasets import load_iris
import numpy as np
from collections import defaultdict
from operator import itemgetter
dataset = load_iris()
X = dataset.data #是一个ndarray
y = dataset.target
n_samples, n_features &#