2016-08-10 1 views
0

Ich lese die Scikit-lernen-Dokumentation Typ Casting example.Eingabe für die Fit-Methode in scikit-lernen

Meine Frage betrifft eine ndarray-Operation, die als Eingabe für die fit-Methode angegeben wird. (Siehe den Code unten)

>>> from sklearn import datasets 
>>> from sklearn.svm import SVC 
>>> iris = datasets.load_iris() 
>>> clf = SVC() 
>>> clf.fit(iris.data, iris.target) 
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, 
    decision_function_shape=None, degree=3, gamma='auto', kernel='rbf', 
    max_iter=-1, probability=False, random_state=None, shrinking=True, 
    tol=0.001, verbose=False) 

>>> list(clf.predict(iris.data[:3])) 
[0, 0, 0] 

>>> clf.fit(iris.data, iris.target_names[iris.target]) 
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, 
    decision_function_shape=None, degree=3, gamma='auto', kernel='rbf', 
    max_iter=-1, probability=False, random_state=None, shrinking=True, 
    tol=0.001, verbose=False) 

>>> list(clf.predict(iris.data[:3])) 
['setosa', 'setosa', 'setosa'] 

Frage: In diesem Teil in dem obigen Code clf.fit(iris.data, iris.target_names[iris.target]), was ist der Betrieb als iris.target_names[iris.target] ausgeführt?

Ein paar weiteren Informationen:

iris.target_names 
array(['setosa', 'versicolor', 'virginica'], 
     dtype='|S10') 

iris.target 
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
     1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) 

iris.target_names[iris.target] 
array(['setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 'setosa', 
    'setosa', 'setosa', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'versicolor', 
    'versicolor', 'versicolor', 'versicolor', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica', 'virginica', 'virginica', 
    'virginica', 'virginica', 'virginica'], 
    dtype='|S10') 

ich meine Frage verstehe nicht Scikit-Learn spezifisch, sondern hat etwas mit dem Verständnis von numpy Operationen zu tun. Ich habe die Dokumentation gelesen, konnte das aber selbst nicht herausfinden. Jede Hilfe wird sehr geschätzt. Vielen Dank.

Antwort

0

iris.target wird als index array in diesem Vorgang verwendet.

Betrachten Sie die folgende Anordnung:

arr = np.array(['a', 'b', 'c']) 
arr 
Out: 
array(['a', 'b', 'c'], 
     dtype='<U1') 

bei Index 0, hat es 'a':

arr[0] 
Out: 'a' 

bei Index 0 und 1 ist, hat es 'a' und 'b':

arr[[0, 1]] 
Out: 
array(['a', 'b'], 
     dtype='<U1') 

Diese Indizes können Duplikate haben:

arr[[0, 1, 0]] 
Out: 
array(['a', 'b', 'a'], 
     dtype='<U1') 

In Ihrem Beispiel ist iris.target ein Array codierter Beschriftungen. Um ihre Namen zu erhalten, verwenden Sie iris.target als Index für iris.target_names, so dass Sie die entsprechenden Namen für jedes Element erhalten.

+0

Danke! Es war zunächst verwirrend, da das Ausgabearray nach der Verwendung des Indexierungsarrays größer als die 'iris.target_names' war. – akilat90

Verwandte Themen