Orange——The Data
The Data
這個(gè)部分描述的是怎樣在Orange上加載數(shù)據(jù)。我們也將展示如何探索數(shù)據(jù),發(fā)現(xiàn)一些基本統(tǒng)計(jì)特性,怎么數(shù)據(jù)取樣。
Data Input
Orange可以讀取本機(jī)以制表符分隔的格式的文件,也可以從任何主要的標(biāo)準(zhǔn)電子表格文件類型加載數(shù)據(jù),像CSV,Excel。本機(jī)以制表符分割的格式的文件有通常第一行是特征名稱(或者是列名);第二行是屬性類型,可以使連續(xù),離散,時(shí)間,或者字符串;第三行包含一些元信息,用于標(biāo)識(shí)依賴特性(類)、無(wú)關(guān)特性(忽略)或元特性(元)。看下面的數(shù)據(jù):
這個(gè)數(shù)據(jù)集有四個(gè)屬性(患者年齡,眼鏡處方,散光概念,淚液生成率信息)和關(guān)于病人的三個(gè)值的處方信息編碼(硬隱形眼鏡,軟隱形眼鏡,無(wú)鏡片)
import Orangedata = Orange.data.Table('lenses')print(data.domain.attributes) print(data.domain.class_var)for d in data[:3]:print(d)高級(jí)輸出展示:
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
探索數(shù)據(jù),統(tǒng)計(jì)離散特征和連續(xù)特征的數(shù)量。
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的對(duì)象可以像Python的列和字典一樣,可以通過(guò)特征名進(jìn)行檢索和訪問(wèn)。
print("First attribute:", data.domain[0].name) name = "fuel-type" print("Values of attribute '%s': %s" %(name, ", ".join(data.domain[name].values)))Data Instances
數(shù)據(jù)Table存儲(chǔ)了數(shù)據(jù)實(shí)例。可以像Python列表一樣進(jìn)行索引和遍歷,可以將數(shù)據(jù)實(shí)例視為向量,通過(guò)元素索引或特性名稱進(jìn)行訪問(wèn)。針對(duì)于鳶尾花數(shù)據(jù)
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))快速計(jì)算類分布的代碼:
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數(shù)組轉(zhuǎn)成dataset X = np.array([[1,2],[4,5]]) data = Orange.data.Table(X) print(data.domain)#設(shè)置有意義的名字 domain = Orange.data.Domain([Orange.data.ContinuousVariable("lenght"),Orange.data.ContinuousVariable("width")]) data = Orange.data.Table(domain, X) print(data.domain)另一個(gè)例子:
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]))#統(tǒng)計(jì)缺失率 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))#至少缺失一個(gè)值統(tǒng)計(jì) 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))#或者隨機(jī)采樣屬性 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
在做關(guān)聯(lián)分析的時(shí)候發(fā)現(xiàn)了Orange這個(gè)庫(kù),還有Orange可視化的工具,就大致進(jìn)行學(xué)習(xí)一下,數(shù)據(jù)集獲取的話,在安裝Orange.exe(縮寫(xiě))之后有自帶的數(shù)據(jù)集。
總結(jié)
以上是生活随笔為你收集整理的Orange——The Data的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: idea svn回退版本_mac下使用s
- 下一篇: android实现视频壁纸,ffmpeg