Сегодня я исследовал Scikit – Учите Библиотека и создали проект ноутбука, чтобы пройти некоторые основы и попробуйте создать модель машинного обучения. SCIKIT-SULL – это огромная библиотека, и требует много практики и разведки, чтобы получить об этом. Я следовал некоторым учебным пособиям и статьям, чтобы попробовать создать простой классификатор модели, чтобы выяснить, как она работает. Это выглядело немного запугивать для меня Но я решил создать базовый рабочий процесс в ноутбуке Jupyter, чтобы я мог использовать его в качестве ссылки, когда я решаю погрузиться глубоко в домену ML и Data Data.
Scikit-Surve – популярная библиотека Python для изучения машины. Scikit-Suarn может обработать данные, предоставляемые ему, и создают модели обучения машин для изучения шаблонов в данных и предоставляют прогнозы, используя его инструменты.
Почему Scikit – учись?
- Построен сверху Numpy и Matplotlib библиотек
- Имеет тонны встроенных моделей машин
- Много методов для оценки моделей машинного обучения
- Легко понять и Хорошо спроектированная API
Обычно машинное обучение может быть немного подавляющим, поскольку он включает в себя сложные алгоритмы и статистику для анализа данных. Scikit – узнайте резонацию этой сложности и облегчает создание моделей и обучать их без необходимости знать о математике и статистике.
Вот тетрадь, которую я создал сегодня. Ссылка на репозиторий GitHub – https://github.com/arindamdawn/jupyter_notebooks.
Эта ноутбука охватывает некоторые основы удивительной библиотеки Python Scikit-Suart. Некоторые из важных случаев использования библиотеки были перечислены в этом ноутбуке, который можно использовать в качестве чит-листа для справки.
Некоторые из охваченных тем:
- Получать данные готов
- Выбор соответствующего алгоритма/оценки для конкретной проблемы
- Соответствовать модели/алгоритму, чтобы использовать его, чтобы сделать прогнозы на данные
- Оценка модели
- Улучшить модель
- Сохранение загрузки обученной модели
Получать данные готов
Данные, используемые для этого проекта, будут набор данных о заболевании сердца, доступные из https://www.kaggle.com/ronitf/heart-disease-uci.
import pandas as pd import numpy as np heart_disease = pd.read_csv('data/heart.csv') heart_disease.head()
0 | 3 | 63 | 1 | 1 | 233 | 1 | 0 | 0 | 1 | 2.3 | 0 | 150 | 145 | 0 |
0 | 2 | 37 | 0 | 1 | 250 | 2 | 0 | 0 | 1 | 3.5 | 1 | 187 | 130 | 1 |
0 | 1 | 41 | 0 | 0 | 204 | 2 | 0 | 2 | 1 | 1.4 | 0 | 172 | 130 | 2 |
0 | 1 | 56 | 0 | 1 | 236 | 2 | 0 | 2 | 1 | 0.8 | 1 | 178 | 120 | 3 |
0 | 0 | 57 | 0 | 0 | 354 | 2 | 1 | 2 | 1 | 0.6 | 1 | 163 | 120 | 4 |
Цель состоит в том, чтобы предсказать на основе вышеуказанных данных, имеет ли у пациента болезнь сердца или нет. цель столбец определяет результат, а другие столбцы называются Особенности
# Create Features Matrix (X) X = heart_disease.drop('target', axis=1) # Create Labels (Y) y = heart_disease['target']
Выберите подходящую модель/оценку для проблемы
Для этой проблемы мы будем использовать RandomForestClassifier Модель форма Sklenn, которая представляет собой классификационную модель машины обучения.
from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier() clf.get_params() # lists the hyperparameters
{'bootstrap': True, 'ccp_alpha': 0.0, 'class_weight': None, 'criterion': 'gini', 'max_depth': None, 'max_features': 'auto', 'max_leaf_nodes': None, 'max_samples': None, 'min_impurity_decrease': 0.0, 'min_impurity_split': None, 'min_samples_leaf': 1, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'n_estimators': 100, 'n_jobs': None, 'oob_score': False, 'random_state': None, 'verbose': 0, 'warm_start': False}
Установите модель к учебным данным
На этом этапе модель разделена на обучение и тестирование данных
# fit the model to data from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.2) # Means 20% of the data will be used as testing data
clf.fit(X_train, y_train);
# make prediction y_label = clf.predict(np.array([0,2,3,4]))
y_preds = clf.predict(X_test) y_preds
array([1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1], dtype=int64)
y_test.head()
72 1 116 1 107 1 262 0 162 1 Name: target, dtype: int64
Оценить модель
На этом шаге Модель в оценении в обучении данных и тестовых данных
clf.score(X_train, y_train)
1.0
clf.score(X_test, y_test)
0.7704918032786885
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score print(classification_report(y_test, y_preds))
precision recall f1-score support 0 0.77 0.71 0.74 28 1 0.77 0.82 0.79 33 accuracy 0.77 61 macro avg 0.77 0.77 0.77 61 weighted avg 0.77 0.77 0.77 61
print(confusion_matrix(y_test, y_preds))
[[20 8] [ 6 27]]
print(accuracy_score(y_test, y_preds))
0.7704918032786885
Улучшить модель
Этот шаг включает в себя улучшение модели, чтобы получить более точные результаты
# Try different amount of n_estimators np.random.seed(42) for i in range(1, 100, 10): print(f'Trying model with {i} estimators') clf = RandomForestClassifier(n_estimators=i).fit(X_train, y_train) print(f'Model accuracy on test set: {clf.score(X_test, y_test) * 100:.2f}%') print('')
Trying model with 1 estimators Model accuracy on test set: 72.13% Trying model with 11 estimators Model accuracy on test set: 83.61% Trying model with 21 estimators Model accuracy on test set: 78.69% Trying model with 31 estimators Model accuracy on test set: 78.69% Trying model with 41 estimators Model accuracy on test set: 75.41% Trying model with 51 estimators Model accuracy on test set: 75.41% Trying model with 61 estimators Model accuracy on test set: 75.41% Trying model with 71 estimators Model accuracy on test set: 73.77% Trying model with 81 estimators Model accuracy on test set: 73.77% Trying model with 91 estimators Model accuracy on test set: 75.41%
Сохраните модель и загрузите ее
Будет использовать Парил Библиотека из Python, чтобы сохранить модель
import pickle pickle.dump(clf, open('random_forest_model_1.pkl', 'wb')) #load the model loaded_model = pickle.load(open('random_forest_model_1.pkl','rb')) loaded_model.score(X_test, y_test)
0.7540983606557377
Это все на сегодня. Поскольку машинное обучение и наука о данных – сама по себе океан, я решил посмотреть в нее более подробно, как после того, как после того, как после того, как после того, как после того, как после того, как будьте более искусными с его инструментами и концепциями поделитесь своим опытом в качестве постов и проектов в блоге. Для оставшихся двух частей этой проблемы я хотел бы исследовать такие домены, как тестирование автоматизации с Python, используя Selenium и создать еще один пост на компиляции ресурсов Python.
Иметь отличный!
Оригинал: “https://dev.to/arindamdawn/30-days-of-python-day-28-ml-data-science-ii-2739”