「这是我参与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 | 含多种评价的分类报告