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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea svn回退版本_mac下使用s
- 下一篇: 消防给水及消火栓系统技术规范_消防给水及