Scikit-learn 快速入门篇

Sklearn 简介

scikit-learn (sklearn) 是 Python 中用于机器学习的最流行的库之一。它提供了一系列有效的算法和工具,涵盖各种机器学习任务,包括:

  • 分类
  • 回归
  • 聚类
  • 降维
  • 模型选择
  • 数据预处理

Sklearn 六大模块

  1. 分类:预测离散类别
    1. 算法: KNN, 随机森林 逻辑回归 朴素贝叶斯 GBDT XGboost LightGBM
    2. 应用: 垃圾邮件检测,图像识别
  2. 回归:预测连续值
    1. 算法: 线性回归 Lasso回归 决策树回归 随机森林回归 XGboost回归
    2. 应用: 房价预测,时间序列预测
  3. 聚类:将相似对象自动分组
    1. 算法: k-Means, spectral clustering, mean-shift,基于层次聚类 基于密度聚类
    2. 应用: 客户细分;将数据分成相似的组。
  4. 降维:减少数据的维度以提高效率
    1. 算法: 因子分析 PCA ICA LDA, 属性降维
    2. 应用: 可视化;减少数据的特征维度,以简化问题并提高计算效率
  5. 模型选择:比较和选择最佳模型
    1. 模型: Metrics Scoring模型得分 Grid search 网格搜索 Cross Validation 交叉验证 Hyper-Parameters 超参数选择 Validation curves 模型验证曲线
    2. 目标: 通过参数调整提高精度
  6. 数据预处理:准备和清理数据以进行建模
    1. 算法: Standardization标准化 Scaling Features归一化 Non-linear transformation非线性转化Gaussian distribution高斯分布转化 Normalization正则化 Encoding categorical features类别性编码处理
    2. 应用: 把输入数据转换为机器学习算法可用的数据

快速了解Sklearn库

英文版Sklearn官方网址:scikit-learn: machine learning in Python — scikit-learn 1.4.1 documentation
中文版Sklearn官方网址:scikit-learn中文社区

代码实现:

from sklearn import datasets
from sklearn.datasets import load_iris
#查看库的模块
print("查看库的模块:",dir(sklearn))
#查看模块中的方法和类
print("查看模块中的方法和类:",dir(sklearn.datasets))
#模块中包含的类和方法的详细信息:参数、返回值和功能描述
print("模块中包含的类和方法的详细信息:参数、返回值和功能描述:",sklearn.datasets.load_iris)

Sklearn 库中的模块、类、函数

1.数据模块(Data Modules):

  1. sklearn.datasets:包含示例数据集,如Iris、Digits等。
  2. sklearn.datasets.fetch_openml:用于从OpenML获取数据集。
  3. sklearn.datasets.fetch_lfw_people:用于获取LFW人脸数据集

2.数据处理模块(Data Preprocessing):

  1. sklearn.preprocessing:提供特征缩放、标准化、编码、缺失值处理等功能。
  2. sklearn.impute:用于填充缺失数据的模块。
  3. sklearn.feature_selection:包括特征选择方法,帮助选择最重要的特征。
  4. sklearn.decomposition:包含降维方法,如主成分分析(PCA)和因子分析。
  5. sklearn.model_selection.train_test_split:用于将数据集分割为训练集和测试集。

3.回归模块(Regression):

  1. sklearn.linear_model:包含线性回归、岭回归、Lasso回归等线性模型。
  2. sklearn.svm:支持向量机(SVM)用于回归任务。
  3. sklearn.neighbors:k-近邻(KNN)回归方法。

4.分类模块(Classification):

  1. sklearn.linear_model:逻辑回归、线性判别分析等用于分类的线性模型。
  2. sklearn.svm:支持向量机(SVM)用于分类任务。
  3. sklearn.neighbors:k-近邻(KNN)分类方法。
  4. sklearn.tree:决策树分类器。
  5. sklearn.ensemble:随机森林、AdaBoost、梯度提升等集成学习方法。

5.聚类模块(Clustering):

  1. sklearn.cluster:包括K均值、DBSCAN、层次聚类等聚类算法。
  2. sklearn.cluster.KMeans:K均值聚类
  3. sklearn.cluster.AgglomerativeClustering:层次聚类
  4. sklearn.cluster.DBSCAN:基于密度的聚类方法,可以识别具有相似密度的数据点
  5. sklearn.cluster.SpectralClustering:谱聚类,数据之间的相似度矩阵

