分类属于监督学习算法,是指根据已有的数据和标签(分类)进行学习,预测未知数据的标签。分类问题的目标是预测数据的类别标签(class label),可以把分类问题划分为二分类和多分类问题。二分类是指在两个类别中选择一个类别,在二分类问题中,其中一个类别称作正类(positive class),另一个类别称作反类(negative class),比如判断垃圾邮件。多分类问题是指从多个分类中选择一个类别。
一,分类的一般方法
数据分类是一个两阶段的过程,包括学习阶段(构建分类模型)和分类阶段(使用模型预测新数据的类标号)。
举个例子,下面的代码实现了一个最简单的knn分类器,可以看出,knn分类模型是由两部分构成的:第一部分是拟合数据(fit),也就是训练模型,第二部分是预测数据(predict)。
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3) x_train = [[0], [1], [2], [3]] y_train = [0, 0, 1, 1] knn.fit(x_train,y_train) x_new=[[1.1]] y_pred=knn.predict(x_new) print('predict:{0}'.format(y_pred))
二,分类的训练数据
分类算法通过从训练集中学习来构造分类器,训练集由数据元组和其关联的类标号构成,一个数组元组表示为:[f1,f2,f3] ,其类标号表示为:category。元组中的每个字段叫做数据的特征,或属性;类标号是指该数据元组的类别。
在谈到分类时,数据元组也称为样本、数据点或对象。数据在应用到估计器之前,需要对数据进行预处理。数据预处理,请阅读sklearn的官方文档:《5.3. Preprocessing data》
三,分类的估计器
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》
参考文档: