热门关键词:

使用Python进行机器学习

添加时间:2020-10-22 09:39:30

来源:

浏览:

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


搭建环境


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


pip安装numpy scipy scikit-learn 

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


机器学习概述


机器学习涉及使用给定数据集对计算机进行训练,并使用该训练来预测给定新数据的属性。例如,我们可以通过向计算机提供1000张猫的图像和1000张以上不是猫的图像来训练计算机,并每次向计算机告知图片是否是猫。然后,如果我们向计算机显示新图像,则通过上述培训,计算机应该能够分辨出该新图像是否是猫。

训练和预测过程涉及使用专用算法。我们将训练数据输入算法,然后算法使用该训练数据对新的测试数据进行预测。一种这样的算法是K最近邻分类(KNN分类)。它获取测试数据,并从测试数据集中找到与该数据最接近的k个数据值。然后,它选择最大频率的邻居并给出其属性作为预测结果。例如,如果训练集为:


花瓣大小FLOWER_TYPE
1个一种
2b
1个一种
2b
3C
4d
3C
2b
5一种



现在,我们要预测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解释器上轻松运行,前提是您已安装了所需的库。


filter_none

编辑

play_arrow


亮度_4

# 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: {} ".format(prediction)) 

print("Predicted feature name: {} ".format

    (iris_dataset["target_names"][prediction])) 

print("Test score: {:.2f}".format(kn.score(X_test, y_test))) 

输出:


预测的目标名称:[0]

预测的特征名称:['setosa']

测试成绩: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模块来实现它。


用户名 Name
评论 Comment

关注

APP开发

  • 地 址:四川省成都市人民南路4段成科西路三号
  • 电 话:18215660330
  • 手机:18215660330
  • 传 真:18215660330
  • 邮 箱:179001057@qq.com
  • 邮政编码:610000