6.降维模块(Dimensionality Reduction):

  1. sklearn.decomposition:主成分分析(PCA)、独立成分分析(ICA)等降维方法。
  2. sklearn.decomposition.PCA:主成分分析是一种线性降维方法
  3. sklearn.decomposition.FastICA:独立成分,从混合信号中分离出原始信号

7.模型评估模块(Model Evaluation):

  1. sklearn.metrics:包括各种模型评估指标,如准确率、F1分数、ROC曲线等。
  2. sklearn.model_selection:提供交叉验证、参数搜索和数据集分割的工具。

8.模型保存模块(Model Saving):

  1. sklearn.externals.joblib:用于模型保存和加载的工具。

其他,集成学习模块  :

  1. sklearn.ensemble: 这个模块包括集成学习方法,如随机森林、梯度提升、AdaBoost等。

 Sklearn 常见方法:

  1. fit(): 用于训练机器学习模型。
  2. predict(): 用于进行预测。
  3. transform(): 对数据进行变换,如特征工程。
  4. score(): 评估模型性能。
  5. GridSearchCV(): 用于网格搜索交叉验证以调优模型参数。
  6. cross_val_score(): 执行交叉验证并返回评分。
  7. train_test_split(): 将数据集分割为训练集和测试集。
  8. confusion_matrix(): 计算混淆矩阵,用于分类问题的性能评估。

机器学习流程

  • 问题定义

    1. 明确定义所要解决的问题
    2. 需求分析,业务理解,梳理问题并定义,让需求方确认
  • 数据准备

    1.获取数据:模块数据,自制数据,公开数据

        (1)模块自带的数据集

from sklearn import datasets
dir(datasets)

        sklearn 库载入数据

from sklearn import datasets
iris = datasets.load_iris()# 载入数据

         sklearn 自带经典数据集

数据集名称描述类型维度
load_bostonBoston房屋价格回归506*13
fetch_california_housing加州住房回归20640*9
load_diabetes糖尿病回归442*10
load_digits手写字分类1797*64
load_breast_cancer乳腺癌分类、聚类(357+212)*30
load_iris鸢尾花分类、聚类(50*3)*4
load_wine葡萄酒分类(59+71+48)*13

        (2)自制数据集

        (3)公开数据集(网站和论文)

                1.Kaggle网址

                2.UCI数据集网址

                3.论文中数据Papers with Code - The latest in Machine Learning

 

        2.分析数据:描述性统计,统计特征

1.data.head(); data.tail()查看数据。

2.data.info()查看数据的整体信息,数据维度shape,数据类型dtypes,是否有空值。

3.data.describe()查看数据的基本统计信息,包括均值、方差、最大值、最小值等。

4.corr()函数计算变量之间的成对相关性。

        3.分析数据:数据可视化

        数据可视化是通过图表、图形和可视化工具将数据呈现出来,以帮助人们更好地理解数据、发现模式和趋势。

图表类型:

1.条形图(Bar Chart):用于比较不同类别的数据。

2.折线图(Line Chart):用于显示数据随时间的变化。

3.散点图(Scatter Plot):用于展示两个变量之间的关系。

4.饼图(Pie Chart):用于显示不同部分占整体的比例。

5.热力图(Heatmap):用于呈现矩阵数据的关联和分布。

6.箱线图(Box Plot):用于显示数据分布的中位数、四分位数和离群值。

7.直方图(Histogram):用于展示数据的分布情况。

        4.数据清洗:缺失,重复,异常

        处理数据中的异常值、缺失值、空值、重复值以及其他不规范的数据是数据预处理的关键步骤,以确保数据质量和可用性。

