§
    qŠtj¸  ã                   óF  — d Z ddlmZmZ ddlmZmZ ddlmZ ddl	Z	ddl
ZddlmZ ddlmZ ddlmZmZmZmZ dd	lmZmZ dd
lmZmZ  eddd¬¦  «        Z eeedgdgdgdgdg eeddd¬¦  «        g eeddd¬¦  «        gdœd¬¦  «        ddddddddœd„¦   «         ZdS )a  Modified Olivetti faces dataset.

The original database was available from (now defunct)

    https://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html

The version retrieved here comes in MATLAB format from the personal
web page of Sam Roweis:

    https://cs.nyu.edu/~roweis/
é    )ÚIntegralÚReal)ÚPathLikeÚremove)ÚexistsN)Úloadmat)Úget_data_home)ÚRemoteFileMetadataÚ_fetch_remoteÚ_pkl_filepathÚ
load_descr)ÚBunchÚcheck_random_state)ÚIntervalÚvalidate_paramszolivettifaces.matz.https://ndownloader.figshare.com/files/5976027Ú@b612fb967f2dc77c9c62d3e1266e0c73d5fca46a4b8906c18e454d41af987794)ÚfilenameÚurlÚchecksumÚbooleanÚrandom_stateé   Úleft)Úclosedg        Úneither)Ú	data_homeÚshuffler   Údownload_if_missingÚ
return_X_yÚ	n_retriesÚdelayT)Úprefer_skip_nested_validationFé   g      ð?c                 ó  — t          | ¬¦  «        } t          | d¦  «        }t          |¦  «        sŸ|st          d¦  «        ‚t	          dt
          j        ›d| ›�¦  «         t          t
          | ||¬¦  «        }t          |¬¦  «        }	t          |¦  «         |	d         j
                             ¦   «         }
t          j        |
|d	¬
¦  «         ~	nt          j        |¦  «        }
t          j        |
¦  «        }
|
|
                     ¦   «         z
  }
|
|
                     ¦   «         z  }
|
                     d¦  «                             ddd¦  «        }
t          j        d„ t-          d¦  «        D ¦   «         ¦  «        }|rAt/          |¦  «        }|                     t3          |
¦  «        ¦  «        }|
|         }
||         }|
                     t3          |
¦  «        d¦  «        }t5          d¦  «        }|r||fS t7          ||
||¬¦  «        S )a  Load the Olivetti faces data-set from AT&T (classification).

    Download it if necessary.

    =================   =====================
    Classes                                40
    Samples total                         400
    Dimensionality                       4096
    Features            real, between 0 and 1
    =================   =====================

    Read more in the :ref:`User Guide <olivetti_faces_dataset>`.

    Parameters
    ----------
    data_home : str or path-like, default=None
        Specify another download and cache folder for the datasets. By default
        all scikit-learn data is stored in '~/scikit_learn_data' subfolders.

    shuffle : bool, default=False
        If True the order of the dataset is shuffled to avoid having
        images of the same person grouped.

    random_state : int, RandomState instance or None, default=0
        Determines random number generation for dataset shuffling. Pass an int
        for reproducible output across multiple function calls.
        See :term:`Glossary <random_state>`.

    download_if_missing : bool, default=True
        If False, raise an OSError if the data is not locally available
        instead of trying to download the data from the source site.

    return_X_y : bool, default=False
        If True, returns `(data, target)` instead of a `Bunch` object. See
        below for more information about the `data` and `target` objects.

        .. versionadded:: 0.22

    n_retries : int, default=3
        Number of retries when HTTP errors are encountered.

        .. versionadded:: 1.5

    delay : float, default=1.0
        Number of seconds between retries.

        .. versionadded:: 1.5

    Returns
    -------
    data : :class:`~sklearn.utils.Bunch`
        Dictionary-like object, with the following attributes.

        data: ndarray, shape (400, 4096)
            Each row corresponds to a ravelled
            face image of original size 64 x 64 pixels.
        images : ndarray, shape (400, 64, 64)
            Each row is a face image
            corresponding to one of the 40 subjects of the dataset.
        target : ndarray, shape (400,)
            Labels associated to each face image.
            Those labels are ranging from 0-39 and correspond to the
            Subject IDs.
        DESCR : str
            Description of the modified Olivetti Faces Dataset.

    (data, target) : tuple if `return_X_y=True`
        Tuple with the `data` and `target` objects described above.

        .. versionadded:: 0.22

    Examples
    --------
    >>> from sklearn.datasets import fetch_olivetti_faces
    >>> olivetti_faces = fetch_olivetti_faces()
    >>> olivetti_faces.data.shape
    (400, 4096)
    >>> olivetti_faces.target.shape
    (400,)
    >>> olivetti_faces.images.shape
    (400, 64, 64)
    )r   zolivetti.pkzz1Data not found and `download_if_missing` is Falsez downloading Olivetti faces from z to )Údirnamer    r!   )Ú	file_nameÚfacesé   )Úcompress)é�  é@   r+   r   é   r   c                 ó   — g | ]}|d z  ‘ŒS )é
   © )Ú.0Úis     ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/datasets/_olivetti_faces.pyú
