文章目录

  • 结果
  • 代码

结果

代码

from sklearn.datasets import load_iris
import numpy as np
from collections import defaultdict
from operator import itemgetter
from sklearn.model_selection import train_test_split#接收数据集,对应类别,特征索引,具体特征值
#返回特征索引具体特征值对分类最好的类别,以及分类错误的数量
def train_feature_value(X, y_true, feature_index, value):#统计 类别为feature_index且其特征值为value的个体class_counts=defaultdict(int)for sample,y in zip(X,y_true):if(sample[feature_index]==value):class_counts[y]+=1#排序sorted_class_counts=sorted(class_counts.items(),key=itemgetter(1),reverse=True)#符合要求个体最多的类别most_frequent_class=sorted_class_counts[0][0]#计算以该特征值分类符合要求个体最多的类别的错误率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,error#接收数据集,对应类别,特征索引
#返回特征索引每一个特征值分类最好的类别,以及分类错误的数量
def train_on_feature(X, y_true, feature_index):values=set(X[:,feature_index])predictors={}errors=[]#计算某个特征其不同特征值分类能力for current_value in values:predictors[current_value],error=train_feature_value(X, y_true, feature_index, current_value)errors.append(error)return predictors,sum(errors)#接收训练集
#返回预测器model
#model:feature为用于预测的特征的索引, predictor为特征的特征值对应的预测类别
#model={'feature': 2(特征索引), 'predictor': {0(特征值): 0(对应类别), 1(特征值): 2(类别)}}
def Training(Xd_train, Yd_train):all_predictors={}errors={}#计算每个特征的分类能力for feature_index in range(Xd_train.shape[1]):predictor,error=train_on_feature(Xd_train,Yd_train,feature_index)all_predictors[feature_index]=predictorerrors[feature_index]=errorbest_feature,minimum_error=sorted(errors.items(),key=itemgetter(1),reverse=False)[0]model={'feature':best_feature,'predictor':all_predictors[best_feature]}return model#接收测试集,预测模型
#返回预测集
def predict(Xd_test, model):feature_index=model['feature']predictor=model['predictor']y_predicted=np.array([predictor[int(sample[feature_index])] for sample in Xd_test])return y_predicted#获取数据集
dataset=load_iris()
X=dataset.data
Y=dataset.target#数据集离散化
attribute_means=X.mean(axis=0)
X_d=np.array(X>=attribute_means,dtype='int')#数据集分割
Xd_train,X_test,Yd_train,Y_test=train_test_split(X_d,Y,random_state=14)#预测模型训练
model=Training(Xd_train, Yd_train)
print("The predict model:{0}".format(model))#预测模型评估
y_predicted=predict(X_test, model)
accuracy=np.mean(y_predicted==Y_test)*100
print("The test accuracy is {:.1f}%".format(accuracy))

