Pytanie W scikit nauczyć się, jak radzić sobie z danymi zmieszanymi z wartością numeryczną i nominalną?


Wiem, że obliczenia w nauce scikit opierają się na NumPy, więc wszystko jest macierzą lub macierzą.

W jaki sposób pakiet obsługuje dane mieszane (wartości liczbowe i nominalne)?

Na przykład produkt może mieć atrybut "kolor" i "cena", gdzie kolor jest nominalny, a cena ma wartość liczbową. Zauważam, że istnieje model o nazwie "DictVectorizer" do numerowania danych nominalnych. Na przykład dwa produkty to:

products = [{'color':'black','price':10}, {'color':'green','price':5}]

A wynik z "DictVectorizer" może być:

[[1,0,10],
 [0,1,5]]

Jeśli istnieje dużo różnych wartości dla atrybutu "kolor", matryca byłaby bardzo rzadka. Długie funkcje obniżą wydajność niektórych algorytmów, takich jak drzewa decyzyjne.

Czy istnieje sposób na wykorzystanie wartości nominalnej bez potrzeby tworzenia fałszywych kodów?


12
2017-07-27 15:26


pochodzenie


Warto zauważyć, że Weka Instancje przechowuje wartości nominalne jako liczby zmiennoprzecinkowe odpowiadające indeksowi nominalnemu w definicji atrybutu. Możesz po prostu zastosować tę samą strategię, aby wygenerować numeryczny zestaw danych do użytku z nauką scikit. - Wesley Tansey
Wielkie dzięki za poszerzenie mojej wiedzy. - xueliang liu


Odpowiedzi:


Klasa DecisionTree w nauce scikit będzie potrzebować refaktoryzacji, aby skutecznie radzić sobie z kategorycznymi cechami o wysokiej liczności (a może nawet z naturalnie rzadkimi danymi, takimi jak wektory TF-IDF).

Nikt na tym nie pracuje AFAIK.


6
2017-07-27 15:49



wielkie dzięki. W scikit, czy istnieje jakiś sprytny sposób na refaktoryzację w porównaniu z operacją ręczną? - xueliang liu
Moja odpowiedź stwierdza, że ​​obecny stan rzeczy jest ograniczeniem obecnego wdrażania drzewa decyzyjnego w nauce scikit. Nie ma łatwego rozwiązania, które znam, aby usunąć to ograniczenie. Nie rozumiem, co nazywacie "operacją ręczną". - ogrisel