📜  使用Python机器学习的简介

📅  最后修改于: 2021-04-17 02:29:56             🧑  作者: Mango

机器学习是一种人工智能(AI),它为计算机提供了无需明确编程即可学习的能力。机器学习专注于开发计算机程序,该程序在暴露于新数据时会发生变化。在本文中,我们将看到机器学习的基础知识,以及使用Python实现的简单机器学习算法。

搭建环境

Python社区开发了许多模块来帮助程序员实现机器学习。在本文中,我们将使用numpy,scipy和scikit-learn模块。我们可以使用cmd命令安装它们:

pip install numpy scipy scikit-learn 

更好的选择是为Python下载miniconda或anaconda软件包,这些软件包已预先捆绑在一起。请按照此处给出的说明使用anaconda。

机器学习概述

机器学习涉及使用给定数据集对计算机进行训练,并使用该训练来预测给定新数据的属性。例如,我们可以通过向计算机提供1000张猫的图像和1000张以上不是猫的图像来训练计算机,并每次向计算机告知图片是否是猫。然后,如果我们向计算机显示新图像,则通过上述培训,计算机应该能够分辨出该新图像是否是猫。
训练和预测过程涉及使用专用算法。我们将训练数据输入算法,该算法使用该训练数据对新的测试数据进行预测。一种这样的算法是K最近邻分类(KNN分类)。它获取测试数据,并从测试数据集中找到与该数据最接近的k个数据值。然后,它选择最大频率的邻居并给出其属性作为预测结果。例如,如果训练集是:

petal_size flower_type
1 a
2 b
1 a
2 b
3 c
4 d
3 c
2 b
5 a

现在,我们要预测2.5厘米大小花瓣的花朵类型。所以,如果我们决定不。在(K)= 3的邻居中,我们看到2.5的3个最近邻居是1、2和3。它们的频率分别是2、3和2。因此,最大频率的邻居为2,与之对应的花朵类型为b。因此,对于大小为2.5的花瓣,预测将是花朵类型b。

在IRIS数据集上使用Python实现KNN分类算法

这是一个演示knn分类算法的Python脚本。在这里,我们使用著名的鸢尾花数据集来训练计算机,然后为计算机赋予新的值以对其进行预测。数据集包含来自三种鸢尾花(鸢尾鸢尾,初春鸢尾和杂色鸢尾)中每种的50个样品。从每个样品测量四个特征:萼片和花瓣的长度和宽度,以厘米为单位。
我们使用此数据集训练程序,然后使用此训练来预测具有给定测量值的鸢尾花的种类。

请注意,该程序可能无法在Geeksforgeeks IDE上运行,但可以在您本地的Python解释器上轻松运行,前提是您已安装了所需的库。

# Python program to demonstrate
# KNN classification algorithm
# on IRIS dataser
  
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
from sklearn.model_selection import train_test_split
  
iris_dataset=load_iris()
  
X_train, X_test, y_train, y_test = train_test_split(iris_dataset["data"], iris_dataset["target"], random_state=0)
  
kn = KNeighborsClassifier(n_neighbors=1)
kn.fit(X_train, y_train)
  
x_new = np.array([[5, 2.9, 1, 0.2]])
prediction = kn.predict(x_new)
  
print("Predicted target value: {}\n".format(prediction))
print("Predicted feature name: {}\n".format
    (iris_dataset["target_names"][prediction]))
print("Test score: {:.2f}".format(kn.score(X_test, y_test)))

输出:

Predicted target name: [0]Predicted feature name: ['setosa']Test score: 0.97

程序说明:

训练数据集

  • 第一行导入虹膜数据集,该数据集已在sklearn模块中预定义。虹膜数据集基本上是一个表,其中包含有关各种鸢尾花的信息。
  • 我们从sklearn和numpy模块导入kNeighborsClassifier算法和train_test_split类,以供该程序使用。
  • 然后,将load_iris()方法封装在iris_dataset变量中。此外,我们使用train_test_split方法将数据集分为训练数据和测试数据。变量中的X前缀表示特征值(例如,花瓣长度等),y前缀表示目标值(例如,setosa为0,弗吉尼亚州为1,杂色为2)。
  • 该方法将数据集按75:25的比例随机分为训练数据和测试数据。然后我们将KNeighborsClassifier方法封装在kn变量中,同时保持k = 1的值。此方法中包含K最近邻算法。
  • 在下一行中,我们将训练数据拟合到该算法中,以便计算机可以使用此数据进行训练。现在,培训部分已完成。

测试数据集

  • 现在,我们在一个名为x_new的numpy数组中有了一朵新花的尺寸,我们想预测这朵花的种类。我们使用predict方法来执行此操作,该方法以该数组作为输入,并吐出预测目标值作为输出。
  • 因此,预测目标值为0,代表setosa。因此,这朵花很有可能是刚毛树的种。
  • 最后,我们找到测试分数,即“否”的比率。的预测找到正确的预测,并做出总预测。我们使用计分方法进行此操作,该方法基本上将测试集的实际值与预测值进行比较。

因此,我们了解了机器学习的工作原理,并开发了一个基本程序来使用Python的scikit-learn模块来实现它。