python机器学习-Python Scikit-Learn

作者 : 慕源网 本文共7516个字,预计阅读时间需要19分钟 发布时间: 2021-10-19 共192人阅读

python机器学习-Python Scikit-Learn

本文是Python 机器学习系列的一部分。您可以在此处找到本系列之前所有帖子的链接

Python Scikit-Learn

在上一章中,我们研究了 Python Pandas、它的函数和它的 Python 实现。

在本章中,我们将从下一个非常有用且重要的 Python 机器学习库“Python Scikit-Learn”开始。

什么是 Scikit-Learn?

Scikit-learn(以前称为 scikits.learn)是 Python 编程语言的免费软件机器学习库。

它具有各种分类、回归和聚类算法,包括支持向量机、随机森林、梯度提升、k均值和 DBSCAN,旨在与 Python 数值和科学库 NumPy 和 SciPy 进行互操作。

scikit-learn 项目开始于 David Cournapeau 的 Google Summer of Code 项目 scikits.learn。它的名字源于这样一个概念,即“SciK 具有各种分类、回归和聚类算法,包括支持向量机、随机森林、梯度提升、  k均值和 DBSCAN,旨在与 Python 数值和科学库 NumPy 互操作和 SciPy.it”(SciPy 工具包),一个单独开发和分发的 SciPy 第三方扩展。

它于 2012 年 6 月首次发布。官方网站是www.scikit-learn.org。

Scikit-Learn 和 Sklearn 是一样的吗?

是的,两者是一样的,区别在于“scikit-learn”是包的正式名称,主要用于安装包,而“sklearn”是缩写名称,在我们必须使用它时使用用于python编程。

Scikit-Learn 的特点

  • 聚类

    用于对未标记的数据进行分组,例如 KMeans。

  • 交叉验证用于估计监督模型在看不见的数据上的性能。
  • 数据集用于测试数据集和生成具有特定属性的数据集以研究模型行为。
  • 降维用于减少数据中用于汇总、可视化和特征选择(如主成分分析)的属性数量。
  • 集成方法用于组合多个监督模型的预测。
  • 特征提取用于定义图像和文本数据中的属性。
  • 特征选择用于识别有意义的属性,从中创建监督模型。
  • 参数调整充分利用监督模型。
  • 流形学习用于总结和描绘复杂的多维数据。
  • 监督模型大量不限于广义线性模型、判别分析、朴素贝叶斯、惰性方法、神经网络、支持向量机和决策树。

在 Python 中安装 Scikit-Learn

1. Ubuntu/Linux

sudo apt update -y        
sudo apt upgrade -y        
sudo apt install python3-tk python3-pip -y        
sudo pip install scikit-learn -y     

2. Anaconda Prompt

conda install scikit-learn     

Classification(分类)

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)   

以上将导致以下结果:python机器学习-Python Scikit-Learn同样,我们可以打印 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 工具包将绘图嵌入到应用程序中。

慕源网 » python机器学习-Python Scikit-Learn

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录