W tym tygodniu przedstawiamy metody oceny przydatności poszczególnych atrybutów w procesach eksploracji danych. W trakcie laboratorium zapoznajemy się z podstawowymi metodami identyfikacji atrybutów, które są nieprzydatne w zadaniach eksploracji. Będziemy badać zmienność wewnątrz atrybutów, korelację między atrybutami, a także będziemy wybierać zbiory atrybutów charakteryzujące się najbardziej pożądanymi cechami.
Read CSV
do wczytania zbioru smsspamcollection.csv (separatorem jest tabulacja, pamiętaj, aby tekst SMS-a oznaczyć jako typ tekstowy podczas importu). Zapoznaj się z opisem zbioru danychProcess Documents from Data
, wewnątrz którego wykonaj tokenizację dokumentów i pozostaw jedynie tokeny o długości 3 znaki lub dłuższe (operatory Tokenize
i Filter Tokens by Length
)Process Documents
zaznacz opcję add meta information aby zachować zmienną celuWeight by Information Gain
aby zobaczyć, jakie słowa charakteryzują się największą entropią. Wykorzystaj operator Select by Weights
do ograniczenia zbioru do 100 najważniejszych słów.Remove Useless Attributes
i usuń te atrybuty, w których zmienność wartości jest poniżej 0.01. Uruchom przepływ, a następnie sprawdź czułość metody na zmianę progu zmienności.File
i wczytaj zbiór danych Tic-Tac-Toe
(jeśli Twoja instalacja nie ma tego zbioru danych, to pobierz go z UCI Machine Learning Repository). Zapoznaj się z opisem zbioru danych. Jeśli korzystasz z wersji ściągniętej z UCI MLR, to pamiętaj, że musisz zmienić rozszerzenie na *.csv
. Nie zapomnij aby wskazać, że atrybut class
jest zmienną celu (pełni rolę target
).Edit Domain
i zmień nazwy atrybutów, zgodnie z opisem zbioru danych. Rank
. Porównaj rankingi atrybutów wygenerowane przez miary ReliefF, Information Gain (entropia) i Chi-squared. Znajdź 3 najważniejsze pozycje w grze decydujące o wygranej.Twój ostateczny przepływ powinien wyglądać następująco:
Termin realizacji zadania samodzielnego to piątek, 10 kwietnia, godz. 12:00. Sposób realizacji zadania jest opisany w notatniku. Za zrealizowanie ćwiczenia przyznaję 10 XP
from sklearn import datasets from sklearn.feature_selection import RFE from sklearn.tree import DecisionTreeRegressor # scikit-learn korzysta z generatora liczb pseudolosowych z NumPy # więc w celu uzyskania reprodukowalności ustawiamy globalny stan import numpy as np np.random.seed(42) # utworzenie zbioru danych X, y = sklearn.datasets.make_classification( n_samples=1000, n_features=20, n_informative=5, n_redundant=5, n_repeated=5, shuffle=False, ) estimator = DecisionTreeRegressor() selector = RFE(estimator, 5, step=0.1, verbose=1) selector = selector.fit(X, y) # wyświetlenie informacji które atrybuty zostały wybrane print(selector.support_)
Fitting estimator with 20 features. Fitting estimator with 18 features. Fitting estimator with 16 features. Fitting estimator with 14 features. Fitting estimator with 12 features. Fitting estimator with 10 features. Fitting estimator with 8 features. Fitting estimator with 6 features. [False True True False False False False False True False False False True False False False True False False False]
print(f'Number of informative features selected: {sum(selector.support_[:5])}') print(f'Number of redundant features selected: {sum(selector.support_[5:10])}') print(f'Number of repeated features selected: {sum(selector.support_[10:15])}')
Number of informative features selected: 2 Number of redundant features selected: 2 Number of repeated features selected: 1