用Python机器学习:游戏攻略

本文面向当前和有抱负的机器学习实践者,他们希望实现对现实世界机器学习问题的解决方案。这是一篇介绍性文章,适用于没有机器学习或人工智能(AI)知识的初学者。

这篇文章,我将介绍机器学习的基本概念,它的应用,如何建立我们的工作环境,以及一个简单项目的实践。

机器学习简介

机器学习是一种人工智能(AI),它为计算机提供了学习能力,而不需要显式编程。

机器学习的分类

从广义上讲,机器学习可分为三类:

  1. 监督学习
  2. 无监督学习
  3. 强化学习

为什么是Python?

Python已经成为许多数据科学应用程序的通用语言,为数据科学家提供了大量的通用和特殊功能。

重要性还是机器学习

  1. 数据生产的快速增长
  2. 解决人类难以解决的复杂问题
  3. 包括金融在内的各个部门的决策
  4. 找到隐藏的模式并从数据中提取有用的信息。

机器学习的应用

机器学习生命周期

这是机器学习生命周期的第一个阶段,它涉及到识别和获取所有与数据相关的问题。

我们可以从许多数据源收集数据。其中包括文件、数据库、互联网或移动设备。

这一步骤包括以下任务:

-确定各种数据来源

-收集数据

-综合从不同来源获得的数据

数据准备是一个步骤,我们把我们的数据放在一个合适的地方,并准备它用于我们的机器学习培训。

在收集数据之后,我们需要准备好它,以便我们可以在我们的项目中使用它。这一阶段可分为两个阶段:

i)。数据勘探

它被用来找出我们要处理的是哪种数据。我们必须了解数据的特征、格式和质量。在这个过程中,我们发现了相关性、一般趋势和异常值。

(二)。数据预处理/争论

数据预处理是将原始数据转换成可理解格式的过程。

在实际应用程序中,收集到的数据可能存在各种问题,包括:

-缺失的价值

-重复数据

-无效数据

-噪音

这一步的目标是创建一个机器学习模型,该模型将使用各种分析方法研究数据,然后评估结果。首先对问题类型进行识别,然后选择分类、回归、聚类分析、关联等机器学习技术,然后利用准备好的数据构建模型,最后对模型进行评价。

在这一步中,我们训练我们的模型,以提高其性能,以更好地解决问题。需要对模型进行培训,以便它能够理解各种模式、规则和特性。

一旦机器学习模型被训练到特定的数据集上,我们就会对它进行测试。在这个阶段,我们通过提供一个测试数据集来验证我们的模型的正确性。

模型的正确性/准确性取决于根据项目或问题的需求对其进行测试。

模型评估是建立模型的一个重要步骤。它有助于确定最优的模型来表示我们的数据,以及该模型在未来的表现。

机器学习生命周期的最后一步是部署,在实际系统中部署模型。

流行的用于机器学习的Python库和工具

它是一个在浏览器中运行代码的交互式环境。

NumPy是一个python库,主要用于处理数组并对数组执行各种各样的数学操作。

熊猫是一个用于数据争论和分析的Python库。

它是Python中的主要科学绘图库。它提供了制作出版物质量可视化的功能,如线条图、直方图、散射图等。

情节等等。

Scikit-Learning(SkLearning)是Python中用于机器学习的最有用和最健壮的库。它通过Python中的一致性接口为机器学习和统计建模提供了有效的工具选择,包括分类、回归、聚类和降维。

环境设置

安装Anaconda和Python

下载并安装Anaconda(Python3.6版本)下载然后根据你的操作系统进行选择。

  1. 打开终端
  2. 通过键入以下命令,确认Conda已正确安装:

conda -V

  1. 通过键入以下命令确认Python安装正确:

python -V

  1. 确认您的Conda环境是最新的,输入:
conda update conda
conda update anaconda

实践之手:对虹膜种类的认识与分类

在本节中,我们将介绍一个简单的机器学习应用程序,并创建我们的第一个模型。

我们将在本例中使用的数据是Iris数据集,这是机器学习和统计中的一个经典数据集。它包含在Scikit-学习在数据集模块中。我们可以通过调用load_iris函数来加载它:

from sklearn.datasets import load_iris
iris_dataset = load_iris()

此数据集包含3种不同类型的虹膜(Setosa、Versicolour和Virica)花瓣和萼片长度,存储在150x4 numpy.ndarray中。

样品行和柱分别为萼片长度、萼片宽度、花瓣长度和花瓣宽度。我们的目标是建立一个机器学习模型,可以从已知物种虹膜的测量中学习,从而预测新虹膜的种类。

虹膜花的部分

用Python机器学习:游戏攻略