<listcomp>z(fetch_olivetti_faces.<locals>.<listcomp>®   s   € Ð3Ð3Ð3 1�q˜B‘wÐ3Ð3Ð3ó    r*   éÿÿÿÿzolivetti_faces.rst)ÚdataÚimagesÚtargetÚDESCR)r	   r   r   ÚOSErrorÚprintÚFACESr   r   r   r   ÚTÚcopyÚjoblibÚdumpÚloadÚnpÚfloat32ÚminÚmaxÚreshapeÚ	transposeÚarrayÚranger   ÚpermutationÚlenr   r   )r   r   r   r   r   r    r!   ÚfilepathÚmat_pathÚmfiler'   r8   ÚorderÚfaces_vectorizedÚfdescrs                  r2   Úfetch_olivetti_facesrR   +   sø  € õP ¨	Ð2Ñ2Ô2€IÝ˜Y¨Ñ7Ô7€HÝ�(ÑÔð &Ø"ð 	OÝÐMÑNÔNÐNåˆ½E¼I¸I¸IÀyÀyÐQÑRÔRÐRÝ Ý˜9°	Àð
ñ 
ô 
ˆõ  (Ð+Ñ+Ô+ˆåˆxÑÔÐà�g”Ô ×%Ò%Ñ'Ô'ˆÝŒ�E˜8¨aÐ0Ñ0Ô0Ð0ØˆEå”˜HÑ%Ô%ˆõ ŒJ�uÑÔ€EØ�E—I’I‘K”KÑ€EØ	ˆU�YŠY‰[Œ[Ñ€EØ�MŠM˜-Ñ(Ô(×2Ò2°1°a¸Ñ;Ô;€EåŒXÐ3Ð3­¨c©
¬
Ð3Ñ3Ô3Ñ4Ô4€FØð Ý)¨,Ñ7Ô7ˆØ×(Ò(­¨U©¬Ñ4Ô4ˆØ�e”ˆØ˜”ˆØ—}’}¥S¨¡Z¤Z°Ñ4Ô4ÐåÐ,Ñ-Ô-€Fàð (Ø Ð'Ð'åÐ&¨u¸VÈ6ÐRÑRÔRÐRr4   )Ú__doc__Únumbersr   r   Úosr   r   Úos.pathr   r?   ÚnumpyrB   Úscipy.ior   Úsklearn.datasetsr	   Úsklearn.datasets._baser
   r   r   r   Úsklearn.utilsr   r   Úsklearn.utils._param_validationr   r   r<   ÚstrrR   r/   r4   r2   ú<module>r^      sä  ðð
ð 
ð #Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð ð ð ð ð ð ð 4Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eð 	ÐØ Ø8ØOð	ñ 	ô 	€ð €à˜8 TÐ*Ø�;Ø'Ð(Ø )˜{Ø �kØ�h˜x¨¨D¸Ð@Ñ@Ô@ÐAØ�(˜4  d°9Ð=Ñ=Ô=Ð>ðð ð #'ðñ ô ð ØØØØØØ
ðDSð DSð DSð DSñô ðDSð DSð DSr4   