24小时学会python_使用Python进行机器学习简介

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

设置环境

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

pip install numpy scipy scikit-learn

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

机器学习概述

机器学习涉及使用给定数据集训练计算机,并使用该训练来预测给定新数据的属性。例如,我们可以通过喂养1000张猫的图像和1000张不是猫的图像来训练计算机,并且每次都告诉计算机图片是否是猫。然后,如果我们向计算机显示一个新图像,那么从上面的训练中,计算机应该能够判断这个新图像是否是猫。

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

PETAL_SIZEFLOWER

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脚本。在这里,我们使用着名的虹膜花数据集来训练计算机,然后为计算机提供新的价值以对其进行预测。该数据集由来自三种鸢尾(Iris setosa,Iris virginica和Iris versicolor)中的每一种的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,对于virginica为1,对于versicolor为2)。

该方法以75:25的比例随机将数据集划分为训练和测试数据。然后我们将kNeighborsClassifier方法封装在kn变量中,同时保持k = 1的值。该方法中包含K个最近邻算法。

在下一行中,我们将训练数据拟合到此算法中,以便计算机可以使用此数据进行训练。现在培训部分已经完成。

测试数据集

现在我们在一个名为x_new的numpy数组中有一个新花的尺寸,我们想要预测这种花的种类。我们使用预测方法执行此操作,该方法将此数组作为输入并将预测目标值作为输出吐出。

所以预测的目标值为0,代表setosa。所以这朵花有很好的机会成为setosa物种。

最后我们发现测试分数是no的比率。预测发现正确和完全预测。我们使用得分方法来做到这一点,该方法基本上将测试集的实际值与预测值进行比较。

因此,我们看到了机器学习是如何工作的,并开发了一个基本程序来使用python中的scikit-learn模块来实现它。

注:本文系翻译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值