2016-08-10 9 views
0

私はscikit-learnのドキュメントの型キャストexampleを読んでいます。scikit-learnのfitメソッドへの入力

私の質問は、fitメソッドへの入力として与えられたndarray操作についてです。質問

>>> 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'] 

(以下のコードを参照):clf.fit(iris.data, iris.target_names[iris.target])上記のコードではこの部分でiris.target_names[iris.target]よう動作は何ですか?

少数のより多くの情報:私は私の質問は、特定学ぶ-scikitが、numpyの操作の理解とは何かを持っていない理解

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') 

。私はnumpyのドキュメントを読んだが、これを自分で理解することはできなかった。どんな助けでも大歓迎です。ありがとう。

答えて

0

iris.targetは、その操作でindex arrayとして使用されます。

は、以下の配列を検討:インデックス0

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

を、それが 'A' を有する:インデックス0及び1で

arr[0] 
Out: 'a' 

、それは 'A' および 'B' を有する。

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

これらのインデックスは、重複を持っていることがあります。

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

例では、iris.targetはエンコードされたラベルの配列です。名前を取得するにはiris.target_namesのインデックスとしてiris.targetを使用します。これにより、それぞれの要素に対応する名前が与えられます。

+0

ありがとうございます!インデックス配列を使用した後の出力配列は 'iris.target_names'よりも大きかったので、最初は混乱しました。 – akilat90

関連する問題