[Python3] 机器学习 ——(二)Scikit-Learn简介


[ sklearn version: 0.23.0 ]


二、Scikit-Learn简介

Scikit-Learn为各种常用机器学习算法提供了高效版本。

(一)Scikit-Learn的数据表示

机器学习是从数据创建模型的学问,因此首先需要了解怎样表示数据爱你让计算机理解。Scikit-Learn认为数据表示(data representation)最好的方法就是用数据表的形式。

1. 数据表

基本的数据表就是二维网格数据,其中的每一行表示数据集中的每个样本(samples),而列表示构成每个样本的相关特征(features)。

# 鸢尾花数据集
import pandas as pd
iris = pd.read_csv('./seaborn-data-master/iris.csv')
iris.head()

在这里插入图片描述

  • 每行数据表示每朵被观察的鸢尾花,行数表示数据集中记录的鸢尾花总述。一般会将这个矩阵的行称为样本,行数记为 n_samples,每列数据表示每个样本某个特征的量化值,列数记为 n_features
  • 数据集: mwaskom/seaborn-data - GitHub
2. 特征矩阵

这个表格布局通过二维数组或矩阵的形式将信息清晰地表达出来,通常把这类矩阵称为特征矩阵(features matrix)。

特征矩阵通常被简记为变量X。它是维度为[n_samples, n_features]二维矩阵,通常可以用NumPy数组或Pandas的DataFrame来表示,不过Scikit-Learn也支持SciPy的稀疏矩阵。

样本(每一行)通常是指数据集中的每个对象(任何可以通过一组量化方法进行测量的实体)。

特征(每一列)通常是指每个样本都具有的某种量化观测值。一般情况下,特征都是实数,但有时也可能是布尔类型或离散值。

3. 目标数组

除了特征矩阵 X 之外,还需要一个标签目标数组,通常简记为y

目标数组一般是一维数组,其长度就是样本总数n_samples,通常都用一维的NumPy数组或Pandas的Series表示。

目标数组可以是连续的数值类型,也可以是离散的类型/标签。

有些Scikit-Learn的评估器可以处理具有多目标值的二维[n_samples, n_targets]目标数组,文中基本上只涉及常见一维目标数组问题。

如何区分目标数组的特征与特征矩阵中的特征列,一直是个问题。目标数组的特征通常是我们希望从数据中预测的量化结果,借用统计学的术语,y就是因变量。

  • 以鸢尾花数据集为例,我们需要通过其他测量值来建立模型,预测花的品种(species),species列就可以看成是目标数组
%matplotlib inline
import seaborn as sns
sns.set()
sns.pairplot(iris, hue='species', height=1.5)

在这里插入图片描述

抽取特殊矩阵和目标数组

# 从DataFrame中抽取特征矩阵和目标数组
X_iris = iris.drop('species', axis=1)
X_iris.shape 	# (150, 4)
X_iris

在这里插入图片描述

y_iris = iris['species']
y_iris.shape 	# (150,)
y_iris

在这里插入图片描述

(二)Scikit-Learn的评估器API

Scikit-Learn API主要遵照以下设计原则:

  • 统一性:所有对象使用共同接口连接一组方法和统一的文档
  • 内省:所有参数值都是公共属性
  • 限制对象层级:只有算法可以用Python类表示。数据集都用标准数据类型(NumPy数组、Pandas DataFrame、SciPy稀疏矩阵)表示,参数名称用标准的Python字符串
  • 函数组合:许多机器学习任务都可以用一串基本算法实现,Scikit-Learn尽力支持这种可能
  • 明智的默认值:当模型需要用户设置参数时,Scikit-Learn预先定义适当的默认值

Scikit-Learn中的所有机器学习算法都是通过评估器API实现的,它为各种机器学习应用提供了统一的接口

1. API基础知识

Scikit-Learn评估器API的常用步骤如下:

  1. 通过从Scikit-Learn中导入适当的评估器类,选择模型类
  2. 用合适的数值对模型类进行实例化,配置模型超参数(hyperparameter)
  3. 整理数据,获取特征矩阵和目标数组
  4. 调用模型实例的fit()方法对数据进行拟合
  5. 对新数据应用模型:
    – 在有监督学习模型中,通常使用predict()方法预测新数据的标签
    – 在无监督学习模型中,通常使用transform()predict()方法转换或推断数据的性质
2. 有监督学习示例:简单线性回归

演示一个简单线性回归的建模步骤:最常见的任务就是为散点数据集 ( x , y ) (x,y) (x,y)拟合一条直线

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

rng = np.random.RandomState(42)
x = 10 * rng.rand(50)
y = 2 * x - 1 + rng.randn(50
  • 5
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值