2017-12-27 18 views
0

ich an dem Iris-Datensatz als Teil der sklearn Datensätze suchen und wenn ich folgendes zuordnen:Was ist der Typ von load_iris in der Bibliothek "scikit-learn" in Python?

> iris = sklearn.datasets.load_iris() 

folgendes Schreiben gibt mir:

> type (iris) 
    <class 'tuple'> 

Was genau ist es durch eine Klasse bedeuten von Tupeln? Ich habe die Dokumentation zu lesen, aber es ist immer noch nicht klar zu mir, wie du

> iris.data 

und

> iris.target 

zugreifen können, aber wie kann man dann auch tun:

> iris.target[[10, 25, 50]] 

Kann jemand bitte Erklären Sie das genauer? Vielen Dank!

Antwort

0

Für sklearn 0.19.1 type(iris) kehrt:

In [126]: type(iris) 
Out[126]: sklearn.utils.Bunch 

Mal sehen, was es unter der Haube bedeutet:

In [127]: sklearn.utils.Bunch?? 
Init signature: sklearn.utils.Bunch(**kwargs) 
Source: 
class Bunch(dict): 
    """Container object for datasets 

    Dictionary-like object that exposes its keys as attributes. 

    >>> b = Bunch(a=1, b=2) 
    >>> b['b'] 
    2 
    >>> b.b 
    2 
    >>> b.a = 3 
    >>> b['a'] 
    3 
    >>> b.c = 6 
    >>> b['c'] 
    6 

    """ 

    def __init__(self, **kwargs): 
     super(Bunch, self).__init__(kwargs) 

    def __setattr__(self, key, value): 
     self[key] = value 

    def __dir__(self): 
     return self.keys() 

    def __getattr__(self, key): 
     try: 
      return self[key] 
     except KeyError: 
      raise AttributeError(key) 

    def __setstate__(self, state): 
     # Bunch pickles generated with scikit-learn 0.16.* have an non 
     # empty __dict__. This causes a surprising behaviour when 
     # loading these pickles scikit-learn 0.17: reading bunch.key 
     # uses __dict__ but assigning to bunch.key use __setattr__ and 
     # only changes bunch['key']. More details can be found at: 
     # https://github.com/scikit-learn/scikit-learn/issues/6196. 
     # Overriding __setstate__ to be a noop has the effect of 
     # ignoring the pickled __dict__ 
     pass 
File:   c:\users\max\anaconda3_5.0\envs\py36\lib\site-packages\sklearn\utils\__init__.py 
Type:   type 

In [128]: sklearn.__version__ 
Out[128]: '0.19.1' 

PS Ich hoffe, es hilft zu verstehen, was es Bit enthält besser

0

Der Typ (Iris) gibt sklearn.utils.Bunch zurück.

Aber es ist eigentlich ein Dict mit Keys als Daten, feature_names, Ziel, target_names

from sklearn.datasets import load_iris 
from sklearn.neighbors import KNeighborsClassifier 

iris=load_iris() 

features=iris['data'] #u can use iris.data 
label=iris['target'] #u can use iris.target 

model=KNeighborsClassifier(n_neighbors=1) 
model.fit(features,label) 

result=model.predict([[ 6.7, 2.5, 5.8, 1.8]]) 

hat u in der Code Iris sehen kann [ 'data'] gibt das Merkmale np Array mit Daten.

Die Iris ['target'] gibt das Array der Kategorie an, zu der sie gehören.

so das Iris-Dataset geladen von Sklearn ist ein dict enthält Features und Beschriftungen.