Orange logo

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.

  • Uruchom program Orange Canvas
  • Wykorzystaj operator Paint Data do przygotowania przykładowego zbioru danych.
  • Otwórz w narzędziu Orange plik iris.tab i zapoznaj się z możliwościami wizualizacji danych oferowanymi przez Orange Data Mining: wyświetl zawartość pliku za pomocą operatora 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.
  • Przy użyciu operatora Data Sampler wybierz 10% danych i wyślij je do operatora Discretize, przetestuj poszczególne schematy dyskretyzacji.
  • Sprawdź działanie operatora Outliers, przy czym do tego celu wykorzystaj dane niewybrane przez Data Sampler.
  • Skorzystaj z operatora 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])
        print
Wersja skryptu dla biblioteki Orange Data Mining 2.7x: labODM2_v27.py

Zadanie - The Bridges of Trident

riverlands_map.jpg
Nadchodzi Zima. Musimy dokonać dokładnego spisu wszystkich mostów jakie w Riverlands stoją na każdej z trzech odnóg Tridentu. Maestrzy przygotowali wstępną listę mostów na Green Fork, Blue Fork i Red Fork, ale w chwili obecnej jest to tylko sucha lista. Twoim zadaniem jest przeanalizowanie tej listy i przygotowanie skryptu, który w sposób automatyczny dokona analizy i podsumowania danych.
  1. Zapoznaj się z opisem zbioru danych
  2. Przygotuj skrypt w języku Python który wyświetli podstawowe właściwości zbioru danych bridges.tab korzystając z biblioteki Orange Data Mining:
    • przykładowe instancje
    • listę wartości zmiennej celu i histogram zmiennej celu
    • liczbę, nazwy i typy atrybutów z podziałem na atrybuty ciągłe i dyskretne
    • wartości średnie (lub modalne) dla każdego atrybutu
    • liczbę brakujących wartości dla każdego atrybutu
    • przykład niewielkiej próbki instancji
    Do realizacji zadania możesz się posłużyć tutorialem
  3. Przygotowany skrypt prześlij na adres prowadzącego zajęcia (dostępny w zakładce Contact) do piątku, 1 kwietnia 2016, do godziny 22:00.