From sklearn import datasets error

os: mac os yosemite python: 2.7.6 -- 64-bit installed: numpy,skipy,matplotlib,nose I get the following error. >>> from sklearn.datasets import load_iris Traceback (most recent call l...

os: mac os yosemite
python: 2.7.6 — 64-bit
installed: numpy,skipy,matplotlib,nose

I get the following error.

>>> from sklearn.datasets import load_iris

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named sklearn.datasets

$ pip install --user --install-option="--prefix=" -U scikit-learn
Requirement already up-to-date: scikit-learn in /Library/Python/2.7/site-packages
Cleaning up...

Someone help me please!

asked Nov 14, 2014 at 14:40

pollseed's user avatar

pollseedpollseed

1011 gold badge2 silver badges5 bronze badges

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
or export PYTHONPATH=$PYTHONPATH:’path where your installed modules are’

to find out the path where your modules are installed, try to run pip install again and it will output the location

answered Mar 4, 2015 at 16:55

JackNova's user avatar

JackNovaJackNova

3,8915 gold badges30 silver badges48 bronze badges

1

Ran into a similar problem recently and spent too much time googling it while the error was simple: my file was named sklearn.py It might be why your import is not working.

answered Feb 20, 2018 at 14:13

Mehdi Bettiche's user avatar

When installing on Ubuntu Linux you have to have to install dependencies first using apt-get, then use a pip install otherwise the normal pip install of scikit-learn won’t work properly. See below:

Step 1: Make sure apt-get is updated

sudo apt-get update

Step 2: Install dependencies

sudo apt-get install build-essential python-dev python-setuptools python-numpy python-scipy libatlas-dev libatlas3gf-base

Step 3: pip install Scikit Learn

pip install —user —install-option=»—prefix=» -U scikit-learn

Hope this helps!

answered Apr 3, 2015 at 19:49

Morgan Linton's user avatar

I had the same problem. I solved just writing:

from sklearn import datasets

data = datasets.load_iris()

answered Oct 8, 2019 at 10:26

Caterina De Franco's user avatar

sklearn I was sure that you have installed.
So, after you create a symbolic link the sklearn to Python interpreter, it went well.

ln -s 'path of sklearn' 'path of python interpreter'

answered Nov 15, 2014 at 2:20

pollseed's user avatar

pollseedpollseed

1011 gold badge2 silver badges5 bronze badges

Are you sure you’re running the right Python? It may be that scikit-learn is only installed for Python3, and not Python 2, so you may need to run python3 my_code.py instead of just python my_code.py.

answered Sep 20, 2022 at 9:27

Pro Q's user avatar

Pro QPro Q

4,1144 gold badges39 silver badges86 bronze badges

I think this is a sklearn bug in that sklearn is pulling numpy warning filters off the stack when importing.

numpy normally filters these Cython compatibility warnings: https://github.com/numpy/numpy/pull/432/files

In [1]: import numpy as np
In [2]: np.warnings.filters
Out[2]: 
[('ignore',
  re.compile(r'numpy.ufunc size changed', re.IGNORECASE),
  Warning,
  re.compile(r''),
  0),
 ('ignore',
  re.compile(r'numpy.dtype size changed', re.IGNORECASE),
  Warning,
  re.compile(r''),
  0),
 ('always', None, numpy.lib.polynomial.RankWarning, None, 0),
 ('ignore',
  re.compile(r'sys.exc_clear', re.IGNORECASE),
  DeprecationWarning,
  re.compile(r'threading'),
  0),
 ('ignore', None, DeprecationWarning, None, 0),
 ('ignore', None, PendingDeprecationWarning, None, 0),
 ('ignore', None, ImportWarning, None, 0),
 ('ignore', None, BytesWarning, None, 0)]

However, if I import almost any sklearn subpackage, these filters are getting pulled off the filters list:

In [3]: import sklearn.covariance
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/stats/_continuous_distns.py:24: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility
  from . import vonmises_cython
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/stats/_continuous_distns.py:24: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
  from . import vonmises_cython
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/stats/stats.py:188: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility
  from ._rank import rankdata, tiecorrect
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/stats/stats.py:188: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
  from ._rank import rankdata, tiecorrect
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/interpolate/interpolate.py:28: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility
  from . import _ppoly
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/interpolate/interpolate.py:28: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
  from . import _ppoly
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/spatial/__init__.py:90: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility
  from .ckdtree import *
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/spatial/__init__.py:90: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
  from .ckdtree import *
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/spatial/__init__.py:91: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility
  from .qhull import *
/Users/mb312/.virtualenvs/numpy-help/lib/python2.7/site-packages/scipy/spatial/__init__.py:91: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility
  from .qhull import *

In [4]: np.warnings.filters
Out[4]: 
[('ignore', None, sklearn.utils.validation.NonBLASDotWarning, None, 0),
 ('always', None, sklearn.utils.validation.DataConversionWarning, None, 0)]

This does not occur importing sklearn or sklearn.base, but does for at least utils, cluster, covariance, datasets, metrics, svm. I haven’t tested the other subpackages.

The root cause for modulenotfounderror: no module named ‘sklearn.datasets.samples_generator‘ is samples_generator module replacement in scikit-learn. Apart from it, Another most common reason behind the same error is bad practice for developers to import any Python statement. Well, I know two lines about root causes are not sufficient to fix the issue. Hence let’s understand the same in a detailed way.

modulenotfounderror: no module named ‘sklearn.datasets.samples_generator’ ( Root Cause and Fix ) –

Well in both of the most possible root causes, module replacement in the latest version is more frequent. So let’s explore it first.

Case 1: Internal code structure change

Actually, if you are using this importing statement in the recent version of sckit-learn –

from sklearn.datasets.samples_generator import make_blobs

modulenotfounderror no module named 'sklearn.datasets.samples_generator'

modulenotfounderror no module named ‘sklearn.datasets.samples_generator’

Then you will encounter this error for sure. Because this samples_generator explicitly is not available in scikit-learn in recent versions. So we better call the above statement in correct way like below –

from sklearn.datasets import make_blobs

correct -no module named 'sklearn.datasets.samples_generator'

correct -no module named ‘sklearn.datasets.samples_generator’

Case 2: Syntax error ( Not Valid for recent scikit-learn module)

Sometimes The syntax we write for importing any python module is typically wrong. IN order to differentiate between incorrect and correct ones. Let’s take the practical example –

Incorrect –

import sklearn.datasets.samples_generator

Here we directly import all together but that is a syntax error in python. The funny fact is most of us do it like this including me as well. Well, now let’s see the correct way for this.

from sklearn.datasets.samples_generator import make_blobs

But this will run in the lower version of scikit-learn because as I explained in the above section samples_generator no longer exists separately. But In some scenarios, where we are running the lower version for scikit-learn, we can use the above way of importing.

Bonus Tip –

Do not forget to install scikit-learn again if the error persists even after retrying these tricks. Use any of the below package managers to install the module.

pip install -U scikit-learn

Or

conda install -c anaconda scikit-learn

Thanks

Data Science Learner Team

Join our list

Subscribe to our mailing list and get interesting stuff and updates to your email inbox.

We respect your privacy and take protecting it seriously

Thank you for signup. A Confirmation Email has been sent to your Email Address.

Something went wrong.

не может использовать scikit-learn — «AttributeError: объект« модуль »не имеет атрибута …»

Я пытаюсь следовать этот учебник scikit-learn (линейная регрессия).

Я установил scikit через pip install -U scikit-learn, я использую Python 2.7 и Ubuntu 13.04

Когда я пытаюсь запустить первые строки кода, я получаю сообщение об ошибке, и это происходит каждый раз, когда я пытаюсь запустить что-либо с помощью scikit-learn.

import pylab as pl
import numpy as np
from sklearn import datasets, linear_model

# Load the diabetes dataset
diabetes = datasets.load_diabetes()

Я получаю следующее:

AttributeError: 'module' object has no attribute 'load_diabetes'

Когда я пытаюсь:

regr = linear_model.LinearRegression()

Я получил :

AttributeError: 'module' object has no attribute 'LinearRegression'

Мне кажется, что либо я неправильно использую пакет (но я скопировал из их туториала), либо я что-то не так установил (но пакет загружается успешно).

Может кто поможет?

10 ответы

Другая причина этой проблемы (не проблема с кодом OP), но та, которая меня достала, заключается в том, что python не импортирует автоматически подпакеты или модули, если это явно не сделано разработчиком пакета. А также sklearn не импортирует автоматически свои подпакеты, поэтому, если у вас есть

import sklearn 
diabetes = sklearn.datasets.load_diabetes()

тогда вы получите

AttributeError: module 'sklearn' has no attribute 'datasets'

Это очень вводящее в заблуждение сообщение об ошибке, потому как sklearn есть подпакет под названием datasets — вам просто нужно импортировать его явно

import sklearn.datasets 
diabetes = sklearn.datasets.load_diabetes()

Создан 13 июн.

ОК .. Наконец-то нашел .. Публикую здесь на случай, если кто-то столкнется с той же проблемой.

У меня была другая версия sklearn (вероятно, из-за установки apt-get) в другом каталоге. Он как-то частично установился, но загрузился именно он.

Обязательно посмотрите на свой pip вывод скрипта, чтобы увидеть, где он устанавливает пакет, и когда вы загружаете его из python, проверьте sklearn.__path__ посмотреть, откуда он берется.

ответ дан 26 мая ’13, 07:05

Это сработало для меня:

from sklearn.datasets import make_moons

ответ дан 30 мая ’16, 08:05

Я столкнулся с той же проблемой, но потом понял, что имя моей программы было sklearn.py . В случае, если кто-либо увидит этот тип ошибки, также проверьте, что имя вашей программы не совпадает с именем пакета, иначе вы получите module object has no attribute error, как в вопросе.

Создан 01 янв.

Похоже, что пакет, загруженный из sklearn, был пакетом из дистрибутивной библиотеки, а не установленным из pip. Решение для меня (debian) состояло в том, чтобы переустановить пакет pip. Это можно проверить с помощью:

import sklearn
sklearn.__path__

Если это показывает /usr/lib/python/, то это использование дистрибутива.

Проблема решилась удалением и переустановкой sklearn.

 $ pip uninstall scikit-learn
 $ pip install scikit-learn

Создан 21 янв.

Я столкнулся с аналогичной проблемой и этим сообщением с:

«*** AttributeError: объект GaussianProcessRegressor не имеет атрибута _y_train_mean»

когда я обновил scikit-learn, загрузил маринованную модель и попытался предсказать ее использование. Мне просто нужно было переобучить модель, и это решило мою проблему.

Создан 26 июля ’18, 19:07

Попробуй это:

from sklearn.datasets import load_diabetes
diabetes = load_diabetes()

Создан 24 июля ’18, 13:07

У меня была аналогичная проблема, и я попытался устранить неполадки на основе этой статье Ник Коглан, поскольку ни один из предложенных ответов, похоже, не решил мою проблему.

Я попал в так называемую «Двойная ловушка импорта«. что у меня было что-то вроде:

import sklearn
import sklearn.preprocessing

удалив один из импортов и сбросив рабочее пространство, мне удалось решить проблему.

ответ дан 27 авг.

Я решил эту проблему, вставив следующие строки кода:

import sklearn 
from sklearn.linear_model import LinearRegression

Создан 11 фев.

Я назвал файл python как sklearn.py, что было причиной этого ATTRIBUTEERROR со мной. Переименовал это и разрешил.

ответ дан 07 апр.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками

python-2.7
scikit-learn

or задайте свой вопрос.

Вопрос:

os: mac os yosemite
python: 2.7.6 – 64-бит
установлен: numpy, skipy, matplotlib, нос

Я получаю следующую ошибку.

>>> from sklearn.datasets import load_iris

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sklearn.datasets

$ pip install --user --install-option="--prefix=" -U scikit-learn
Requirement already up-to-date: scikit-learn in /Library/Python/2.7/site-packages
Cleaning up...

Кто-нибудь мне поможет!

Ответ №1

export PYTHONPATH = $PYTHONPATH:/usr/local/lib/python2.7/site-packages
или экспортировать PYTHONPATH = $PYTHONPATH: ‘путь, где установлены ваши модули’

чтобы узнать путь, в котором установлены ваши модули, попробуйте снова запустить установку pp и выведет местоположение

Ответ №2

При установке на Ubuntu Linux вам нужно сначала установить зависимости, используя apt-get, а затем использовать установку pip, иначе обычная установка scikit-learn не будет работать должным образом. См. Ниже:

Шаг 1. Убедитесь, что apt-get обновлен.

Обновление sudo apt-get

Шаг 2. Установка зависимостей

sudo apt-get install build-essential python-dev python-setuptools python-numpy python-scipy libatlas-dev libatlas3gf-base

Шаг 3: выберите программу Scikit Learn

pip install –user –install-option = “- prefix =” -U scikit-learn

Надеюсь, это поможет!

Ответ №3

В последнее время возникла аналогичная проблема и потратил слишком много времени на поиск в Google, хотя ошибка была простой: мой файл был назван sklearn.py Возможно, ваш импорт не работает.

Ответ №4

sklearn Я был уверен, что вы установили.
Итак, после создания символической ссылки sklearn на интерпретатор Python, она прошла хорошо.

ln -s 'path of sklearn' 'path of python interpreter'

Ответ №5

Проблема здесь может заключаться в том, как вы импортируете пакет.
Вместо импорта, например,

from sklearn.datasets import load_iris

попробуйте это

from sklearn import datasets
iris_data = datasets.load_iris()

Это помогло мне надеяться, что это поможет.

Ответ №6

У меня такая же проблема. Я решил просто написать:

from sklearn import datasets

data = datasets.load_iris()

Библиотека Scikit-Learn предоставляет чистые датасеты, которые вы можете использовать при построении моделей машинного обучения. Они поставляются вместе с Scikit-Learn. Вам не нужно ничего скачивать. С помощью всего нескольких строк кода вы будете иметь готовые для работы данные.

Наличие готовых датасетов является огромным преимуществом, потому что вы можете сразу приступить к созданию моделей, не тратя время на получение, очистку и преобразование данных — на что специалисты по данным тратят много времени.

Даже после того, как вся подготовительная работа выполнена, применение выборок Scikit-Learn поначалу может показаться вам немного запутанным. Не волнуйтесь, через несколько минут вы точно узнаете, как использовать датасеты, и встанете на путь исследования мира искусственного интеллекта. В этой статье предполагается, что у вас установлены python, scikit-learn, pandas и Jupyter Notebook (или вы можете воспользоваться Google Collab). Давайте начнем.

Scikit-Learn предоставляет семь наборов данных, которые они называют игровыми датасетами. Не дайте себя обмануть словом «игровой». Эти выборки довольно объемны и служат хорошей отправной точкой для изучения машинного обучения (далее ML). Вот несколько примеров доступных наборов данных и способы их использования:

  • Цены на жилье в Бостоне — используйте ML для прогнозирования цен на жилье на основе таких атрибутов, как количество комнат, уровень преступности в городе.
  • Датасет диагностики рака молочной железы (Висконсин) — используйте ML для диагностики рака как доброкачественного (не распространяется на остальную часть тела) или злокачественного (распространяется).
  • Распознавание вина — используйте ML для определения типа вина по химическим свойствам.

В этой статье мы будем работать с “Breast Cancer Wisconsin” (рак молочной железы, штат Висконсин) датасетом. Мы импортируем данные и разберем, как их читать. В качестве бонуса мы построим простую модель машинного обучения, которая сможет классифицировать сканированные изображения рака как злокачественные или доброкачественные.

Чтобы узнать больше о предоставленных выборках, нажмите здесь для перехода на документацию Scikit-Learn.

Как импортировать модуль datasets?

Доступные датасеты можно найти в sklearn.datasets. Давайте импортируем необходимые данные. Сначала мы добавим модуль datasets, который содержит все семь выборок.

from sklearn import datasets

У каждого датасета есть соответствующая функция, используемая для его загрузки. Эти функции имеют единый формат: «load_DATASET()», где DATASET — названием выборки. Для загрузки набора данных о раке груди мы используем load_breast_cancer(). Точно так же при распознавании вина мы вызовем load_wine(). Давайте загрузим выбранные данные и сохраним их в переменной data.

data = datasets.load_breast_cancer()

До этого момента мы не встретили никаких проблем. Но упомянутые выше функции загрузки (такие как load_breast_cancer()) не возвращают данные в табличном формате, который мы привыкли ожидать. Вместо этого они передают нам объект Bunch.

Не знаете, что такое Bunch? Не волнуйтесь. Считайте объект Bunch причудливым аналогом словаря от библиотеки Scikit-Learn.

Давайте быстро освежим память. Словарь — это структура данных, в которой данные хранятся в виде ключей и значений. Думайте о нем как о книге с аналогичным названием, к которой мы привыкли. Вы ищете интересующее вас слово (ключ) и получаете его определение (значение). У программистов есть возможность делать ключи и соответствующие значения какими угодно (могут быть словами, числами и так далее).

Например, в случае хранения персональных контактов ключами являются имена, а значениями — телефонные номера. Таким образом, словарь в Python не ограничивается его типичной репрезентацией, но может быть применен ко всему, что вам нравится.

Что в нашем Bunch-словаре?

Предоставленный Sklearn словарь Bunch — достаточно мощный инструмент. Давайте узнаем, какие ключи нам доступны.

Получаем следующие ключи:

  • data — это необходимые для предсказания данные (показатели, полученные при сканировании, такие как радиус, площадь и другие) в массиве NumPy.
  • target — это целевые данные (переменная, которую вы хотите предсказать, в данном случае является ли опухоль злокачественной или доброкачественной) в массиве NumPy.

Значения этих двух ключей предоставляют нам необходимые для обучения данные. Остальные ключи (смотри ниже) имеют пояснительное предназначение. Важно отметить, что все датасеты в Scikit-Learn разделены на data и target. data представляет собой показатели, переменные, которые используются моделью для тренировки. target включает в себя фактические метки классов. В нашем случае целевые данные — это один столбец, в котором опухоль классифицируется как 0 (злокачественная) или 1 (доброкачественная).

  • feature_names — это названия показателей, другими словами, имена столбцов в data.
  • target_names — это имя целевой переменной или переменных, другими словами, название целевого столбца или столбцов.
  • DESCR — сокращение от DESCRIPTION, представляет собой описание выборки.
  • filename — это путь к файлу с данными в формате CSV.

Чтобы посмотреть значение ключа, вы можете ввести data.KEYNAME, где KEYNAME — интересующий ключ. Итак, если мы хотим увидеть описание датасета:

Вот небольшая часть полученного результата (полная версия слишком длинная для добавления в статью):

.. _breast_cancer_dataset:

Breast cancer wisconsin (diagnostic) dataset
--------------------------------------------

**Data Set Characteristics:**

    :Number of Instances: 569

    :Number of Attributes: 30 numeric, predictive attributes and the class

    :Attribute Information:
        - radius (mean of distances from center to points on the perimeter)
        - texture (standard deviation of gray-scale values)
        - perimeter
        - area
        - smoothness (local variation in radius lengths)
        - compactness (perimeter^2 / area - 1.0)
        - concavity (severity of concave portions of the contour)
        - concave points (number of concave portions of the contour)
        - symmetry
        - fractal dimension ("coastline approximation" - 1)
...

Вы также можете узнать информацию о выборке, посетив документацию Scikit-Learn. Их документация намного более читабельна и точна.

Работа с датасетом

Теперь, когда мы понимаем, что возвращает функция загрузки, давайте посмотрим, как можно использовать датасет в нашей модели машинного обучения. Прежде всего, если вы хотите изучить выбранный набор данных, используйте для этого pandas. Вот так:

# импорт pandas
import pandas as pd
# Считайте DataFrame, используя данные функции
df = pd.DataFrame(data.data, columns=data.feature_names)
# Добавьте столбец "target" и заполните его данными.
df['target'] = data.target
# Посмотрим первые пять строк
df.head()

mean radius mean texture mean perimeter mean area mean smoothness mean compactness mean concavity mean concave points mean symmetry mean fractal dimension worst texture worst perimeter worst area worst smoothness worst compactness worst concavity worst concave points worst symmetry worst fractal dimension target
0 17.99 10.38 122.80 1001.0 0.11840 0.27760 0.3001 0.14710 0.2419 0.07871 17.33 184.60 2019.0 0.1622 0.6656 0.7119 0.2654 0.4601 0.11890 0
1 20.57 17.77 132.90 1326.0 0.08474 0.07864 0.0869 0.07017 0.1812 0.05667 23.41 158.80 1956.0 0.1238 0.1866 0.2416 0.1860 0.2750 0.08902 0
2 19.69 21.25 130.00 1203.0 0.10960 0.15990 0.1974 0.12790 0.2069 0.05999 25.53 152.50 1709.0 0.1444 0.4245 0.4504 0.2430 0.3613 0.08758 0
3 11.42 20.38 77.58 386.1 0.14250 0.28390 0.2414 0.10520 0.2597 0.09744 26.50 98.87 567.7 0.2098 0.8663 0.6869 0.2575 0.6638 0.17300 0
4 20.29 14.34 135.10 1297.0 0.10030 0.13280 0.1980 0.10430 0.1809 0.05883 16.67 152.20 1575.0 0.1374 0.2050 0.4000 0.1625 0.2364 0.07678 0

Вы загрузили обучающую выборку в Pandas DataFrame, которая теперь полностью готова к изучению и использованию. Чтобы действительно увидеть возможности этого датасета, запустите:


RangeIndex: 569 entries, 0 to 568
Data columns (total 31 columns):
 #   Column                   Non-Null Count  Dtype  
---  ------                   --------------  -----  
 0   mean radius              569 non-null    float64
 1   mean texture             569 non-null    float64
 2   mean perimeter           569 non-null    float64
 3   mean area                569 non-null    float64
 4   mean smoothness          569 non-null    float64
 5   mean compactness         569 non-null    float64
 6   mean concavity           569 non-null    float64
 7   mean concave points      569 non-null    float64
 8   mean symmetry            569 non-null    float64
 9   mean fractal dimension   569 non-null    float64
 10  radius error             569 non-null    float64
 11  texture error            569 non-null    float64
 12  perimeter error          569 non-null    float64
 13  area error               569 non-null    float64
 14  smoothness error         569 non-null    float64
 15  compactness error        569 non-null    float64
 16  concavity error          569 non-null    float64
 17  concave points error     569 non-null    float64
 18  symmetry error           569 non-null    float64
 19  fractal dimension error  569 non-null    float64
 20  worst radius             569 non-null    float64
 21  worst texture            569 non-null    float64
 22  worst perimeter          569 non-null    float64
 23  worst area               569 non-null    float64
 24  worst smoothness         569 non-null    float64
 25  worst compactness        569 non-null    float64
 26  worst concavity          569 non-null    float64
 27  worst concave points     569 non-null    float64
 28  worst symmetry           569 non-null    float64
 29  worst fractal dimension  569 non-null    float64
 30  target                   569 non-null    int32  
dtypes: float64(30), int32(1)
memory usage: 135.7 KB

Несколько вещей, на которые следует обратить внимание:

  • Нет пропущенных данных, все столбцы содержат 569 значений. Это избавляет нас от необходимости учитывать отсутствующие значения.
  • Все типы данных числовые. Это важно, потому что модели Scikit-Learn не принимают качественные переменные. В реальном мире, когда получаем такие переменные, мы преобразуем их в числовые. Датасеты Scikit-Learn не содержат качественных значений.

Следовательно, Scikit-Learn берет на себя работу по очистке данных. Эти наборы данных чрезвычайно удобны. Вы получите удовольствие от изучения машинного обучения, используя их.

Обучение на датесете из sklearn.datasets

Наконец, самое интересное. Далее мы построим модель, которая классифицирует раковые опухоли как злокачественные и доброкачественные. Это покажет вам, как использовать данные для ваших собственных моделей. Мы построим простую модель K-ближайших соседей.

Во-первых, давайте разделим выборку на две: одну для тренировки модели — предоставление ей данных для обучения, а вторую — для тестирования, чтобы посмотреть, насколько хорошо модель работает с данными (результаты сканирования), которые она раньше не видела.

X = data.data
y = data.target
# разделим данные с помощью Scikit-Learn's train_test_split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y)

Это дает нам два датасета — один для обучения и один для тестирования. Приступим к тренировке модели.

from sklearn.neighbors import KNeighborsClassifier
logreg = KNeighborsClassifier(n_neighbors=6)
logreg.fit(X_train, y_train)
logreg.score(X_test, y_test)

Получили на выходе 0.923? Это означает, что модель точна на 92%! Всего за несколько минут вы создали модель, которая классифицирует результаты сканирования опухолей с точностью 90%. Конечно, в реальном мире все сложнее, но это хорошее начало.

Ноутбук с кодом вы можете скачать здесь.

Вы многому научитесь, пытаясь построить модели с использованием datasets из Scikit-Learn. Удачного обучения искусственному интеллекту!

Jul-08-2019, 05:17 PM
(This post was last modified: Jul-08-2019, 05:17 PM by zaki424160.)

I am a python beginner and using Pycharm as IDE and Python 3.7.3. I am using an existing code when I run the code gives me an error
the code is

from tqdm import tqdm

from sklearn.datasets import fetch_mldata
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn import svm
import numpy as np

import seaborn as sns
import matplotlib.pyplot as plt

import depmeas
import feature_select

if __name__ == '__main__':
    NUM_CV = 3
    RANDOM_SEED = 123
    MAX_ITER = 1000

    leuk = fetch_mldata('leukemia', transpose_data=True)
    X = leuk['data']
    y = leuk['target']

    # split the data for testing
    (X_train, X_test, y_train, y_test) = train_test_split(X, y, test_size=0.3, random_state=RANDOM_SEED)

    # perform feature selection
    num_features_to_select = 25
    K_MAX = 1000
    estimator = depmeas.mi_tau
    n_jobs = -1
    feature_ranking_idxs = feature_select.feature_select(X_train, y_train,
                                                         num_features_to_select=num_features_to_select, K_MAX=K_MAX,
                                                         estimator=estimator, n_jobs=n_jobs)
    num_selected_features = len(feature_ranking_idxs)
    # for each feature, compute the accuracy on the test data as we add features
    mean_acc = np.empty((num_selected_features,))
    std_acc = np.empty((num_selected_features,))
    for ii in tqdm(range(num_selected_features), desc='Computing Classifier Performance...'):
        classifier = svm.SVC(random_state=RANDOM_SEED, max_iter=MAX_ITER)
        X_test_in = X_test[:, feature_ranking_idxs[0:ii + 1]]
        scores = cross_val_score(classifier, X_test_in, y_test, cv=NUM_CV, n_jobs=-1)

        mu = scores.mean()
        sigma_sq = scores.std()

        mean_acc[ii] = mu
        std_acc[ii] = sigma_sq

    x = np.arange(num_selected_features) + 1
    y = mean_acc
    yLo = mean_acc - std_acc / 2.
    yHi = mean_acc + std_acc / 2.

    plt.plot(x, y)
    plt.fill_between(x, yLo, yHi, alpha=0.2)
    plt.grid(True)
    plt.title('Leukemia Dataset Feature Selectionn Total # Features=%d' % (X.shape[1]))
    plt.xlabel('# Selected Features')
    plt.ylabel('SVC Classifier Accuracy')
    plt.show()

Error:

C:UserspcPycharmProjectsMymrmrTestvenvScriptspython.exe C:/Users/pc/PycharmProjects/MymrmrTest/feature_selection_test.py C:UserspcPycharmProjectsMymrmrTestvenvlibsite-packagessklearnexternalsjoblib__init__.py:15: DeprecationWarning: sklearn.externals.joblib is deprecated in 0.21 and will be removed in 0.23. Please import this functionality directly from joblib, which can be installed with: pip install joblib. If this warning is raised when loading pickled models, you may need to re-serialize those models with scikit-learn 0.21+. warnings.warn(msg, category=DeprecationWarning) C:UserspcPycharmProjectsMymrmrTestvenvlibsite-packagessklearnutilsdeprecation.py:85: DeprecationWarning: Function fetch_mldata is deprecated; fetch_mldata was deprecated in version 0.20 and will be removed in version 0.22. Please use fetch_openml. warnings.warn(msg, category=DeprecationWarning) C:UserspcPycharmProjectsMymrmrTestvenvlibsite-packagessklearnutilsdeprecation.py:85: DeprecationWarning: Function mldata_filename is deprecated; mldata_filename was deprecated in version 0.20 and will be removed in version 0.22. Please use fetch_openml. warnings.warn(msg, category=DeprecationWarning) Traceback (most recent call last): File "C:/Users/pc/PycharmProjects/MymrmrTest/feature_selection_test.py", line 34, in <module> leuk = fetch_mldata('leukemia', transpose_data=True) File "C:UserspcPycharmProjectsMymrmrTestvenvlibsite-packagessklearnutilsdeprecation.py", line 86, in wrapped return fun(*args, **kwargs) File "C:UserspcPycharmProjectsMymrmrTestvenvlibsite-packagessklearndatasetsmldata.py", line 126, in fetch_mldata mldata_url = urlopen(urlname) File "C:UserspcAppDataLocalProgramsPythonPython37liburllibrequest.py", line 222, in urlopen return opener.open(url, data, timeout) File "C:UserspcAppDataLocalProgramsPythonPython37liburllibrequest.py", line 531, in open response = meth(req, response) File "C:UserspcAppDataLocalProgramsPythonPython37liburllibrequest.py", line 641, in http_response 'http', request, response, code, msg, hdrs) File "C:UserspcAppDataLocalProgramsPythonPython37liburllibrequest.py", line 569, in error return self._call_chain(*args) File "C:UserspcAppDataLocalProgramsPythonPython37liburllibrequest.py", line 503, in _call_chain result = func(*args) File "C:UserspcAppDataLocalProgramsPythonPython37liburllibrequest.py", line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 502: Bad Gateway Process finished with exit code 1

Posts: 818

Threads: 1

Joined: Mar 2018

Reputation:
111

Executing

fetch_mldata('leukemia', transpose_data=True)

I got the following error:

Error:

http.client.RemoteDisconnected: Remote end closed connection without response

Probably something wrong with the data source?!

ThomasL

Minister of Silly Walks


Posts: 361

Threads: 5

Joined: Jun 2019

Reputation:
64

As of version 0.20, sklearn deprecates fetch_mldata function and adds fetch_openml instead.

fetch_mldata() is deprecated

Понравилась статья? Поделить с друзьями:

Читайте также:

  • From scipy import stats error
  • From pyqt5 import uic ошибка
  • From pyqt5 import qtwidgets error
  • From psycopg2 import error
  • From mysql connector import connect error modulenotfounderror no module named mysql

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии