Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
Всем привет, меня зовут Питер~
Scikit-learn — очень известная библиотека машинного обучения Python, которая широко используется в таких областях науки о данных, как статистический анализ и моделирование машинного обучения.
- Моделирование непобедимо: пользователи могут реализовывать различные модели обучения с учителем и без учителя с помощью scikit-learn.
- Разнообразные функции: в то же время sklearn также можно использовать для предварительной обработки данных, разработки функций, сегментации набора данных, оценки модели и т. д.
- Богатые данные: встроенные богатые наборы данных, такие как: Титаник, Ирис и т. Д., Больше не беспокойтесь о данных.
В этой статье кратко и быстро рассказывается об использовании scikit-learn.Для получения дополнительной информации см. официальный сайт:
- Использование встроенного набора данных
- Сегментация набора данных
- Нормализация и стандартизация данных
- введите код
- Моделирование 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