全文共5835字,预计学习时长16分钟
用Yellowbrick可视化KMeans
机器学习问题一般可以分为三种类型,包括被称为监督学习的分类和回归,和无监督学习,无监督学习在机器学习中通常是指聚类。
本文将简要介绍这三个问题,并在流行的python库scikit-learn中演练。
在开始之前,先简要解释监督和无监督学习术语的含义。
监督学习:在监督学习中,有一组已知的输入(特征)和一组已知的输出(标签)。一般把输入特征和输出标签叫做X和y。该算法的目标是学习将输入映射到输出的映射函数。从而当给出新的X示例时,该机器可以正确地预测相应的y标签。
无监督学习:在无监督的学习中,只有一组输入(X),没有对应的标签(y)。该算法的目的是在数据中找到之前未发现的规律。这些算法常常被用来寻找X的类似样本的有意义的聚类,因此实际上可以找到数据的内在类别。
图源:pexels
1. 分类
在分类中,输出(y)是类别。类别可以只有两种,比如说可以把邮件分成垃圾邮件和非垃圾邮件。类别也可以有很多种,例如对花的种类进行分类,这被称为多类分类。
接下来用scikit-learn来举一个关于分类的简单例子。如果您尚未安装scikit-learn,可以通过pip或conda安装。
Scikit-learn有许多可以通过库直接访问的数据集。在本文中为了方便,整个过程中使用的数据集都是这些示例数据集。下面使用属于多类分类的葡萄酒数据集来说明分类问题。在数据集中,输入(X)包含13个与每种葡萄酒类型的各种属性相关的特征。已知的输出(y)是数据集中已经给出的用数字0,1或2代表的葡萄酒类型。
本文中使用的所有代码的导入如下所示。
import pandas as pd
import numpy as npfrom sklearn.datasets import load_wine
from sklearn.datasets import load_bostonfrom sklearn.model_selection importtrain_test_split
from sklearn import preprocessingfrom sklearn.metrics import f1_score
from sklearn.metrics import mean_squared_error
from math import sqrtfrom sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC, LinearSVC, NuSVC
from sklearn.tree import DecisionTreeClassifier
from skle