这是一个监督学习问题,因为我们有测量,我们知道正确的虹膜物种。在这种情况下,我们希望期待多种选择之一(虹膜物种)。这是一个分类问题的例子。可能的输出(各种虹膜物种)被称为类别。这是一个三级分类问题,因为数据集中的每个虹膜都属于三个类别中的一个。这种花的种类是一个数据点(虹膜)的期望输出。数据点所属的物种称为其标签。

print("Target:
{}".format(iris_dataset['target']))

输出量

Target:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

这些数字的含义由虹膜[‘Target_name’]数组给出:0表示setosa,1表示versicolor,2表示virginica。

衡量成功:培训和测试数据

我们不能使用生成模型所用的数据来评估模型。这是因为我们的模型总是能够记住整个训练集,因此,总是会预测训练集中任何给定点的正确标签。

为了评估模型的性能,我们提供了新的数据(以前从未见过的数据)和标签。这通常是通过将标记的数据(在这种情况下,我们的150个花卉测量)分成两半来实现的。训练数据或训练集是用于开发机器学习模型的数据的子集。其余的数据将用于评估模型的性能;这称为测试数据、测试集或保持集。

SICKIT-Learning中的火车测试拆分功能是一个为您调整和分隔数据集的函数。作为训练集,此函数提取数据中75%的行,以及该数据的附带标签。测试集由其余25%的数据以及其余的标签组成。

注:在Scikit-Learning中,数据通常用大写X表示,而标签则由

小写y。让我们对我们的数据调用TRAN_TEST_Split并使用这个名称分配输出:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
 iris_dataset['data'], iris_dataset['target'], random_state=0)

列车_TEST_Split函数的输出是X_TRANTEST、Y_TRANY和Y_TEST,它们都是NumPy数组。X_TRANY包含数据集的75%的行,而X_test包含其余的25%

print("X_train shape: {}".format(X_train.shape))
print("y_train shape: {}".format(y_train.shape))

产出:

X_train shape: (112, 4)
y_train shape: (112,)

检查我们的数据

检查数据的最佳方法之一是可视化数据。一种方法是使用散点图。数据的散点图将一个特征沿x轴,另一个特征沿y轴,并为每个数据点绘制一个点。

# create dataframe from data in X_train
# label the columns using the strings in iris_dataset.feature_names
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
# create a scatter matrix from the dataframe, color by y_train
grr = pd.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o',
 hist_kwds={'bins': 20}, s=60, alpha=.8, cmap=mglearn.cm3)

根据虹膜所属物种对数据点进行着色。为了创建这个图,我们首先将NumPy数组转换为一个熊猫DataFrame。熊猫有一个功能,可以创建一对名为分散矩阵的图形。此矩阵的对角线中填充了每个特征的直方图:

用Python机器学习:游戏攻略

用萼片和花瓣的测量,这三个类别的区别似乎相对较好,如图中所示。这意味着机器学习模型几乎肯定能够区分它们。

模型建筑:K近邻

我们将使用k近邻分类器,这是很容易理解的训练集是唯一需要存储的东西,同时创建这个模型。该算法识别训练集中与新点最近的点,以创建新数据点的预测。然后将此培训点的标签分配给新的数据点。

与仅使用与新数据点最接近的邻居相比,k中的k最近邻表示在培训中可以包含任何固定数量的邻居(例如,最近的三个或五个邻居)。然后,可以使用这些邻居中的多数类来构造预测。

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

产出:

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
 metric_params=None, n_jobs=1, n_neighbors=1, p=2,
 weights='uniform')

作出预测

在建立了我们的模型之后,我们现在已经做好了预测的准备。为了进行预测,我们调用KNN对象的预测方法:

prediction = knn.predict(X_new)
print("Prediction: {}".format(prediction))
print("Predicted target name: {}".format(
 iris_dataset['target_names'][prediction]))

我们的模型预测这个新的虹膜属于0级,这意味着它的种类是

赛索萨。

模型评价

这就是我们之前创建的测试集出现的地方。这个数据不是用来建立模型的,但是我们知道测试中每个虹膜的正确种类是什么。

准备好了。因此,我们可以对测试数据中的每个虹膜进行预测,并将其与其标签(已知物种)进行比较。我们可以通过计算精确性来衡量该模型的工作效果,这是预测正确物种的花卉的比例:

y_pred = knn.predict(X_test)
print("Test set predictions:
 {}".format(y_pred))
print("Test set score: {:.2f}".format(np.mean(y_pred == y_test)))

产出:

Test set predictions:
 [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0 2]
Test set score: 0.97

对于该模型,测试集的精度约为0.97,这意味着我们对测试集中97%的虹膜进行了正确的预测。


原文 Https://dev.to/emma_donery/machine-learning-with-python-introduction-4e67

展开阅读全文

页面更新:2024-05-09

标签:萼片   机器   虹膜   熊猫   据点   数组   物种   模型   标签   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top