以下参考自《python数据挖掘入门与实战》

1.4分类

已知类别的数据集,经过训练得到一个分类模型,再用模型对类别未知的的数据进行分类。比如垃圾邮件过滤器

离散化:数据集的特征为连续值,算法使用类别性特征值,连续值转变为类别值,这个过程叫离散化
最简单的离散化算法:确定一个阈值,低于该阈值的特征设置为0,高于阈值的值设置为1
阈值计算方法之一:该特征的所有特征值的均值

oneR算法

对于每个特征的每个取值,统计它在各个类别出现次数
错误率 = 1 - 第i个特征的第j个取值出现次数 / 第i特征所有取值的和
选择错误率最低的特征作为唯一分类准则

测试算法
机器学习流程分为2步,训练和测试。从数据集中取一部分数据用于训练模型,取一部分数据用于测试模型对于未知数据的拟合效果

过拟合:模型对训练集表现好,对于未见过的数据表现差。解决方法:不要用训练数据测试模型或者把数据集分为两部分,分别用于训练和测试。

代码实现

#从scikit_learn库内置的iris植物分类数据集
from sklearn.datasets import load_iris
dataset = load_iris()
print(dataset.DESCR) #可以打印出数据集的具体信息
import numpy as np
from collections import defaultdict
from operator import itemgetterX = dataset.data  #特征值
Y = dataset.target #类别attribute_mean = X.mean(axis=0)
X_d = np.array(X >= attribute_mean, dtype='int') # transfer continuous value to discrete将连续值离散化def train_feature_value(X, y_true, feature_index, value):# create a dictionary to count how frequenctly a sample given a specific feature appears in certian class#创建字典,统计某一特征在某一类别出现频率class_counts = defaultdict(int)for sample, y in zip(X,y_true):if sample[feature_index] == value:class_counts[y] += 1# get the best one by sorting 特征值最有可能归属的类别sorted_class_counts = sorted(class_counts.items(), key=itemgetter(1), reverse=True)most_frequent_class = sorted_class_counts[0][0]#error is the number of samples that do not classified as the most frequent class 1- 属于most_frequent_class的特征值incorrect_predictions = [class_count for class_value, class_count in class_counts.items() if class_value != most_frequent_class]error = sum(incorrect_predictions)return most_frequent_class, errordef train_on_value(X, y_true, feature_index):predictors = {} #create a dictionary with key denoting feature value and value denoting which class it belongs特征值,类组成的字典errors = []values = set(X[:, feature_index])for v in values:most_frequent_class, error = train_feature_value(X, y_true, feature_index, v)predictors[v] = most_frequent_classerrors.append(error)total_error = sum(errors)return predictors, total_error
#split dataset into two parts: trainning set and testing set (default 25%)
#分训练集和测试集,让每个集合符合原集合的分布
from sklearn.cross_validation import train_test_split
Xd_train, Xd_test, y_train, y_test = train_test_split(X_d, Y, random_state=14) #random_state?all_predictors = {}
errors = {}
for feature_index in range(Xd_train.shape[1]):predictor, error = train_on_value(Xd_train, y_train, feature_index)all_predictors[feature_index] = predictorerrors[feature_index] = error#建立的分类预测模型
best_feature, best_error = sorted(errors.items(), key=itemgetter(1))[0]
model = {"feature": best_feature, 'predictor': all_predictors[best_feature]}def predict(X_test, model):feature = model["feature"]predictor = model["predictor"]y_predicted = np.array([predictor[int(sample[feature])] for sample in X_test])return y_predicted#预测值与实际值的误差
y_predicted = predict(Xd_test, model)
accuracy = np.mean(y_predicted == y_test) * 100
print("The test accuracy is {0:.1f}".format(accuracy))

