Вводное руководство для няни по артефакту машинного обучения Scikit-Learn

машинное обучение

Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер

Всем привет, меня зовут Питер~

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

  • Моделирование непобедимо: пользователи могут реализовывать различные модели обучения с учителем и без учителя с помощью scikit-learn.
  • Разнообразные функции: в то же время sklearn также можно использовать для предварительной обработки данных, разработки функций, сегментации набора данных, оценки модели и т. д.
  • Богатые данные: встроенные богатые наборы данных, такие как: Титаник, Ирис и т. Д., Больше не беспокойтесь о данных.

В этой статье кратко и быстро рассказывается об использовании scikit-learn.Для получения дополнительной информации см. официальный сайт:

  1. Использование встроенного набора данных
  2. Сегментация набора данных
  3. Нормализация и стандартизация данных
  4. введите код
  5. Моделирование 6 шагов

Scikit-learn использует God Graph

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

SCI kit-learn.org/stable/Pictures…

Установить

Что касается установки scikit-learn, рекомендуется устанавливать с помощью anaconda, не беспокоясь о различных проблемах конфигурации и среды. Конечно, вы также можете установить напрямую с помощью pip:

pip install scikit-learn

Генерация набора данных

sklearn имеет встроенные отличные наборы данных, такие как: данные Iris, данные о ценах на жилье, данные Titanic и т. д.

import pandas as pd
import numpy as np

import sklearn 
from sklearn import datasets  # 导入数据集

Категориальные данные - данные радужной оболочки

# iris数据
iris = datasets.load_iris()
type(iris)

sklearn.utils.Bunch

Как именно выглядят данные радужной оболочки? В каждом встроенном массиве данных содержится много информации.

Приведенные выше данные могут быть сгенерированы в DataFrame, который мы хотим видеть, и также может быть добавлена ​​зависимая переменная:

Данные регрессии - цены на жилье в Бостоне

Свойства, на которые мы ориентируемся:

  • data
  • цель, имена_целей
  • feature_names
  • filename

Также возможно сгенерировать DataFrame:

Три способа генерировать данные

способ 1

#调用模块
from sklearn.datasets import load_iris
data = load_iris()

#导入数据和标签
data_X = data.data
data_y = data.target 

способ 2

from sklearn import datasets
loaded_data = datasets.load_iris()  # 导入数据集的属性

#导入样本数据
data_X = loaded_data.data
# 导入标签
data_y = loaded_data.target

способ 3

# 直接返回
data_X, data_y = load_iris(return_X_y=True)

Сводка по использованию набора данных

from sklearn import datasets  # 导入库

boston = datasets.load_boston()  # 导入波士顿房价数据
print(boston.keys())  # 查看键(属性)     ['data','target','feature_names','DESCR', 'filename'] 
print(boston.data.shape,boston.target.shape)  # 查看数据的形状 
print(boston.feature_names)  # 查看有哪些特征 
print(boston.DESCR)  # described 数据集描述信息 
print(boston.filename)  # 文件路径 

сегментация данных

# 导入模块
from sklearn.model_selection import train_test_split
# 划分为训练集和测试集数据
X_train, X_test, y_train, y_test = train_test_split(
  data_X, 
  data_y, 
  test_size=0.2,
  random_state=111
)

# 150*0.8=120
len(X_train)

Нормализация данных и нормализация

from sklearn.preprocessing import StandardScaler  # 标准化
from sklearn.preprocessing import MinMaxScaler  # 归一化

# 标准化
ss = StandardScaler()
X_scaled = ss.fit_transform(X_train)  # 传入待标准化的数据

# 归一化
mm = MinMaxScaler()
X_scaled = mm.fit_transform(X_train)

введите код

Кейсы с официального сайта:SCI kit-learn.org/stable/Modu…

кодировать числа

кодировать строку

Случай моделирования

модуль импорта

from sklearn.neighbors import KNeighborsClassifier, NeighborhoodComponentsAnalysis  # 模型
from sklearn.datasets import load_iris  # 导入数据
from sklearn.model_selection import train_test_split  # 切分数据
from sklearn.model_selection import GridSearchCV  # 网格搜索
from sklearn.pipeline import Pipeline  # 流水线管道操作

from sklearn.metrics import accuracy_score  # 得分验证

Создание экземпляра модели

# 模型实例化
knn = KNeighborsClassifier(n_neighbors=5)

Обучите модель

knn.fit(X_train, y_train)
KNeighborsClassifier()

Прогноз набора тестов

y_pred = knn.predict(X_test)
y_pred  # 基于模型的预测值
array([0, 0, 2, 2, 1, 0, 0, 2, 2, 1, 2, 0, 1, 2, 2, 0, 2, 1, 0, 2, 1, 2,
       1, 1, 2, 0, 0, 2, 0, 2])

Проверка оценки

Два способа проверки оценки модели:

knn.score(X_test,y_test)
0.9333333333333333
accuracy_score(y_pred,y_test)
0.9333333333333333

поиск по сетке

Как искать параметры

from sklearn.model_selection import GridSearchCV

# 搜索的参数
knn_paras = {"n_neighbors":[1,3,5,7]}
# 默认的模型
knn_grid = KNeighborsClassifier()

# 网格搜索的实例化对象
grid_search = GridSearchCV(
	knn_grid, 
	knn_paras, 
	cv=10  # 10折交叉验证
)
grid_search.fit(X_train, y_train)
GridSearchCV(cv=10, estimator=KNeighborsClassifier(),
             param_grid={'n_neighbors': [1, 3, 5, 7]})
# 通过搜索找到的最好参数值
grid_search.best_estimator_ 
KNeighborsClassifier(n_neighbors=7)
grid_search.best_params_

Out[42]:

{'n_neighbors': 7}
grid_search.best_score_
0.975

Моделирование на основе результатов поиска

knn1 = KNeighborsClassifier(n_neighbors=7)

knn1.fit(X_train, y_train)
KNeighborsClassifier(n_neighbors=7)

Это видно из следующих результатов: эффект моделирования после поиска по сетке лучше, чем у модели без поиска по сетке.

y_pred_1 = knn1.predict(X_test)

knn1.score(X_test,y_test)
1.0
accuracy_score(y_pred_1,y_test)
1.0