OneR算法:利用一个特征去预测分类
算法思想:
算法首先遍历每个特征的每一个取值,对于每一个特征值,统计它在各个类别中的出现次数,找到它出现次数最多的类别,并统计它在其他类别中的出现次数;
统计完所有的特征值及其在每个类别的出现次数后,我们再来计算每个特征的错误率。计算方法为把它的各个取值的错误率相加,选取错误率最低的特征作为唯一的分类准则(OneR),用于接下来的分类。
算法步骤:
1.将数据集特征值进行0/1化处理(大于等于均值的,特征值赋值为1,否则为0)
2.计算每一个特征的各个特征值在各个类别中出现的次数,并计算次数最多的特征值的误判次数
3.将某一个特征的所有特征值的误判次数加起来,找出误判最低的特征归属组合及总的错误次数
4.比较每个特征总的错误次数大小,找出错误次数最小的特征,该特征即为最佳判断特征
5.该特征对应的特征值分类即为最佳分类规则
示例:
import numpy as np
from sklearn.datasets import load_iris
from collections import defaultdict
from operator import itemgetter
from sklearn.cross_validation import train_test_split
dataset = load_iris()
X=dataset.data
y=dataset.target
attribute_means=X.mean(axis=0)#按列求均值
#将特征值小于均值的赋值为0,大于均值的赋值为1
X_d=np.array(X >= attribute_means,dtype='int')
def train_feature_value(X,y_true,feature_index,value):
class_counts=defaultdict(int