python数据挖掘-oneR算法相关推荐

  1. Python数据挖掘-OneR算法简介

    OneR算法 内容来源于<Python数据挖掘入门与实践> 在末尾有源代码,但需要使用Jupyter notebook,大家可以去我的另一篇文章找安装教程.http://blog.csdn ...

  2. Python数据挖掘入门与实践-OneR分类算法

    Python数据挖掘入门与实践-OneR分类算法 OneR算法 OneR算法是根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类. 在本例中,只需选区Iris是个特征中分类效果最好的一个 ...

  3. Python数据挖掘学习——鸢尾花分类、OneR算法

    <Python数据挖掘入门与实践>第一章内容,实现一个简单的分类处理,实现OneR算法. OneR算法的思路很简单,它根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类.On ...

  4. python数据挖掘(2.分类 OneR算法)

    数据源 分类是数据挖掘最为常用的方法之一,无论实际应用还是调研,都需要它的帮忙.对于分类问题,我们通常能拿到表示实际对象或时间的数据及,而数据集中每一条数据都有所属于的类别,这些类别把一条条的数据划分 ...

  5. 使用OneR算法进行分类(Python实现)

    分类 分类是数据挖掘领域最为常用的方法之一,不论是实际应用还是科研,都少不了它的身影. 根据检测数据确定植物的种类.类别的值为"植物属于哪个种类? 接下来这个代码就是实现这个问题 执行过程是 ...

  6. 数据挖掘之OneR算法(原来数据挖掘如此简单!)

    人人都能看懂的数据挖掘之OneR算法(原来数据挖掘如此简单!) 如标题所言,我要以最通俗易懂的方法向大家介绍一个简单的数据挖掘算法--OneR算法,为了每个人都能看懂,这里将不涉及专业术语,不要求任何 ...

  7. 机器学习之数据挖掘算法(一)OneR算法

    一.初识OneR算法 1.在数据挖掘中,我们会接触到knn,决策树等许多复杂的分类算法,那么有没有一种比较简单的分类算法呢?那就是OneR算法. 2.思想:OneR即One Rule顾名思义,也就是一 ...

  8. OneR算法python实现

    OneR算法(分类应用,寻找最佳的特征值用于分类) 计算数据错误率,不属于最多类的特征值个数,把各个取值的错误率相加,选取错误率最低的特征作为唯一的分类准则(One Rule),用于接下来的分类. / ...

  9. python机器学习实现oneR算法 以鸢尾data为例

    oneR即"一条规则".oneR算法根据已有的数据中,具有相同特征值的个体最可能属于哪个类别来进行分类. 以鸢尾data为例,该算法实现过程可解读为以下六步: 文章目录 一. 导包 ...

最新文章

  1. thymeleaf 的常见属性
  2. 简单自学机器学习理论——正则化和偏置方差的权衡 (Part III )
  3. Hyper-v Server在线调整虚拟硬盘大小
  4. 将jpg图像转换成yuv420p格式
  5. 联想手机android系统耗电,联想 K900 Android 4.2 手机续航能力实测
  6. .Net CLR 中的同步机制(一): 互斥体
  7. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)
  8. Apk进行360加固后文件损坏之解决
  9. 13号线ab线规划图_2018广州地铁13号线二期最新消息:计划今年开工 2022年底建成通车(附线路图+站点)...
  10. 生产排程系统_论生产计划排程APS系统的几大问题
  11. 鸿蒙os基带版本,华为推出基于鸿蒙OS的Hi3861开发板
  12. Linux打字游戏程序代码,c语言shell打字游戏.pdf
  13. 继续当搬运工之人人网移动端架构解析
  14. Matlab柱状图 不同颜色
  15. 使用weixin-java-miniapp实现微信小程序登录接口
  16. HTML5吃豆豆游戏开发实战(二)主角移动和动画循环设置
  17. 软件无线电处理平台设计原理图:136-KC705E增强版基于FMC接口的 Kintex-7 XC7K325T PCIeX8 接口卡 数据采集IO卡
  18. 在列表中正数和负数区分出来,并且对它们进行分列
  19. Android必知必会-Stetho调试工具
  20. swap (虚拟内存)

热门文章

  1. python 多态 知乎_Python鸭子类型和多态
  2. 微型计算机电路软件,微机控制电路
  3. 计算并输出0-1000含有7或者是7的倍数的整数之和及其个数
  4. 投资人说:多方抢投 4400 万美元,我们为何看好神策数据?
  5. 【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制
  6. 2016年山西医科大汾阳学院实验1,实验2
  7. laravel过滤富文本提交的标签(防止XSS等js脚本攻击)
  8. 伦敦国王学院计算机申请要求,伦敦大学国王学院高级计算机管理理学硕士研究生申请要求及申请材料要求清单...
  9. 看懂需要勇气,33张人性图!
  10. Android 上 NFC 应用