什么是Scikit-Learn in Python?

在我们开始之前:本Python教程是我们的Python包教程系列

Scikit-learn是一个开源数据分析库,也是Python生态系统中机器学习(ML)的黄金标准。主要概念和特点包括:

  • 算法决策方法包括:
    • 分类:基于模式识别和分类数据。
    • 回归:根据现有和计划数据的平均值预测或预测数据值。
    • 聚类:将相似的数据自动分组成数据集。
  • 支持从简单线性回归到神经网络模式识别的预测分析的算法。
  • 与NumPy, pandas和matplotlib库的互操作性。

ML是一种使计算机能够从输入数据中学习并建立/训练预测模型而无需显式编程的技术。ML是人工智能(AI)的一个子集。

为什么使用Scikit-Learn进行机器学习

无论你只是在寻找ML的介绍,想要快速起来和运行,或正在寻找最新的ML研究工具,你会发现scikit-learn都是很好的文档和容易学习/使用。作为一个高级库,它允许您用几行代码定义预测数据模型,然后使用该模型来适应您的数据。它是通用的,可以与其他Python库很好地集成,比如matplotlib阴谋Numpy用于数组向量化,熊猫对dataframes

机器学习基本概念

要使用scikit-learn,您首先应该熟悉ML项目中通常使用的一些术语。

  • 精度-分类模型正确预测的比例。
    • 在多类分类中,精度定义如下:
      准确性=正确的预测/例子总数
  • 在二进制分类中,准确性有以下定义:
    准确度* =(真实的肯定句+真实的否定句)/例子的总数
  • 示例数据数据的特定实例(特性),定义为x。数据示例有两类:
    • 带安全标签的数据时-包括特性和标签,定义为
      {feature, label}: (x, y)
    • 无标号数据-包含特性但不包含标签,定义为:
      {feature, ?}:(x, ?)
  • 功能—输入变量。它是被观察事物的可测量的特征或性质。每个ML项目都有一个或多个特性。
  • 聚类-一种基于相似性对数据点进行分组的技术。每个组称为一个集群。
  • k - means聚类-一种无监督学习技术,寻找固定数目(k)的平均值(质心)的数据点,并将它们分配到最近的聚类。
  • 模型-定义特性与标签的关系。例如,谣言检测模型将与谣言相关的某些特征联系起来。
  • 回归和分类-这两个模型都可以让你做出预测,回答问题,比如哪支队伍会赢得体育赛事。
    • 回归模型提供一个数值或连续值。
    • 分类模型提供了一个分类的或离散的值。
  • 监督式学习-该算法使用一个标记的数据集来“学习”如何识别正确的答案,然后应用到训练数据中。然后对算法的准确性进行评估和改进。大多数ML项目使用监督学习。
  • 无监督学习-该算法试图通过自己“学习”特征和模式来理解未标记的数据。

ML算法

为了让计算机在没有明确编程的情况下学习,算法是必需的。算法仅仅是应用于计算的规则集。

ML算法基本概念:

  • 表示-是一种配置数据的方法,以便对其进行评估。例子包括决策树、规则集、实例、图形模型、神经网络、支持向量机、模型集成等等。
  • 评价-给定一个假设,评估是评估其有效性的一种方法。例子包括精度、预测和召回、平方误差、似然、后验概率、成本、边际、熵k-L散度等。
  • 优化-利用组合优化、凸优化、约束优化等技术调整超参数以最小化模型误差的过程。

Scikit-Learn ML算法

以下是Scikit-learn中使用的主要算法和方法的示例,按照复杂度的降序排列:

线性回归算法示例

线性回归是一种有监督的ML算法,其中预测输出是一条直线的斜率。它被用来预测给定数据点集合内的值,而不是超出。

简单线性回归采用直线的斜截形式,其中:

  • b是算法用来学习或创建最准确的预测斜率的变量吗
  • x代表输入数据
  • y代表了预测
y = mx + b

在本例中,线性回归模型拟合3个数据集,预测出一个与现有数据拟合的未知数据值:

# Import the linear regression model: from sklearn Import linear_model linreg = linear_model. linearregression() #使用线性回归模型来拟合数据:[0,0],[2,2],[4,4]],[0,2, 4]) #运行模型,返回一个拟合到数据#并投影在同一行上的点:print(linreg.coef_)

输出:

(0.5 - 0.5)

Logistic回归算法示例

Logistic回归是二元分类问题的首选方法(如。,is the input data point On or Off?). An equation similar to Linear Regression can then be used to assess the values (e.g., how likely is it that a specific data point is On or Off?).

在本例中,NumPy和matplotlib用于在逻辑回归模型中绘制数组。用三个不同的分类器预测样本数据集在数组中的类概率,并将其平均VotingClassifier(估计3个分类器的平均最佳拟合):

Print (__doc__) import numpy as np import matplotlib。Pyplot作为sklearn的PLT。从sklearn导入LogisticRegression。naive_bayes从sklearn导入高斯annb。集成从sklearn导入RandomForestClassifier。集成导入VotingClassifier clf1 = LogisticRegression(max_iter=1000, random_state=123) clf2 = RandomForestClassifier(n_estimators=100, random_state=123) clf3 = GaussianNB() X = np.array([[-1.0, -1.0], [-1.2, -1.3], [-1.4, -2.2], [2.1, 2.2]]) y = np. .eclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb', clf3)],投票='soft',重量= [1,2,3])预测所有分类器的类概率:probas = [c。if (X, y).predict_proba(X) for c in (clf1, clf2, clf3, eclf)]#获取样本数据集的类概率:class2_1 = [pr[0,1] for pr in probas]#绘制概率:
N = 4#数组中组的数量印第安纳州= np.arange (N)#组位置宽= 0.275#条形图宽度#为每个条形图创建matplotlib子图:图,ax = plt.subplot ()为每个分类器创建一个条形图:p1 = ax。bar(ind, np.hstack(([class1_1[:-1], [0]])), width, color='red', edgecolor='k') p2 = ax.bar(ind + width, np.hstack(([class2_1[:-1], [0]])), width, color='blue', edgecolor='k')#创建一个柱状图的VotingClassifier估计平均值:p3 = ax。bar(ind, [0, 0, 0, class1_1[-1]], width, color='red', edgecolor='k') p4 = ax.bar(ind + width, [0, 0, 0, class2_1[-1]], width, color='blue', edgecolor='k')#创建情节注释,添加描述性文本:Plt.axvline (2.8, color='k', linestyle='虚线')Set_xticks (ind + width) ax. Set_xticks (ind + width)set_xticklabels(['LogisticRegression\nweight 1', 'GaussianNB\nweight 2', 'RandomForestClassifier\nweight 3', 'VotingClassifier\n(平均概率)'],rotation=40, ha='right') plt。ylim plt([0, 1])。标题('一个样本的分类概率,由不同分类器预测')[p1[0], p2[0]], ['class 1', 'class 2'], loc='upper left') plt.tight_layout() plt.show()

决策树算法实例

决策树算法构建了一棵由根节点(必须做出选择的点)、分支节点(对选择的二元是/否答案)和叶节点(代表变量)组成的树。

在这个例子中,numpy和matplotlib被用来绘制一个由不同属性的并行数组表示的决策树结构:

从matplotlib中导入pyplot作为PLT。从sklearn导入train_test_split。数据集从sklearn导入load_iris。从sklearn import tree中导入decisiontre分类器#通过使用数据集拟合决策树分类器类来训练决策树分类器。load_iris的数据集:iris = load_iris()数据y = iris。y_train = train_test_split(X, y, random_state=0) clf = DecisionTreeClassifier(max_leaf_nodes=3, random_state=0) clf。fit (X_train y_train)#决策树结构:#决策分类器有一个名为tree_的属性,允许访问#转换为低级别属性,如' node_count ',节点总数,#和' max_depth '(树的最大深度)。这个树结构是由多个并行数组表示的。的每个数组的# ' i-th '元素保存关于节点' i '的信息。节点0#树的根。一些数组特性只适用于叶子或分裂#节点。#在这个例子中,数组特性和阈值只适用于分割节点。因此,这些数组中的叶节点的值是任意的。#数组定义:children_left[我]。节点' i '的左子结点Id,如果是叶节点则为-1。children_right[我]。节点' i '的右子节点Id,如果是叶节点则为-1。[我]。用于分割节点“i”的特性。阈值[我]。节点i处的阈值。n_node_samples[我]。到达节点“i”的训练样本个数。杂质[我]。结点i处的杂质。#遍历树结构和具有不同属性的数组节点#计算:#计算每个节点的深度,并决定它是否为叶节点:n_nodes = clf.tree_。Node_count children_left = clf.tree_. Node_count children_left = clf.tree_. Node_countchild_left = clf.tree_。child_right feature = clf.tree_.特征阈值= clf.tree_.。node_depth = np. Threshold节点深度阈值=n_nodes, dtype=np.int640 (shape=n_nodes, dtype=bool) stack = [(0,0)] # start with the root node id (0) and its depth (0) while len(stack) > 0: node_id, depth = stack.pop()#确保每个节点只访问一次。node_depth[node_id] = depth #如果一个节点的左子节点和右子节点不相同,则为分裂节点。is_split_node = children_left[node_id] !添加((children_left[node_id], depth + 1))堆栈。else: is_leaves[node_id] = True print("The binary tree structure has {n} nodes and has " "The following tree structure:\n".format(n=n_nodes)) for i in range(n_nodes): if is_leaves[i]:Print ("{space}node={node}是一个叶子节点")。如果X[:, {feature}] <= {threshold} " "else to node {right}." "如果X[:, {feature}] <= {threshold} "Format (space=node_depth[i] * "\t", node=i, left=children_left[i], feature[i], threshold=threshold[i], right=children_right[i]))#绘制决策树:tree.plot_tree plt (clf)。title('具有不同属性的数组节点的决策树')

先进的ML算法

随机森林

随机森林是一个由多个决策树和不同的学习算法(集成学习方法)组成的模型,以获得比任何单一的学习算法更好的预测分析。

梯度增加

梯度助推是一种可以用于可能存在回归和分类问题的方法。它基于一组弱预测模型(通常是决策树)生成一个预测模型。

为什么在数据科学中使用ActivePython

虽然Python的开源发行版可能对个人来说是令人满意的,但它并不总是能满足大型组织的支持、安全性或平台需求。

这就是企业选择ActivePython的原因,因为他们需要数据科学、大数据处理和统计分析。

ActivePython预先与数据科学家需要的最重要的软件包捆绑在一起,是预编译的,因此您和您的团队不必浪费时间配置开源发行版。您可以将精力集中在重要的事情上——花更多的时间针对大数据源构建算法和预测模型,而在系统配置上花更少的时间。

ActivePython与开源Python发行版100%兼容,并提供您的组织所需的安全和商业支持。

使用ActivePython,您可以探索和操作数据,运行统计分析,并提供可视化,以便更快地与业务用户和高管共享见解——无论您的数据位于何处。

使用ActivePython用于数据科学/大数据/机器学习,您可以预先编译一些流行的Python包

  • 熊猫(数据分析)
  • NumPy(多维数组)
  • SciPy(使用numpy的算法)
  • HDF5(存储和操作数据)
  • Matplotlib(数据显示)
  • Jupyter(研究协作)
  • 巴拉圭报表(管理HDF5数据集)
  • HDFS(适用于Hadoop的C/ c++包装器)
  • pymongo(MongoDB司机)
  • SQLAlchemy(Python SQL工具包)
  • 复述,(复述,访问库)
  • pyMySQL(MySQL连接器)
  • scikit-learn(机器学习)
  • TensorFlow(神经网络深度学习)
  • scikit-learn(机器学习算法)
  • keras(高级神经网络API)

下载activeppython社区版开始或联系我们了解有关在组织中使用ActivePython的更多信息。

推荐阅读

10个用于机器学习的Python包

机器学习的Python备忘单:聪明的提示和技巧

雷米米