Celem laboratorium jest zapoznanie studentów ze środowiskiem Orange Data Mining. W ramach ćwiczenia prezentowany jest interfejs narzędzia, możliwości wizualizacji zbiorów danych, algorytmy do odkrywanai asocjacji, klasyfikatory, algorytmy uczenia nienadzorowanego, a także możliwość pisania własnych skryptów.
Paint Data
do przygotowania przykładowego zbioru danych.Data Table
, a następnie przetestuj możliwości następujących operatorów:
Distributions
,Attribute Statistics
,Scatter Plot
,Radviz
,Polyviz
,Parallel Coordinates
,Mosaic Display
.Data Sampler
wybierz 10% danych i wyślij je do operatora Discretize
, przetestuj poszczególne schematy dyskretyzacji.Outliers
, przy czym do tego celu wykorzystaj dane niewybrane przez Data Sampler
.Feature Construction
do skonstruowania dwóch dodatkowych atrybutów, reprezentujących stosunek wysokości do szerokości płatków i słupków. Następnie przejdź do zakładki Unsupervised i skorzystaj z operatora Example Distance
do skonstruowania macierzy odległości między obiektami. Wyświetl macierz odległości i wyślij ją do operatora Hierarchical Clustering
w celu zbudowania dendrogramu obiektów.Otwórz konsolę Pythona i sprawdź działanie poniższego kodu
1. Odczytanie i wyświetlenie zbioru danych
import Orange data = Orange.data.Table("lenses") print "Atrybuty:", for i in data.domain.attributes: print i.name, print print "Klasa:", data.domain.classVar.name print "Pierwszych 5 rekordów:" for i in range(5): print data[i]
2. Podstawowe charakterystyki zbioru danych
import orange data = orange.ExampleTable("adult") selection = orange.MakeRandomIndices2(data, 0.03) sample = data.select(selection, 0) sample.save("adult_sample.tab") data = orange.ExampleTable("adult_sample") # report on number of classes and attributes print "Klasy:", len(data.domain.classVar.values) print "Atrybuty:", len(data.domain.attributes), ",", # count number of continuous and discrete attributes ncont=0; ndisc=0 for a in data.domain.attributes: if a.varType == orange.VarTypes.Discrete: ndisc = ndisc + 1 else: ncont = ncont + 1 print ncont, "ciągłe,", ndisc, "dyskretne" # obtain class distribution c = [0] * len(data.domain.classVar.values) for e in data: c[int(e.getclass())] += 1 print "Instancje: ", len(data), "total", for i in range(len(data.domain.classVar.values)): print ",", c[i], "klasa", data.domain.classVar.values[i], print print "Atrybuty ciągłe:" for a in range(len(data.domain.attributes)): if data.domain.attributes[a].varType == orange.VarTypes.Continuous: d = 0.; n = 0 for e in data: if not e[a].isSpecial(): d += e[a] n += 1 print " %s, mean=%3.2f" % (data.domain.attributes[a].name, d/n) print "\nAtrybuty nominalne:" cont = orange.DomainContingency(data) for a in data.domain.attributes: if a.varType == orange.VarTypes.Discrete: print " %s:" % a.name for v in range(len(a.values)): sum = 0 for cv in cont[a][v]: sum += cv print " %s, łącznie %d, %s" % (a.values[v], sum, cont[a][v]) printWersja skryptu dla biblioteki Orange Data Mining 2.7x: labODM2_v27.py