课程简介
分类就是确定所研究的对象属于哪一个类别,分类问题是一个普遍存在的问题。应用广泛,如根据电子邮件的内容判断是否属于垃圾邮件,根据星系的形状对它们进行分类等。本节将主要介绍分类学习算法如何进行分类,以及如何评估分类的效果等。
学习目标
- 了解分类学习算法
- 了解分类学习算法的工作原理
- 了解如何评估分类学习算法
- %matplotlib inline
- import matplotlib.pyplot as plt
- import numpy as np
为了可视化机器学习算法的工作原理,研究二维或一维数据,即仅具有一个或两个特征的数据,通常是有帮助的。但在实践中,数据集通常具有更多的特征,很难在二维图形上绘制出高维数据。
我们将先演示一些简单的例子,然后再讨论更多的"现实世界"中的数据集。
首先,我们将从两个维度来考察二分类问题。我们使用make_blobs函数生成的合成数据。
- from sklearn.datasets import make_blobs
- X, y = make_blobs(centers=2, random_state=0)
- print('X ~ n_samples x n_features:', X.shape)
- print('y ~ n_samples:', y.shape)
- print('\nFirst 5 samples:\n', X[:5, :])
- print('\nFirst 5 labels:', y[:5])
由于数据是二维的,我们可以将每个样本绘制成二维坐标系中的一个点,第一个特征是 x 轴,第二个特征是 y 轴。
- plt.scatter(X[y == 0, 0], X[y == 0, 1],
- c='blue', s=40, label='0')
- plt.scatter(X[y == 1, 0], X[y == 1, 1],
- c='red', s=40, label='1', marker='s')
- plt.xlabel('first feature')
- plt.ylabel('second feature')
- plt.legend(loc='upper right');
[url=]删除[/url]
分类是监督学习的任务,因此我们对它在未使用到的数据上的表现感兴趣,我们将数据划分为两个部分:
- 用于学习算法拟合模型的训练集
- 用来评估模型泛化性能的测试集
[url=]删除[/url]
- from sklearn.model_selection import train_test_split
- X_train, X_test, y_train, y_test = train_test_split(X, y,
- test_size=0.25,
- random_state=1234,
- stratify=y)
[url=]删除[/url]
每个算法都通过一个''估计器''对象在 scikit-learn 中表现出来(scikit-learn 中的所有模型都有非常一致的接口)。比如,我们首先导入逻辑回归类。
以上内容转自 数析学院,只节选了部分,有需要的同学可以直接查看原文。百度搜索数析学院