Classification (分类) 是预测给定数据点类别的过程。类有时称为目标/标签或类别。分类预测建模是从输入变量 (X) 到离散输出变量 (y) 逼近映射函数 (f) 的任务。
例如 ,电子邮件服务提供商中的垃圾邮件检测可以识别为分类问题。这是二元分类,因为只有 2 类是垃圾邮件和非垃圾邮件。
一个分类 利用一些训练数据,了解给定的输入变量如何与类。在这种情况下,必须使用已知的垃圾邮件和非垃圾邮件作为训练数据。当分类器经过准确训练后,它可以用于检测未知电子邮件。
分类属于监督学习的范畴,其中目标也提供输入数据。在信用审批、医疗诊断、目标营销等许多领域都有许多分类应用。
from sklearn import datasets
from sklearn.linear_model import LinearRegression
digits = datasets.load_digits() #loading the MNIST Digits Database
clf=LinearRegression() #creating LinearRegression Classifier
Python Scikit-Learn 函数
1. 加载数据集
Scikit-learn 带有一些标准数据集,例如用于分类的 iris 和数字数据集以及用于回归的波士顿房价数据集。
from sklearn import datasets
iris = datasets.load_iris()
digits = datasets.load_digits()
上面的代码将 iris 数据集加载到“iris”中,将 MNIST Digits 数据集加载到“digits”中
ndarray.data我们使用 data 属性来显示加载的数据
print(digits.data)
以上将导致以下结果: 同样,我们可以打印 iris.data
ndarray.target我们使用目标属性来显示我们加载的数据集的标签
print(digits.target)
以上将导致:[0 1 2 … 8 9 8]。同样,我们可以打印iris.target
将数据分解成训练集和测试集
一个数据集可以分为 3 个部分:1.Test Set 它是用于黑盒测试的数据集的一部分,即这里的动机是在模型之前从未见过的数据上测试模型。在这里,我们使用混淆矩阵、准确度分数和 F1 分数等指标。2.Training Set 它是数据集的一部分,用于训练模型并使假设更准确3.Validation set 在机器学习中,当我们生成模型时,我们需要在将模型发送到最终测试之前对其进行验证。所以为了验证模型的工作,我们使用验证集例如: 让我们以 MNIST 布料数据集为例在这里,我们想生成一个可以预测布料类型和流派的模型。为此,我们将整个数据集划分为 7:3 的比例,其中 70% 的数据是训练+验证数据,30% 是测试 数据在 Python 中分离训练和测试数据,我们使用 sklear.model_selection.train_test_split()
from sklearn import datasets
from sklearn.model_selection import train_test_split
digits = datasets.load_digits() #loading the MNIST Digits Database
X,y = digits.data, digits.target
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
上面的代码演示了如何以 7:3 的比例划分数据集
3. 学习和预测
学习 学习是获取新的或修改现有的知识、行为、技能、价值观或偏好的过程。人类、动物和一些机器都具备学习能力;也有证据表明某些植物具有某种学习能力。 在机器学习的情况下,学习是通过观察其环境来提高人工智能程序知识的过程。
预言 预测或预测是对未来事件的陈述。预测通常但不总是基于经验或知识。关于这两个术语之间的确切区别没有普遍的共识;不同的作者和学科赋予不同的内涵。 “预测”是指当您尝试预测特定结果的可能性(例如客户是否会在 30 天内流失)时,算法在历史数据集上进行训练并应用于新数据后的输出. 该算法将为新数据中的每条记录生成未知变量的可能值,从而允许模型构建器确定该值最有可能是什么。
1.classifier.fit(labels,targets) fit
设置在每一个估算方法。它通常需要一些样本 x,
y
如果模型受到监督,则可能需要其他样本属性,例如 sample_weight。这应该:
清除存储在估计器上的任何先前属性,除非使用了warm_start;
验证和解释任何参数,理想情况下,如果无效则引发错误
验证输入数据;
从估计的参数和提供的数据中估计和存储模型属性,以及
返回现在拟合的估计器以促进方法链接。
from sklearn import datasets
from sklearn.linear_model import LinearRegression
digits = datasets.load_digits() #loading the MNIST Digits Database
clf=LinearRegression() #creating LinearRegression Classifier
X,y = digits.data[:-10], digits.target[:-10] #selecting the first 10 data and targets
clf.fit(X,y) #we fitted the given data and targets to form a model
2.classifier.predict() 预测每个样本,通常只将 X 作为输入(但请参阅下面的回归器输出约定)。在分类器或回归器中,该预测位于拟合中使用的相同目标空间中(例如,如果y
拟合由这些字符串组成,则为 {‘red’, ‘amber’, ‘green’}之一)。尽管如此,即使y
传递给 fit 是一个列表或其他类似数组的,输出也predict
应该始终是一个数组或稀疏矩阵。在聚类或异常值检测器中,预测是一个整数。如果尚未拟合估算器,则调用此方法应引发exceptions.NotFittedError
.
from sklearn import datasets
from sklearn.linear_model import LinearRegression
digits = datasets.load_digits() #loading the MNIST Digits Database
clf=LinearRegression() #creating LinearRegression Classifier
X,y = digits.data[:-10], digits.target[:-10] #selecting the first 10 data and targets
clf.fit(X,y) #we fitted the given data and targets to form a model
clf.predict(X[0].reshape(1,-1)) #we are predicting the output based on the trained model
4. 性能分析
1.classifier.confusion_matrix() 混淆矩阵是一个表格,通常用于描述分类模型(或“分类器”)对一组已知真实值的测试数据的性能。它允许可视化算法的性能。
它允许轻松识别类之间的混淆,例如一个类通常被错误地标记为另一个类。大多数性能指标是根据混淆矩阵计算的。
正确和错误预测的数量用计数值汇总并按每个类别细分。这是混淆矩阵的关键。
混淆矩阵显示了您的分类模型在进行预测时是如何混淆的。
它不仅让我们深入了解分类器所犯的错误,更重要的是让我们了解正在犯的错误类型。
混淆矩阵常用于计算准确度分数
积极的
消极的
True
TP
TN
False
FP
FN
# Python script for confusion matrix creation.
from sklearn.metrics import confusion_matrix
actual = [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]
predicted = [1, 0, 0, 1, 0, 0, 1, 1, 1, 0]
results = confusion_matrix(actual, predicted)
print ('Confusion Matrix :')
print(results)
上述代码的输出将是:混淆矩阵:[[4 2] [1 3]]
2.classifier.accuracy_score()
估计器上的一种方法,通常是预测器,它评估其对给定数据集的预测,并返回单个数值分数。更大的回报值应该表明更好的预测;默认情况下,accuracy 用于分类器,R^2 用于回归器。
如果尚未拟合估算器,则调用此方法应引发exceptions.NotFittedError
.
一些估算器实现了自定义的、特定于估算器的评分函数,通常是模型下数据的可能性。
Accuracy = (TP+TN)/ (TP+TN+FN+FP)
where, TP- True Positive
TN- True Negative
FN- False Negative
FP- False Positive
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
下面以表格形式提供了 Scikit-Learn 功能列表:
Sno.
函数名称
描述
1
sklearn.base
所有估算器的基类
2
sklear.calibration
预测概率的校准
3
sklear.cluster
它提供了各种无监督学习算法
4
sklearn.cluster.k_means
提供 K-Means 聚类算法的所有功能
5
sklear.cluster.bicluster
它提供了谱双聚类算法
6
sklearn.compose
用于使用变压器构建复合模型的元估计器
7
sklearn.covariance
该模块包括用于对给定一组点的特征协方差进行稳健估计的方法和算法。定义为协方差倒数的精度矩阵也被估计
8
sklearn.cros_decomposition
它提供了支持交叉分解的方法和算法
9
sklearn.datasets
该模块包括加载数据集的实用程序,包括加载和获取流行参考数据集的方法。它还提供人工数据生成器
10
sklearn.decomposition
该模块包括矩阵分解算法,其中包括 PCA、NMF 或 ICA。
11
sklearn.discriminant_analysis
它提供线性判别分析和二次判别分析
12
sklearn.dummy
它提供了虚拟估计器,有助于获得这些指标的基线值以进行随机预测
13
sklearn.ensemble
该模块包括基于集成的分类、回归和异常检测方法
14
sklearn.exceptions
该模块包含在 scikit-learn 中使用的所有自定义警告和错误类
15
sklearn.experimental
该模块提供了可导入的模块,可以使用实验功能或估计器
16
sklearn.feature_extraction
该模块处理从原始数据中提取特征。它目前可以从文本和图像中提取特征
17
sklearn.feature_selection
该模块实现了特征选择算法。它目前提供单变量过滤器选择方法和递归特征消除算法
18
sklearn.gaussian_process
该模块实现了基于高斯过程的回归和分类
19
sklearn.isotonic
该模块为我们提供了实现等渗回归的能力
20
sklearn.impute
它为缺失值插补提供了转换器
21
sklearn.kernel_approximation
该模块实现了几个基于傅立叶变换的近似内核特征图
22
sklearn.kernel_ridge
它提供了帮助我们实现内核岭回归的功能
23
sklearn.linear_model
它模块实现了广义线性模型。它包括岭回归、贝叶斯回归、套索和弹性网络估计器,使用最小角度回归和坐标下降计算。它还实现了随机梯度下降相关算法。
24
sklearn.linear_model.LinearRegression
它提供了实现线性回归的功能
25
sklearn.linear_model.LogisticRegression
它提供了实现逻辑回归的功能
26
sklearn.mainifold
该模块实现了数据嵌入技术
27
sklearn.metrics
它包括评分函数、性能指标和成对指标以及距离计算
28
sklearn.metrics.accuracy_score
它给出了准确度分类分数
29
sklearn.metrics.confusion_matrix
它给出了混淆矩阵
30
sklearn.metrics.f1_Score
它给出了 F1 分数或平衡的 F 分数或 F 度量
31
sklearn.metrics.classification_report
它构建了一个显示主要分类指标的文本报告
32
sklearn.metrics.precision_score
它给出了分类的精度
33
sklearn.metrics.mean_absolute_error
它给出了平均绝对误差回归损失
34
sklearn.metrics.mean_squared_error
它给出了均方误差回归损失
35
sklearn.mixture
该模块实现了混合建模算法
36
sklearn.model_selection
该模块包含模型选择功能
37
sklearn.multiclass
该模块提供了实现多类和多标签分类的功能
38
sklearn.multioutput
该模块实现了多输出回归和分类。该模块中提供的估计器是元估计器:它们需要在其构造函数中提供基本估计器。元估计器将单输出估计器扩展到多输出估计器。
39
sklearn.naive_bayes
该模块实现朴素贝叶斯算法。这些是基于应用具有强(朴素)特征独立假设的贝叶斯定理的监督学习方法。
40
sklearn.neighbours
该模块实现了 k-最近邻算法。
41
sklearn.neaural_network
该模块包括基于神经网络的模型
42
sklearn.pipeline
该模块实现了用于构建复合估计器的实用程序,作为转换和估计器链
43
sklearn.inspection
该模块包括用于模型检查的工具
44
sklearn.preprocessing
该模块包括缩放、居中、归一化、二值化和插补方法
45
sklearn.random_projection
它提供 random_projection。随机投影是一种简单且计算效率高的方法,可通过以受控的准确度(作为附加方差)换取更快的处理时间和更小的模型尺寸来降低数据的维度。
46
sklearn.semi_supervised
该模块实现了半监督学习算法。这些算法利用少量标记数据和大量未标记数据进行分类任务。该模块包括标签传播。
47
sklearn.svm
该模块包括支持向量机算法
48
sklearn.tree
该模块包括基于决策树的分类和回归模型。
49
sklearn.utils
它包括各种实用程序
结论
在本章中,我们学习了 Python SciKit-Learn。在下一章中,我们将学习 Python MatPlotLib。
Python MatPlotLib 是一个优秀的库,它提供了一个面向对象的 API,用于使用通用 GUI 工具包将绘图嵌入到应用程序中。