本文面向当前和有抱负的机器学习实践者,他们希望实现对现实世界机器学习问题的解决方案。这是一篇介绍性文章,适用于没有机器学习或人工智能(AI)知识的初学者。 这篇文章,我将介绍机器学习的基本概念,它的应用,如何建立我们的工作环境,以及一个简单项目的实践。机器学习简介 机器学习是一种人工智能(AI),它为计算机提供了学习能力,而不需要显式编程。机器学习的分类 从广义上讲,机器学习可分为三类:监督学习无监督学习强化学习为什么是Python? Python已经成为许多数据科学应用程序的通用语言,为数据科学家提供了大量的通用和特殊功能。它将通用编程语言的强大功能与领域特定脚本语言(如MATLAB或R)的易用性结合起来。它有用于数据加载、可视化、统计、自然语言处理、图像处理等的库。它能够使用终端或其他工具(如木星笔记本)直接与代码交互。重要性还是机器学习数据生产的快速增长解决人类难以解决的复杂问题包括金融在内的各个部门的决策找到隐藏的模式并从数据中提取有用的信息。机器学习的应用自动驾驶汽车机器人学语言处理视觉处理股市走势预测推荐系统图像和语音识别预测检出机器学习生命周期数据收集提取 这是机器学习生命周期的第一个阶段,它涉及到识别和获取所有与数据相关的问题。 我们可以从许多数据源收集数据。其中包括文件、数据库、互联网或移动设备。 这一步骤包括以下任务: 确定各种数据来源 收集数据 综合从不同来源获得的数据数据准备 数据准备是一个步骤,我们把我们的数据放在一个合适的地方,并准备它用于我们的机器学习培训。 在收集数据之后,我们需要准备好它,以便我们可以在我们的项目中使用它。这一阶段可分为两个阶段: i)。数据勘探 它被用来找出我们要处理的是哪种数据。我们必须了解数据的特征、格式和质量。在这个过程中,我们发现了相关性、一般趋势和异常值。 (二)。数据预处理争论 数据预处理是将原始数据转换成可理解格式的过程。 在实际应用程序中,收集到的数据可能存在各种问题,包括: 缺失的价值 重复数据 无效数据 噪音数据分析 这一步的目标是创建一个机器学习模型,该模型将使用各种分析方法研究数据,然后评估结果。首先对问题类型进行识别,然后选择分类、回归、聚类分析、关联等机器学习技术,然后利用准备好的数据构建模型,最后对模型进行评价。模型训练 在这一步中,我们训练我们的模型,以提高其性能,以更好地解决问题。需要对模型进行培训,以便它能够理解各种模式、规则和特性。模型试验 一旦机器学习模型被训练到特定的数据集上,我们就会对它进行测试。在这个阶段,我们通过提供一个测试数据集来验证我们的模型的正确性。 模型的正确性准确性取决于根据项目或问题的需求对其进行测试。模型评价与改进 模型评估是建立模型的一个重要步骤。它有助于确定最优的模型来表示我们的数据,以及该模型在未来的表现。部署 机器学习生命周期的最后一步是部署,在实际系统中部署模型。流行的用于机器学习的Python库和工具木星笔记本 它是一个在浏览器中运行代码的交互式环境。Numpy NumPy是一个python库,主要用于处理数组并对数组执行各种各样的数学操作。熊猫 熊猫是一个用于数据争论和分析的Python库。Matplotlib 它是Python中的主要科学绘图库。它提供了制作出版物质量可视化的功能,如线条图、直方图、散射图等。 情节等等。Scikit学习 ScikitLearning(SkLearning)是Python中用于机器学习的最有用和最健壮的库。它通过Python中的一致性接口为机器学习和统计建模提供了有效的工具选择,包括分类、回归、聚类和降维。环境设置 安装Anaconda和Python 下载并安装Anaconda(Python3。6版本)下载然后根据你的操作系统进行选择。打开终端通过键入以下命令,确认Conda已正确安装: condaV通过键入以下命令确认Python安装正确: pythonV确认您的Conda环境是最新的,输入:condaupdatecondacondaupdateanaconda实践之手:对虹膜种类的认识与分类 在本节中,我们将介绍一个简单的机器学习应用程序,并创建我们的第一个模型。 我们将在本例中使用的数据是Iris数据集,这是机器学习和统计中的一个经典数据集。它包含在Scikit学习在数据集模块中。我们可以通过调用loadiris函数来加载它:fromsklearn。datasetsimportloadirisirisdatasetloadiris() 此数据集包含3种不同类型的虹膜(Setosa、Versicolour和Virica)花瓣和萼片长度,存储在150x4numpy。ndarray中。 样品行和柱分别为萼片长度、萼片宽度、花瓣长度和花瓣宽度。我们的目标是建立一个机器学习模型,可以从已知物种虹膜的测量中学习,从而预测新虹膜的种类。 虹膜花的部分 这是一个监督学习问题,因为我们有测量,我们知道正确的虹膜物种。在这种情况下,我们希望期待多种选择之一(虹膜物种)。这是一个分类问题的例子。可能的输出(各种虹膜物种)被称为类别。这是一个三级分类问题,因为数据集中的每个虹膜都属于三个类别中的一个。这种花的种类是一个数据点(虹膜)的期望输出。数据点所属的物种称为其标签。print(Target:{}。format(irisdataset〔target〕)) 输出量Target:〔0000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111222222222222222 这些数字的含义由虹膜〔‘Targetname’〕数组给出:0表示setosa,1表示versicolor,2表示virginica。衡量成功:培训和测试数据 我们不能使用生成模型所用的数据来评估模型。这是因为我们的模型总是能够记住整个训练集,因此,总是会预测训练集中任何给定点的正确标签。 为了评估模型的性能,我们提供了新的数据(以前从未见过的数据)和标签。这通常是通过将标记的数据(在这种情况下,我们的150个花卉测量)分成两半来实现的。训练数据或训练集是用于开发机器学习模型的数据的子集。其余的数据将用于评估模型的性能;这称为测试数据、测试集或保持集。 SICKITLearning中的火车测试拆分功能是一个为您调整和分隔数据集的函数。作为训练集,此函数提取数据中75的行,以及该数据的附带标签。测试集由其余25的数据以及其余的标签组成。 注:在ScikitLearning中,数据通常用大写X表示,而标签则由 小写y。让我们对我们的数据调用TRANTESTSplit并使用这个名称分配输出:fromsklearn。modelselectionimporttraintestsplitXtrain,Xtest,ytrain,ytesttraintestsplit(irisdataset〔data〕,irisdataset〔target〕,randomstate0) 列车TESTSplit函数的输出是XTRANTEST、YTRANY和YTEST,它们都是NumPy数组。XTRANY包含数据集的75的行,而Xtest包含其余的25print(Xtrainshape:{}。format(Xtrain。shape))print(ytrainshape:{}。format(ytrain。shape)) 产出:Xtrainshape:(112,4)ytrainshape:(112,)检查我们的数据 检查数据的最佳方法之一是可视化数据。一种方法是使用散点图。数据的散点图将一个特征沿x轴,另一个特征沿y轴,并为每个数据点绘制一个点。createdataframefromdatainXtrainlabelthecolumnsusingthestringsinirisdataset。featurenamesirisdataframepd。DataFrame(Xtrain,columnsirisdataset。featurenames)createascattermatrixfromthedataframe,colorbyytraingrrpd。scattermatrix(irisdataframe,cytrain,figsize(15,15),markero,histkwds{bins:20},s60,alpha。8,cmapmglearn。cm3) 根据虹膜所属物种对数据点进行着色。为了创建这个图,我们首先将NumPy数组转换为一个熊猫DataFrame。熊猫有一个功能,可以创建一对名为分散矩阵的图形。此矩阵的对角线中填充了每个特征的直方图: 用萼片和花瓣的测量,这三个类别的区别似乎相对较好,如图中所示。这意味着机器学习模型几乎肯定能够区分它们。模型建筑:K近邻 我们将使用k近邻分类器,这是很容易理解的训练集是唯一需要存储的东西,同时创建这个模型。该算法识别训练集中与新点最近的点,以创建新数据点的预测。然后将此培训点的标签分配给新的数据点。 与仅使用与新数据点最接近的邻居相比,k中的k最近邻表示在培训中可以包含任何固定数量的邻居(例如,最近的三个或五个邻居)。然后,可以使用这些邻居中的多数类来构造预测。fromsklearn。neighborsimportKNeighborsClassifierknnKNeighborsClassifier(nneighbors1)knn。fit(Xtrain,ytrain) 产出:KNeighborsClassifier(algorithmauto,leafsize30,metricminkowski,metricparamsNone,njobs1,nneighbors1,p2,weightsuniform)作出预测 在建立了我们的模型之后,我们现在已经做好了预测的准备。为了进行预测,我们调用KNN对象的预测方法:predictionknn。predict(Xnew)print(Prediction:{}。format(prediction))print(Predictedtargetname:{}。format(irisdataset〔targetnames〕〔prediction〕)) 我们的模型预测这个新的虹膜属于0级,这意味着它的种类是 赛索萨。模型评价 这就是我们之前创建的测试集出现的地方。这个数据不是用来建立模型的,但是我们知道测试中每个虹膜的正确种类是什么。 准备好了。因此,我们可以对测试数据中的每个虹膜进行预测,并将其与其标签(已知物种)进行比较。我们可以通过计算精确性来衡量该模型的工作效果,这是预测正确物种的花卉的比例:ypredknn。predict(Xtest)print(Testsetpredictions:{}。format(ypred))print(Testsetscore:{:。2f}。format(np。mean(ypredytest))) 产出:Testsetpredictions:〔21020201112111101100210020011021022102〕Testsetscore:0。97 对于该模型,测试集的精度约为0。97,这意味着我们对测试集中97的虹膜进行了正确的预测。 原文Https:dev。toemmadonerymachinelearningwithpythonintroduction4e67