1.缺失:删除缺失值,空值,data.dropna(inplace = True)
2.重复:data.drop_duplicates(inplace = True)
3.异常:
    1.识别异常值:异常值通常是与其他数据点明显不同的值,可能是输入错误、测量错误或其他原因引起的。箱线图可以了解数据的异常值和分布的离散程度。
    2.选择处理方法:通常的处理方法。
    3.删除异常值:可以将异常值从数据集中删除,但要谨慎使用,因为可能会损失信息。
    4.替换异常值:你可以将异常值替换为合理的值,例如使用中位数、均值或其他合适的统计值。
    5.标记异常值:你可以将异常值进行标记,以后可以根据需要进一步处理。

        5.特征处理:特征缩放,特征选择,归一化,标准化

1.在训练模型之前,通常需要对数据进行预处理,以确保数据的质量和一致性。
2.标准化 (standardization):每个维度的特征减去该特征均值,除以该维度的标准差。
3.归一化 (MinMaxScaler):每个维度的特征减去该特征最小值,除以该特征的最大值与最小值之差。

Scikit-learn进行数据变换

预处理操作库名称
标准化sklearn.preprocessing.StandardScaler
归一化sklearn.preprocessing.MinMaxScaler

        6.数据拆分:数据拆分为训练集,验证集,测试集

1.数据分为三个部分:训练集、验证集和测试集。
2.训练集用来训练模型,验证集用于模型的超参数调整,而测试集用于最终评估模型性能。

# 拆分数据集为训练集和测试集 
X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.2, random_state=42)
# 参数解释:
# - X_train: 训练集特征
# - X_test: 测试集特征
# - y_train: 训练集目标
# - y_test: 测试集目标
# - test_size: 测试集的比例,通常为 0.2(20% 的数据作为测试集)
# - random_state: 随机种子,可确保拆分是可重复的
  • 模型搭建和训练

    根据任务类型选择合适的模型。
  • 模型评估和优化

    常见的评价指标
评价指标库名称使用范围
准确率accuracy_score分类
精确率precision_score分类
F1 值f1_score分类
对数损失log_loss分类
混淆矩阵confusion_matrix分类
含多种评价的分类报告classification_report分类
均方误差MSEmean_squared_error回归
平均绝对误差MAEmean_absolute_error回归
决定系数R2r2_score回归

 

1.准确率(Accuracy)准确率是模型正确分类的样本数与总样本数之比。它衡量模型在所有类别中正确分类的比例。准确性高可能是一个好的性能指标,但在不平衡类别分布的情况下可能不太合适。
2.精确率(Precision):又叫查准率,是模型预测为正类别(正例)的样本中实际为正类别的比例。它衡量了模型的正例预测的准确性。
3.召回率(Recall):又叫查全率,是实际为正类别的样本中被模型正确分类为正类别的比例。它衡量了模型捕获正例的能力。召回率越高,代表实际负样本被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。
4.F1分数(F1 Score):F1分数是精确度和召回率的调和平均值。F1分数高表示模型在精确度和召回率之间取得了平衡。
5.混淆矩阵(Confusion Matrix):混淆矩阵是一个二维矩阵,用于显示模型的分类结果。它包括真正例(True Positive, TP)、真负例(True Negative, TN)、假正例(False Positive, FP)、假负例(False Negative, FN)。混淆矩阵可以用于计算上述指标。
6.分类报告(Classification Report):分类报告是一种包含多个分类指标的文档,通常包括精确度、召回率、F1分数和支持数(每个类别的样本数量)。分类报告对多类别分类问题特别有用。

         二分类 

预测值正例预测值反例
真实值正例TP – True Positive(真正例)FN – False Negative(假反例)
真实值反例FP – False Positive(假正例)TN – True Negative(真反例)
TP: 实际 1预测为 1,预测正确
FP: 实际 0预测为 1,预测错误
FN: 实际 1预测为 0,预测错确
TN: 实际 0预测为 0,预测正确
准确率 =(TP+TN)/(TP+TN+FP+FN)
精准率 =TP/(TP+FP)
召回率=TP/(TP+FN)
F1=(2×Precision×Recall)/(Precision+Recall)

 

  • 模型保存和应用 

1.模型保存:joblib.dump(model,'train_model.m')
2.模型应用:model = joblib.load('train_model.m')

 

常见术语与含义 

符号含义
X_train训练数据
X_test测试数据
y_train训练集标签
y_test测试集标签
X完整数据
y数据标签
y_pred预测标签

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值