OneR算法_0(python数据挖掘入门与实践-实验2)
文章目录
- 结果
- 代码
结果
代码
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)相关推荐
- 亲和性分析_0(python数据挖掘入门与实践-实验1)
文章目录 解析 思路 效果 代码 解析 支持度:事件发生的总次数 置信度:一定条件下,事件发生的概率 思路 第一步: 导入数据,并交由变量X维护 创建特征数组 获取特征数量 第二步: 创建字典 val ...
- Python数据挖掘入门与实践-OneR分类算法
Python数据挖掘入门与实践-OneR分类算法 OneR算法 OneR算法是根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类. 在本例中,只需选区Iris是个特征中分类效果最好的一个 ...
- 《python数据挖掘》和《python数据挖掘入门与实践》两本书读后感
这些天花了很多时间来学习数据挖掘这门课程,有很多心得和感悟,所以写下这篇博客来表达自己读完这两本书的感受! 首先推荐大家通过这两本书来入门数据挖掘这个领域,python数据挖掘这本书较容易,还花了很大 ...
- Python数据挖掘入门与实践---用决策树预测获胜球队
数据集来源:1. 2013-14 NBA Schedule and Results 2.2013年 NBA 赛季排名情况 参考书籍:<Python数据挖掘入门与实践> 1.加载数据集: ...
- 《python数据挖掘入门与实践》决策树预测nba数据集
前言: 学到决策树预测球队输赢时,按照书中网址去下载数据集,无奈怎么也没下载成功.即使下载了excel文件也是破损的.咱可是学了python的银,那好吧,我就把它爬取下来.(资源在下面) 代码: '' ...
- 改写《python数据挖掘入门与实践》第九章Gutenberg书籍下载代码
@数据挖掘 改写<python数据挖掘入门与实践>第九章Gutenberg书籍下载代码 可能是gutenberg网站改版的缘故,随书附带的getdata.py代码执行会报错. 个人将其进行 ...
- python_tweets.json (python数据挖掘入门与实践数据集下载)
最近在看python数据挖掘入门与实践一书,书不错,有个不好的地方是,书上所用的数据集,有几个测试数据在网上非常不好找 下面几个资源是我自己整理出来的,上传到CSDN,有需要的朋友可以下载 leagu ...
- 数据挖掘入门读物《Python数据挖掘入门与实践》豆瓣评分[7.70]
好书推荐.视频分享,公众号"读书ReadBook"与您一起进步 下载地址-- 1.点击阅读原文或者地址 https://ebooklist.mobi/2019/05/20/6465 ...
- Python数据挖掘入门与实践pdf
下载地址:网盘下载 内容简介 · · · · · · 本书作为数据挖掘入门读物,介绍了数据挖掘的基础知识.基本工具和实践方法,通过循序渐进地讲解算法,带你轻松踏上数据挖掘之旅.本书采用理论与实践相结 ...
最新文章
- Java学习笔记--StringTokenizer的使用
- 全卷积神经网路【U-net项目实战】U-Net网络练习题: Kaggle - 2018 Data Science Bowl
- Windows2008防火墙封ip
- Android 中文 API ——对话框 AlertDialog.Builder
- Ajax — 聊天机器人演示
- explicitWidth与width,和用setActualSize()方法有什么区别?
- vue中组件的data为什么是一个函数
- VC/MFC程序开启关闭和打开自己或其他软件,更改窗口类
- 基于java的线上购物系统的设计与实现_基于javaweb的在线购物系统的设计与实现...
- 拓端tecdat|用R语言制作交互式图表和地图
- WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL
- dnf一天能获得多少黑暗之眼_DNF:想快速积累史诗狗眼?这几个方法可别错过,一天最少四五个...
- 【Algorithm】算法设计与分析(第二版)- 王红梅 - JAVA实现:3.2 分式化简。设计算法,将一个给定的真分数化简为最简分数形式。例如,将6/8化简为3/4
- imageJ如何在视频每一帧中添加text
- 计算机位数怎么看win10,查看Windows10系统是32位还是64位的三种方法
- 华为云——开发者技能测评
- RabbitMQ(三)发布确认 Publisher Confirms
- 活动二维码怎么制作?如何将活动内容做成二维码图片?
- 判断MySQL安装是否成功的两种验证方法
- Winform下的地图开发控件(GMap.NET)使用心得
热门文章
- 某cpws - ciphertext加密与数据解密
- mongodb安装及操作
- AVCaptureDevice中通过调用VideoZoomFactor方法调整焦距实现拉近拉远镜头进行拍照录制视频(动画缩放画面,不闪屏)
- numpy的narray数组与txt文件的相互转化
- sinc插值原理及其实现
- 可视化搭建移动端店铺解决方案
- 成都市中小学计算机创客,我校荣获2019四川省中小学电脑制作活动机器人暨创客竞赛团体一等奖...
- 计算机与交换机基础配置入门,新手入门篇:交换机配置窍门深入学习 -电脑资料...
- 纯数学教程 Page 324 正项级数绝对收敛的一种判别法
- GitHub使用gitBash配置用户名和邮箱和远程操作二