机器学习——机器学习库(Sklearn)

475 阅读2分钟

「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

什么是sklearn库

Scikit-learn是基于NumPy、 SciPy和 Matplotlib的开源Python机器学习 包,它封装了一系列数据预处理、机器学习算法、模型选择等工具,是数 据分析师首选的机器学习工具包。 自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了, scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学 习算法。还包括了特征提取,数据处理和模型评估三大模块。

Sklearn库的用法

导入工具包:

from sklearn import datasets, preprocessing from sklearn.model_selection

import train_test_split from sklearn.linear_model 

import LinearRegression from sklearn.metrics 

import r2_score

加载数据:

Scikit-learn支持以NumPy的arrays对象、Pandas对象、SciPy的稀 疏 矩阵及其他可转换为数值型arrays的数据结构作为其输入,前提是 数据必须是数值型的

sklearn.datasets模块提供了一系列加载和获取著名数据集如鸢尾 花、波士顿房价、Olivetti人脸、MNIST数据集等的工具,也包括了一 些toy data如S型数据等的生成工具

from sklearn.datasets import load_iris 
iris = load_iris() 
X = iris.data 
y = iris.target

数据划分:

from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=12, stratify=y, test_size=0.3)

将完整数据集的70%作为训练集,30%作为测试集,并使得测试集和训练集 中各类别数据的比例与原始数据集比例一致(stratify分层策略),另外可通过设置 shuffle=True 提前打乱数据

数据预处理:

使⽤Scikit-learn进⾏数据标准化

from sklearn.preprocessing import StandardScaler
# Normalizer 归一化
# MinMaxScaler 最小最大标准化

特征选择:

from sklearn import feature_selection as fs 
fs.SelectKBest(score_func, k)
# 保留得分排名前k的特征

算法选择:

#from sklearn.linear_model import LinearRegression 选择逻辑回归算法
#构建模型实例 lr = LinearRegression(normalize=True) 
#训练模型 lr.fit(X_train, y_train) 
#作出预测 y_pred = lr.predict(X_test)

除却逻辑回归算法,还有许多监督学习算法和非监督学习算法。

例如:

使用决策树分类算法解决二分类问题, y_prob 为每个样本预测为 “0”和“1”类的概率

from sklearn.tree import DecisionTreeClassifier clf = DecisionTreeClassifier(max_depth=5) clf.fit(X_train, y_train) 
y_pred = clf.predict(X_test)
y_prob = clf.predict_proba(X_test)

评价指标:

sklearn.metrics模块包含了一系列用于评价模型的评分函数、损失函 数以及成对数据的距离度量函数。

from sklearn.metrics import accuracy_score 
accuracy_score(y_true, y_pred) 

对于测试集而言,y_test即是y_true,大部分函数都必须包含真实值 y_true和预测值y_pred

回归模型的评价指标

metrics.mean_absolute_error() 平均绝对误差MAE

metrics.mean_squared_error() 均方误差MSE

metrics.r2_score() | 决定系数R2

分类模型评价

metrics.accuracy_score() 正确率

metrics.precision_score() 各类精确率

metrics.f1_score() F1 值

metrics.log_loss() 对数损失或交叉熵损失

metrics.confusion_matrix 混淆矩阵

metrics.classification_report | 含多种评价的分类报告