OneR算法_0(python数据挖掘入门与实践-实验2)相关推荐

  1. 亲和性分析_0(python数据挖掘入门与实践-实验1)

    文章目录 解析 思路 效果 代码 解析 支持度:事件发生的总次数 置信度:一定条件下,事件发生的概率 思路 第一步: 导入数据,并交由变量X维护 创建特征数组 获取特征数量 第二步: 创建字典 val ...

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

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

  3. 《python数据挖掘》和《python数据挖掘入门与实践》两本书读后感

    这些天花了很多时间来学习数据挖掘这门课程,有很多心得和感悟,所以写下这篇博客来表达自己读完这两本书的感受! 首先推荐大家通过这两本书来入门数据挖掘这个领域,python数据挖掘这本书较容易,还花了很大 ...

  4. Python数据挖掘入门与实践---用决策树预测获胜球队

    数据集来源:1.  2013-14 NBA Schedule and Results 2.2013年 NBA 赛季排名情况 参考书籍:<Python数据挖掘入门与实践> 1.加载数据集: ...

  5. 《python数据挖掘入门与实践》决策树预测nba数据集

    前言: 学到决策树预测球队输赢时,按照书中网址去下载数据集,无奈怎么也没下载成功.即使下载了excel文件也是破损的.咱可是学了python的银,那好吧,我就把它爬取下来.(资源在下面) 代码: '' ...

  6. 改写《python数据挖掘入门与实践》第九章Gutenberg书籍下载代码

    @数据挖掘 改写<python数据挖掘入门与实践>第九章Gutenberg书籍下载代码 可能是gutenberg网站改版的缘故,随书附带的getdata.py代码执行会报错. 个人将其进行 ...

  7. python_tweets.json (python数据挖掘入门与实践数据集下载)

    最近在看python数据挖掘入门与实践一书,书不错,有个不好的地方是,书上所用的数据集,有几个测试数据在网上非常不好找 下面几个资源是我自己整理出来的,上传到CSDN,有需要的朋友可以下载 leagu ...

  8. 数据挖掘入门读物《Python数据挖掘入门与实践》豆瓣评分[7.70]

    好书推荐.视频分享,公众号"读书ReadBook"与您一起进步 下载地址-- 1.点击阅读原文或者地址 https://ebooklist.mobi/2019/05/20/6465 ...

  9. Python数据挖掘入门与实践pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书作为数据挖掘入门读物,介绍了数据挖掘的基础知识.基本工具和实践方法,通过循序渐进地讲解算法,带你轻松踏上数据挖掘之旅.本书采用理论与实践相结 ...

最新文章

  1. Java学习笔记--StringTokenizer的使用
  2. 全卷积神经网路【U-net项目实战】U-Net网络练习题: Kaggle - 2018 Data Science Bowl
  3. Windows2008防火墙封ip
  4. Android 中文 API ——对话框 AlertDialog.Builder
  5. Ajax — 聊天机器人演示
  6. explicitWidth与width,和用setActualSize()方法有什么区别?
  7. vue中组件的data为什么是一个函数
  8. VC/MFC程序开启关闭和打开自己或其他软件,更改窗口类
  9. 基于java的线上购物系统的设计与实现_基于javaweb的在线购物系统的设计与实现...
  10. 拓端tecdat|用R语言制作交互式图表和地图
  11. WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL
  12. dnf一天能获得多少黑暗之眼_DNF:想快速积累史诗狗眼?这几个方法可别错过,一天最少四五个...
  13. 【Algorithm】算法设计与分析(第二版)- 王红梅 - JAVA实现:3.2 分式化简。设计算法,将一个给定的真分数化简为最简分数形式。例如,将6/8化简为3/4
  14. imageJ如何在视频每一帧中添加text
  15. 计算机位数怎么看win10,查看Windows10系统是32位还是64位的三种方法
  16. 华为云——开发者技能测评
  17. RabbitMQ(三)发布确认 Publisher Confirms
  18. 活动二维码怎么制作?如何将活动内容做成二维码图片?
  19. 判断MySQL安装是否成功的两种验证方法
  20. Winform下的地图开发控件(GMap.NET)使用心得

热门文章

  1. 某cpws - ciphertext加密与数据解密
  2. mongodb安装及操作
  3. AVCaptureDevice中通过调用VideoZoomFactor方法调整焦距实现拉近拉远镜头进行拍照录制视频(动画缩放画面,不闪屏)
  4. numpy的narray数组与txt文件的相互转化
  5. sinc插值原理及其实现
  6. 可视化搭建移动端店铺解决方案
  7. 成都市中小学计算机创客,我校荣获2019四川省中小学电脑制作活动机器人暨创客竞赛团体一等奖...
  8. 计算机与交换机基础配置入门,新手入门篇:交换机配置窍门深入学习 -电脑资料...
  9. 纯数学教程 Page 324 正项级数绝对收敛的一种判别法
  10. GitHub使用gitBash配置用户名和邮箱和远程操作二