Добро пожаловать в сообщество Tencent Cloud +, чтобы получить больше обширной технической практики Tencent по галантерее ~
Эта статья написанаСинь Цзян ЮаньОпубликован вКолонка «Облако + сообщество»
вводить
Машинное обучение — это область изучения информатики, искусственного интеллекта и статистики. Машинное обучение фокусируется на обучении алгоритмов для изучения закономерностей и прогнозирования на основе данных. Машинное обучение особенно ценно, потому что оно позволяет нам использовать компьютеры для автоматизации процесса принятия решений.
В этом руководстве вы реализуете простой алгоритм машинного обучения на Python с помощью Scikit-learn, инструмента машинного обучения для Python. Вы будете использовать наивный байесовский (NB) классификатор в сочетании с базой данных информации об опухоли рака молочной железы, чтобы предсказать, является ли опухоль злокачественной или доброкачественной.
К концу этого руководства вы будете знать, как создать собственную модель машинного обучения с помощью Python. Синтаксис Python см. в Руководстве разработчика Tencent Cloud.Документация по разработке Python на китайском языке.
Подготовить
Для выполнения этого урока вам понадобятся:
- Собственная среда программирования Python 3
- Установите Jupyter Notebook в virtualenv. Блокноты Jupyter очень полезны при проведении экспериментов по машинному обучению. Вы можете легко протестировать и отладить свой код, запустив короткие блоки кода, и быстро увидеть результаты.
Шаг 1. Импортируйте Scikit-learn
Начнем с установки модуля Python Scikit-learn, одной из лучших и наиболее документированных библиотек машинного обучения для Python.
Чтобы начать наш проект кодирования, сначала активируйте нашу среду программирования Python 3. Убедитесь, что вы находитесь в том же каталоге, что и ваша среда, затем выполните следующую команду:
$ . my_env/bin/activate
После активации нашей среды программирования проверьте, установлен ли модуль Skkikit-learn:
(my_env) $ python -c "import sklearn"
Если sklearn установлен, эта команда будет выполнена без ошибок. Если он не установлен, вы увидите следующее сообщение об ошибке:
Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'sklearn'
Сообщение об ошибке указывает, что sklearn не установлен, поэтому используйте pip для загрузки библиотеки:
(my_env) $ pip install scikit-learn[alldeps]
После установки запустите Jupyter Notebook:
(my_env) $ jupyter notebook
В Jupyter создайте файл с именемML Tutorialновый блокнот Python. В первую ячейку Блокнота вводим модуль sklearn:
ML Tutorial
import sklearn
Ваш блокнот должен выглядеть так, как показано на рисунке ниже:
NotebookТеперь, когда мы импортировали sklearn в Notebook, мы можем начать работать с набором данных для нашей модели машинного обучения.
Шаг 2. Импорт набора данных Scikit-learn
Набор данных, который мы будем использовать в этом руководстве,База данных диагностики рака молочной железы Висконсина. Набор данных включает в себя различную информацию об опухолях рака молочной железы, излокачественныйилидоброкачественныйМетки категорий. В наборе данных 569 на 569 опухолей.Примерили данные, и включает около 30Атрибутыили информацию об особенностях, такую как радиус опухоли, текстура, гладкость и площадь.
Используя этот набор данных, мы построим модель машинного обучения, чтобы использовать информацию об опухоли, чтобы предсказать, является ли опухоль злокачественной или доброкачественной.
В Scikit-learn установлены различные наборы данных, которые мы можем загрузить в Python и включить нужный нам набор данных. Импортируйте и загрузите набор данных:
ML Tutorial
...
from sklearn.datasets import load_breast_cancer
# Load dataset
data = load_breast_cancer()
данныеПеременнаяпредставляетСловарьРаботает так же, как объект Python. Ключами словаря являются категориальные имена меток (target_names), фактические метки (target), имена атрибутов/функций (feature_names) и атрибуты (данные).
Атрибуты являются важной частью любого классификатора. Атрибуты фиксируют важные характеристики характера данных. Учитывая, что метки, которые мы пытаемся предсказать, являются злокачественными по сравнению с доброкачественными, возможными полезными атрибутами являются размер, радиус и текстура опухоли.
Создайте новые переменные и назначьте данные для каждого набора важной информации:
ML Tutorial
...
# Organize our data
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']
Теперь у нас есть список каждого набора информации. Чтобы лучше понять наш набор данных, давайте посмотрим на наши данные, выведя метку нашего класса, метку первого экземпляра данных, имя нашей функции и значение функции первого экземпляра данных:
ML Tutorial
...
# Look at our data
print(label_names)
print(labels[0])
print(feature_names[0])
print(features[0])
Если вы запустите код, вы увидите следующие результаты:
выходной результатКак показано, имя нашего классазлокачественныйидоброкачественный, который затем сопоставляется с двоичными значениями 0 и 1, где 0 представляет собой злокачественную опухоль, а 1 представляет собой доброкачественную опухоль. Таким образом, наш первый экземпляр данных — это злокачественная опухоль, котораясредний радиуссоставляет 1,79900000e+01.
Теперь, когда у нас загружены данные, мы можем использовать их для создания нашего классификатора машинного обучения.
Шаг 3. Организуйте данные в коллекции
Чтобы оценить производительность вашего классификатора, вы всегда должны тестировать свою модель на невидимых данных. Поэтому перед построением модели разбейте данные на две части:Обучающий наборитестовый набор.
Учебный набор можно использовать для обучения и оценки моделей на этапе разработки. Затем вы используете обученную модель, чтобы делать прогнозы на невидимом тестовом наборе. Такой подход дает вам представление о производительности и надежности вашей модели.
К счастью, в sklearn есть библиотека под названиемtrain_test_split()
функция, которая делит ваши данные на эти наборы. Импортируйте функцию, затем используйте ее для разделения данных:
ML Tutorial
...
from sklearn.model_selection import train_test_split
# Split our data
train, test, train_labels, test_labels = train_test_split(features,
labels,
test_size=0.33,
random_state=42)
Функция случайным образом разбивает данные, используя параметр test_size. В этом примере у нас теперь есть тестовый набор (тест), представляющий 33% исходного набора данных. Остальные данные (поезд) затем составляют обучающие данные. У нас также есть соответствующие метки для переменных train/test, т.е.train_labels
иtest_labels
.
Теперь мы можем перейти к обучению нашей первой модели.
Шаг 4. Постройте и оцените модель
Существует множество моделей машинного обучения, каждая из которых имеет свои преимущества и недостатки. В этом уроке мы сосредоточимся на простом алгоритме, который обычно хорошо работает в задачах бинарной классификации, а именноNaive Bayes (NB).
Сначала импортируйте модуль GaussianNB. затем используйтеGaussianNB()
функция для инициализации модели, затем используйтеgnb.fit()
Сопоставьте модель с данными для обучения модели:
ML Tutorial
...
from sklearn.naive_bayes import GaussianNB
# Initialize our classifier
gnb = GaussianNB()
# Train our classifier
model = gnb.fit(train, train_labels)
После того, как мы обучим модель, мы можем использовать обученную модель, чтобы делать прогнозы на нашем тестовом наборе, здесь мы используемpredict()
функция. Функция Predict() возвращает массив прогнозов для каждого экземпляра данных в тестовом наборе. Затем мы можем вывести наши прогнозы, чтобы увидеть, что определила модель.
Используйте функцию предсказания() с тестом для вывода результата:
ML Tutorial
...
# Make predictions
preds = gnb.predict(test)
print(preds)
Запустите код, и вы увидите следующие результаты:
прогнозировать выводКак видно из выходных данных Jupyter Notebook, функция Predict() возвращает массив нулей и единиц, которые представляют наши прогнозируемые значения для класса опухоли (злокачественная или доброкачественная).
Теперь, когда у нас есть прогнозы, давайте оценим производительность нашего классификатора.
Шаг 5 - Оцените точность модели
Используя массив меток реальных классов, мы можем сделать это, сравнив два массива (test_labelsvs.preds
) для оценки точности прогнозов модели. мы будем использоватьsklearn
функцияaccuracy_score()
для определения точности классификаторов машинного обучения.
ML Tutorial
...
from sklearn.metrics import accuracy_score
# Evaluate accuracy
print(accuracy_score(test_labels, preds))
Вы увидите следующие результаты:
Результаты точностиКак вы можете видеть на выходе, точность классификатора NB составляет 94,15%. Это означает, что классификатор правильно предсказал, была ли опухоль злокачественной или доброкачественной в 94,15% случаев. Эти результаты показывают, что наш набор признаков из 30 признаков является хорошим индикатором класса опухоли.
Вы успешно создали свой первый классификатор машинного обучения. Давайте положим всеimport
Операторы помещаются вверху блокнота или скрипта для реорганизации кода. Окончательная версия кода должна выглядеть так:
Учебник по машинному обучению
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# Load dataset
data = load_breast_cancer()
# Organize our data
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']
# Look at our data
print(label_names)
print('Class label = ', labels[0])
print(feature_names)
print(features[0])
# Split our data
train, test, train_labels, test_labels = train_test_split(features,
labels,
test_size=0.33,
random_state=42)
# Initialize our classifier
gnb = GaussianNB()
# Train our classifier
model = gnb.fit(train, train_labels)
# Make predictions
preds = gnb.predict(test)
print(preds)
# Evaluate accuracy
print(accuracy_score(test_labels, preds))
Теперь вы можете перейти к коду, чтобы посмотреть, сможете ли вы улучшить работу классификатора. Вы можете попробовать разные подмножества функций или даже совершенно разные алгоритмы.
в заключении
В этом руководстве вы узнали, как создать классификатор машинного обучения в Python. Теперь вы можете использовать Scikit-learn для загрузки данных, организации данных, обучения, прогнозирования и оценки классификаторов машинного обучения в Python. Шаги, описанные в этом руководстве, могут помочь вам упростить процесс работы с вашими собственными данными в Python и многое другое.машинное обучениеиискусственный интеллектДля получения соответствующих руководств вы можете посетить сообщество Tencent Cloud.
Ссылка: «Как создать классификатор машинного обучения на Python с помощью Scikit-learn»
вопросы и ответы
Какие математические основы необходимы для начала работы с машинным обучением?
Связанное Чтение
Отчет о безопасности | Тенденции грубой силы SSH: миграция с облачных платформ на устройства IoT
Эта статья была разрешена автором для публикации сообщества Tencent Cloud +, исходная ссылка: https://cloud.tencent.com/developer/article/1171081?fromSource=waitui.
Добро пожаловать в сообщество Tencent Cloud+ или подпишитесь на общедоступную учетную запись WeChat облачного сообщества (QcloudCommunity), чтобы как можно скорее получить больше массовой технической практики по сухим товарам~
Огромный технический практический опыт, все вСообщество Юнцзя!