Orange——The Data
The Data
这个部分描述的是怎样在Orange上加载数据。我们也将展示如何探索数据,发现一些基本统计特性,怎么数据取样。
Data Input
Orange可以读取本机以制表符分隔的格式的文件,也可以从任何主要的标准电子表格文件类型加载数据,像CSV,Excel。本机以制表符分割的格式的文件有通常第一行是特征名称(或者是列名);第二行是属性类型,可以使连续,离散,时间,或者字符串;第三行包含一些元信息,用于标识依赖特性(类)、无关特性(忽略)或元特性(元)。看下面的数据:
这个数据集有四个属性(患者年龄,眼镜处方,散光概念,泪液生成率信息)和关于病人的三个值的处方信息编码(硬隐形眼镜,软隐形眼镜,无镜片)
import Orangedata = Orange.data.Table('lenses')print(data.domain.attributes)
print(data.domain.class_var)for d in data[:3]:print(d)
高级输出展示:
import Orange
data = Orange.data.Table("lenses")
print("Attributes:", ", ".join(x.name for x in data.domain.attributes))
print("Class:", data.domain.class_var.name)
print("Data instances", len(data))target = "soft"
print("Data instances with %s prescriptions:" % target)
atts = data.domain.attributes
for d in data:if d.get_class() == target:print(" ".join(["%14s" % str(d[a]) for a in atts]))
Saving the Data
import Orange
data = Orange.data.Table("lenses")
myope_subset = [d for d in data if d["prescription"] == "myope"]
new_data = Orange.data.Table(data.domain, myope_subset)
new_data.save("lenses-subset.tab")
Exploration of the Data Domain
探索数据,统计离散特征和连续特征的数量。
import Orangedata = Orange.data.Table("imports-85.tab")
n = len(data.domain.attributes)
n_cont = sum(1 for a in data.domain.attributes if a.is_continuous)
n_disc = sum(1 for a in data.domain.attributes if a.is_discrete)
print("%d attributes: %d continuous, %d discrete" % (n, n_cont, n_disc))print("First three attributes:",", ".join(data.domain.attributes[i].name for i in range(3)))print("Class:", data.domain.class_var.name)
Orange的对象可以像Python的列和字典一样,可以通过特征名进行检索和访问。
print("First attribute:", data.domain[0].name)
name = "fuel-type"
print("Values of attribute '%s': %s" %(name, ", ".join(data.domain[name].values)))
Data Instances
数据Table存储了数据实例。可以像Python列表一样进行索引和遍历,可以将数据实例视为向量,通过元素索引或特性名称进行访问。针对于鸢尾花数据
import Orangedata = Orange.data.Table("iris")
print("First three data instances:")
for d in data[:3]:print(d)print("25-th data instance:")
print(data[24])name = "sepal width"
print("Value of '%s' for the first instance:" % name, data[0][name])
print("The 3rd value of the 25th data instance:", data[24][2])average = lambda x: sum(x)/len(x)print("%-15s %s" % ("Feature", "Mean"))
for x in data.domain.attributes:print("%-15s %.2f" % (x.name, average([d[x] for d in data])))average1 = lambda xs: sum(xs)/float(len(xs))targets = data.domain.class_var.values
print("%-15s %s" % ("Feature", " ".join("%15s" % c for c in targets)))
for a in data.domain.attributes:dist = ["%15.2f" % average1([d[a] for d in data if d.get_class() == c])for c in targets]print("%-15s" % a.name, " ".join(dist))
快速计算类分布的代码:
import Orange
from collections import Counterdata = Orange.data.Table("lenses")
print(Counter(str(d.get_class()) for d in data))
Orange Datasets and NumPy
import orange
import numpy as npdata = Orange.data.Table("iris")print(data.X[:3])
print(data.Y[:3])mean = np.mean(data.X,axis=0)
print(mean)#numpy数组转成dataset
X = np.array([[1,2],[4,5]])
data = Orange.data.Table(X)
print(data.domain)#设置有意义的名字
domain = Orange.data.Domain([Orange.data.ContinuousVariable("lenght"),Orange.data.ContinuousVariable("width")])
data = Orange.data.Table(domain, X)
print(data.domain)
另一个例子:
size = Orange.data.DiscreteVariable("size", ["small", "big"])
height = Orange.data.ContinuousVariable("height")
shape = Orange.data.DiscreteVariable("shape", ["circle", "square", "oval"])
speed = Orange.data.ContinuousVariable("speed")domain = Orange.data.Domain([size, height, shape], speed)X = np.array([[1, 3.4, 0], [0, 2.7, 2], [1, 1.4, 1]])
Y = np.array([42.0, 52.2, 13.4])data = Orange.data.Table(domain, X, Y)
print(data)
Missing Values
import numpy as npdata = Orange.data.Table('voting.tab')print(data[2])#查看是否缺失
print(np.isnan(data[2][0]))
print(np.isnan(data[2][1]))#统计缺失率
for x in data.domain.attributes:n_miss = sum(1 for d in data if np.isnan(d[x]))print("%4.1f%% %s" % (100.*n_miss/len(data), x.name))#至少缺失一个值统计
print(sum(any(np.isnan(d[x]) for x in data.domain.attributes) for d in data))
Data Selection and Sampling
data = Orange.data.Table("iris.tab")
print("Dataset instances:", len(data))
subset = Orange.data.Table(data.domain,[d for d in data if d["petal length"] > 3.0])
print("Subset size:", len(subset))#特征选择
new_domain = Orange.data.Domain(list(data.domain.attributes[:2]),data.domain.class_var)
new_data = Orange.data.Table(new_domain, data)print(data[0])
print(new_data[0])#特征采样
sample = Orange.data.Table(data.domain, random.sample(data, 3))#或者随机采样属性
atts = random.sample(data.domain.attributes, 2)
domain = Orange.data.Domain(atts, data.domain.class_var)
new_data = Orange.data.Table(domain, data)
print(new_data[0])
本文参考:http://docs.orange.biolab.si/3/data-mining-library/tutorial/data.html#orange-datasets-and-numpy
在做关联分析的时候发现了Orange这个库,还有Orange可视化的工具,就大致进行学习一下,数据集获取的话,在安装Orange.exe(缩写)之后有自带的数据集。
Orange——The Data相关推荐
- 开源数据挖掘工具Orange简介
原文地址: http://cloga.info/python/2014/01/02/Orangeintro/#wat_e_19338566-a664-48dd-adf4-325f96bcec42 Or ...
- 利用orange进行关联规则挖掘
转自:http://www.fuchaoqun.com/2008/08/data-mining-with-python-orange-association_rule/ 最近,趁着项目的间隙,折腾了一 ...
- pythonorange_利用Python【Orange】结合DNA序列进行人种预测
coursera上 web intelligence and big data 终于布置了HW7,这一次的要求是对一系列DNA序列进行预测,具体说明如下: Data Analytics Assignm ...
- 百度数据可视化图表套件echart实战
最近我一直在做数据可视化的前端工作,我用的最多的绘图工具是d3.d3有点像photoshop,功能很强大,例子也很多,但是学习成本也不低,做项目是需要较大人力投入的.3月底由在亚马逊工作的同学介绍下使 ...
- 【转载】开源且免费软件包分类列表
2019独角兽企业重金招聘Python工程师标准>>> 转载自:http://my.oschina.net/u/617889/blog/86688 This is a list of ...
- R语言ggplot画世界地图并根据条件给国家上色
期末结束,来分享一下 Exploration Data Analysis这门课我做的一个图. 语言依旧是 R, 用的Rstudio,这玩意儿真的拉闸,作为一个数据分析主要语言的软件,我数据量一大它就各 ...
- 在ASP.NET Core (.NET 6)中构建可视化医生预约调度系统
目录 预约安排用户界面 病人界面 医生界面 基本组件 这个怎么运行 ASP.NET Core中的日.周和月日历视图 生成预约空档 预约空档状态 如何运行ASP.NET Core项目 下载源项目(Vis ...
- 柱形图和折线图在一个坐标轴ECharts
奇葩问题天天有 今天要做一个柱形图和折线图在一个坐标轴上 先上个参考的地址 大佬地址 唔 为什么别人有了还要再写呢 1是以后好找 :2是研究过的才是自己的 先上个图片 然后上代码 这个也是扒过来的 尴 ...
- NMF降维算法与聚类模型的综合运用
NMF降维算法与聚类模型的综合运用 前言 一:NMF算法 二:NMF算法的使用 三:NMF算法与层次聚类的综合使用 四:总结 前言 这一章,我们讨论下另一个比较有效的降维手段:NMF(非负矩阵分解). ...
最新文章
- 中学计算机课 打字教案,初中信息技术《打字练习—易语言应用》教案
- gg.gap:ggplot阶截断坐标轴的优秀完美解决方案
- WebLogic集群配置
- MFC,ADO方式实现数据库操作
- Javascript综合应用小案例(续)
- Element el-upload上传组件详解
- adb提取安装的apk
- java中BigDicemal的运算
- 身材太好的女生在职场中有哪些劣势?
- python画条形图-python3使用matplotlib绘制条形图
- jQuery源码分析系列:Deferred延迟队列
- java 代码重排_Java中指令重排
- Oracle 11gR2数据库使用
- 阿里云服务器和腾讯云服务器优缺点分析
- fastapi+tortoise单元测试
- mac系统ps快捷键大全-来自三人行慕课
- nginx 三级域名泛解析并指向某文件 带参数
- xcode编译错误:The Legacy Build System will be removed in a future release.
- Portal Server搭建(wifidog安装)
- Guava collections -- Table
热门文章
- Cocos2d开发1:Xcode与TexturePacker的集成
- Spring JDBC最佳实践(2)
- [Windows Phone] 为应用添加后台计划任务 – Scheduled Task Agent
- 部署WSE3.0实战:性能、证书与WSE910错误
- Readhat中升级openssh
- Diango博客--2.博客从“裸奔”到“有皮肤”
- 路由到另外一个页面_Nextjs使用解读一(项目搭建与路由系统)
- 【tensorflow】tensorflow -gpu安装及jupyter环境更改
- 线性判别结合源码分析LDA原理
- 应用层协议:HTTP与HTTPS协议详解、二者的区别