Próbuję zrobić coś bardzo podobnego do tego previous question, ale napotkałem błąd. Mam dataframe pandy zawierającego funkcje i etykietę muszę zrobić konwersja do wysyłania cechy i zmienną etykiety do obiektu uczenia maszynowego:Konwertuj tablicę ciągu (kategorię) na tablicę int z pandasowej ramki danych
import pandas
import milk
from scikits.statsmodels.tools import categorical
potem mam:
trainedData=bigdata[bigdata['meta']<15]
untrained=bigdata[bigdata['meta']>=15]
#print trainedData
#extract two columns from trainedData
#convert to numpy array
features=trainedData.ix[:,['ratio','area']].as_matrix(['ratio','area'])
un_features=untrained.ix[:,['ratio','area']].as_matrix(['ratio','area'])
print 'features'
print features[:5]
##label is a string:single, touching,nuclei,dust
print 'labels'
labels=trainedData.ix[:,['type']].as_matrix(['type'])
print labels[:5]
#convert single to 0, touching to 1, nuclei to 2, dusts to 3
#
tmp=categorical(labels,drop=True)
targets=categorical(labels,drop=True).argmax(1)
print targets
Wyjście konsola daje pierwszy:
features
[[ 0.38846334 0.97681855]
[ 3.8318634 0.5724734 ]
[ 0.67710876 1.01816444]
[ 1.12024943 0.91508699]
[ 7.51749674 1.00156707]]
labels
[[single]
[touching]
[single]
[single]
[nuclei]]
spotkam wtedy następujący błąd:
Traceback (most recent call last):
File "/home/claire/Applications/ProjetPython/projet particule et objet/karyotyper/DAPI-Trainer02-MILK.py", line 83, in <module>
tmp=categorical(labels,drop=True)
File "/usr/local/lib/python2.6/dist-packages/scikits.statsmodels-0.3.0rc1-py2.6.egg/scikits/statsmodels/tools/tools.py", line 206, in categorical
tmp_dummy = (tmp_arr[:,None]==data).astype(float)
AttributeError: 'bool' object has no attribute 'astype'
Czy można przekonwertować zmienną kategorii "type" w ramce danych na int? "type" może przyjmować wartości "pojedyncze", "dotykające", "jądra", "pyły" i muszę konwertować z wartościami int, takimi jak 0, 1, 2, 3.
myślę, że klasa Factor został zmieniony, ponieważ ten post został wykonany. Kiedy próbuję uruchomić opublikowany kod, pojawia się błąd stwierdzający, że czynnik oczekuje 3 argumentów i 2 zostały podane. Patrząc na dokumentację dla Factor, tego oczekuje konstruktor: {{{Factor (self, labels, levels, name = None)}}}. Ze swojego posta założyłem, że etykiety i poziomy zostały automatycznie obliczone z serii, ale wydaje się, że czynnik oczekuje, że zostaną one przekazane do współczynnika. – CadentOrange
Czynnik został przemianowany na kategoryczny w pandach 0.8.0 (6/2012) – smci