分类模型 第1篇:分类模型概述

机器学习主要用于解决分类、回归和聚类问题,分类属于监督学习算法,是指根据已有的数据和标签(分类的类别)进行学习,预测未知数据的标签。分类问题的目标是预测数据的类别标签(class label),可以把分类问题划分为二分类和多分类问题。二分类是指在两个类别中选择一个类别,在二分类问题中,其中一个类别称作正类(positive class),另一个类别称作负类(negative class),比如判断垃圾邮件。多分类问题是指从多个分类中选择一个类别。

一,分类的一般步骤

总体来说,数据分类是一个二阶段的过程,第一个阶段是学习阶段,用于训练分类模型,第二个阶段是预测阶段,使用模型预测新数据的类标签。此外,由于现实生活中的数据不是完美的,在开始训练模型之前,需要对数据进行预处理。在模型构建之后,还需要对模型进行评估和调参,选择最优的参数,达到最优的分类效果。

举个例子,下面的代码实现了一个最简单的knn分类器,没有对数据进行预处理,也没有对模型进行评估和调参。从代码中可以看出,knn分类模型是由两部分构成的:第一部分是拟合数据(fit),也就是训练模型,第二部分是预测数据(predict)。

from sklearn.neighbors import KNeighborsClassifier

x_train = [[0], [1], [2], [3]]
y_train = [0, 0, 1, 1]

#train the model
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(x_train,y_train)

#predict a new data point
x_new=[[1.1]]
y_pred=knn.predict(x_new)
print('predict:{0}'.format(y_pred))

二,训练数据

训练数据是已标记的数据,由数据元组和其关联的类标签构成,训练集的一个数组元组可以表示为:[[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]],其类标签表示为:['a','b','c']。元组中的每个字段叫做数据的特征,或属性;类标号是指该数据元组的类别。

其实分类问题,可以看作一个公式 y=f(x),分类模型通过从训练集中学习来构造分类器,即从训练集中学习,获得y=f(x)这个公式(模型),对于新的数据a,f(a)就是预测的结果。

在机器学习中,数据元组也称为样本、数据点或对象。数据在应用到模型之前,需要对数据进行预处理,数据预处理主要是指特征选择、数值处理等。

三,分类的算法模型

sklearn中的分类估计器(Estimator)指的是分类的算法模型,用于对数据进行分类,sklearn的分类算法有:knn、贝叶斯、决策树等算法。

估计器主要由拟合(fit)和预测(predict)构成:

  • fit(x,y):拟合,传入数据以及标签用于训练模型,训练的时间跟算法的参数设置、数据集的大小以及数据本身的特点有关
  • predict(x):预测,用于对新数据进行预测,该方法接受一个数据点,输出该数据点的预测标签。通常使用该方法返回测试的结果,再将这个结果用于评估模型。

四,分类模型的评估

分类模型的评估由模型的正确率和预测的不确定度构成:

  • score(x,y):模型的正确率,用于对模型的正确率进行评分(范围0-1),计算公式是:count(预测正确的数据点)/总的数据点数量
  • predict_prob(x):每个类别的概率,表示预测的置信度。

在评估模型时,不能仅仅限于模型的正确率(score),由于在不同的问题下,评判模型优劣的的标准不限于简单的正确率,可能还包括召回率或者是查准率等其他的指标,特别是对于类别失衡的样本,准确率并不能很好的评估模型的优劣,因此在对模型进行评估时,不要轻易的被score的得分蒙蔽。

关于分类模型评估的详细信息,请阅读sklearn的官方文档:《3.3. Model evaluation: quantifying the quality of predictions

 

参考文档:

1. Supervised learning

posted @ 2019-07-28 22:23  悦光阴  阅读(4281)  评论(0编辑  收藏  举报