机器学习工具之sklearn库

这篇博客介绍了如何使用Python的scikit-learn库进行机器学习,包括加载波士顿房价数据集,选择线性回归模型进行训练,通过R2分数评估模型,并展示了模型评估指标如平均绝对误差。此外,还阐述了模型的保存与应用,以及sklearn库中选择机器学习算法的流程图。
摘要由CSDN通过智能技术生成

scikit-learn是基于 Python 语言的机器学习工具,简称sklearn。它是SciPy的扩展,建立在Numpy和matplolib库的基础上。sklearn包括了分类,回归,降维和聚类等四大机器学习算法,还包括了特征提取,数据处理和模型评估者三大模块。具有如下特点:

  • Simple and efficient tools for predictive data analysis
  • Accessible to everybody, and reusable in various contexts
  • Built on NumPy, SciPy, and matplotlib
  • Open source, commercially usable - BSD license

机器学习的开发步骤

机器学习的开发基本分为六个步骤,1)获取数据,2)数据处理,3)特征工程,4)模型训练(选择机器学习算法),5)模型评估,6)应用。
相应的使用sklearn库的一般过程如下:
1、引入需要训练的数据,既可以加载sklearn自带数据集,也可以通过相应方法进行构造,或加载具体任务的现有数据。
2、选择适合具体任务的机器学习算法,并进行训练,训练时可以调参。
3、使用准确率或方差等进行模型评估,可以通过matplolib库方法直观的图形化展示数据。
4、保存已训练好的模型,再次使用(应用)时不必重新训练。

1 加载数据

Sklearn内置有一些小型标准数据集(sklearn.datasets.load_xxx),中文官网翻译为玩具数据集,下面简要介绍数据集名称、加载方法及适用任务等。

  • 波士顿房价数据集load_boston()适用于回归任务,包含了506个样本。
  • 乳腺癌数据集load_breast_cancer()适用于二分类任务,包含了569个样本。
  • 鸢尾花数据集load_iris()适用于三分类任务,包含了150个样本。
  • 手写数字数据集load_digits()适用于多分类任务,包含了1797个样本。
  • 红酒数据集load_wine()适用于分类任务,包含了178个样本,代表了红酒的三个档次(分别有59,71,48个样本)。
  • 糖尿病数据集load_diabetes()适用于回归任务,包含了442个样本。值得注意的是,样本10个特征中的每个特征都已经被处理成0均值,方差归一化的特征值。
  • 体能训练数据集load_linnerud()经典的用于多变量回归任务的数据集,其内部包含两个小数据集:Excise是对3个训练变量的20次观测(体重,腰围,脉搏),physiological是对3个生理学变量的20次观测(引体向上,仰卧起坐,立定跳远)。

除了以上自带的数据集,sklearn也支持样本生成器生成数据集sklearn.datasets.make_xxx
示例:加载波士顿房价数据集

from sklearn import datasets
from sklearn.model_selection import train_test_split

# 加载数据
boston = datasets.load_boston()
x = boston['data']
y = boston['target']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=37, test_size=0.2)

2 选择机器学习算法

2.1、选择正确的评估器,流程图如下:
选择算法流程图
备注:官网流程图中的绿色框带有链接,网址【https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html】
2.2、使用sklearn开发的典型代码,如下:

import sklearn.linear_model as sl

# 创建模型,线性回归
model = sl.LinearRegression()
# 拟合模型,训练模型
model.fit(X_train, y_train)
# 模型预测:将测试样本带入模型求出预测值
pred_y = model.predict(X_test)
# 为模型进行打分,回归问题:以R2参数为标准 分类问题:以准确率为标准
model.score(X_train, y_train) 

3 模型评估

sklearn.metrics提供了计算模型误差的几个常用算法

import sklearn.metrics as sm
print('平均绝对值误差:', sm.mean_absolute_error(y_test, pred_y))
print('平均平方误差:', sm.mean_squared_error(y_test, pred_y))
print('中位绝对值误差:', sm.median_absolute_error(y_test, pred_y))
print('R2得分:', sm.r2_score(y_test, pred_y))

4 模型保存,及应用

    # 将训练好的模型对象保存到磁盘文件中
    with open('./sk_linear.pkl', 'wb') as f:
        pickle.dump(model, f)
        
    # 从磁盘文件中加载模型对象
    with open('./sk_linear.pkl', 'rb') as f:
        model = pickle.load(f)
    # 输入新样本x预测输出
    pred_y = model.predict(x)

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值