时间:2023-4-25来源:本站原创作者:佚名

本文将介绍一种称为监督学习的机器学习方法。我将向你展示如何使用Scikitlearn构建和优化kNN(kNearestNeightbor)分类器模型。这将是一个实践演练,我们能够在学习的同时实践。

我们将使用k-NN算法模型作为分类器模型,并使用Python作为编程语言。

通过本教程,我们将更好地了解机器学习以及如何实现监督学习分类器模型。

目录

监督学习步骤1-库步骤2-了解数据步骤3-kNN分类器模型如何改善-过拟合和欠拟合结尾监督学习

机器学习是一门使计算机能够在没有明确编程的情况下从数据中得出结论的科学。例如,学习预测电子邮件是否是垃圾邮件。另一个很好的例子是,通过观察花卉的图片,将它们分为不同的类别。以下两张图表显示了有监督和无监督学习之间的对比。

在监督学习中,数据分为两部分:特征和目标变量。任务是通过观察特征变量来预测目标变量。监督学习可用于两种不同的模型:分类和回归:

当目标变量是离散的,可以使用分类模型。当目标变量是连续的,使用回归模型。步骤1-库

在这一步中,我们将安装本教程所需的库。其中包括引言中提到机器学习库的主要的库。除此之外,我们将安装两个简单的库,它们是NumPy和Matplotlib。

安装库

我们转到终端窗口,输入以下命令开始安装过程:

pipinstallscikit-learn现在安装另外两个库:

pipinstallnumpymatplotlib导入库

完美!现在将它们导入到我们的程序中,以便使用。

在本教程中,我将使用Jupyter笔记本。因此,我创建了一个新笔记本并导入了以下库模块。在接下来的步骤中使用它们时,你将了解它们每一个的作用。

fromsklearnimportdatasetsfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.model_selectionimporttrain_test_splitimportmatplotlib.pyplotaspltimportnumpyasnp步骤2-了解数据

在本练习中,我们将使用数字数据。它也被称为MNIST。这是一个著名的数据开始建立监督学习模型。这些数据的好处是我们不需要下载任何东西;它在我们之前安装的sklearn模块附带了。下面是加载数据集的方式:

digits=datasets.load_digits()现在,让我们试着了解一下运行几行的数据集。

print(digits.keys)

Bunch是一个Python字典,提供属性样式访问。Bunch就像一个对象和一个字典。

print(digits.DESCR)

plt.imshow(digits.images[],cmap=plt.cm.gray_r,interpolation=nearest)plt.show()

步骤3-K近邻分类器

在库步骤中,我们已经导入了k-NN分类器模块。所以,我们要做的就是在数据集上使用它。

这一步是在项目中使用现成的sklearn模块的一个很好的练习。因为我们是在进行监督学习,所以必须对数据集进行标记。这意味着在训练数据的同时,我们也在教授结果。

k近邻算法(k-NN)是由thomascover提出的一种用于分类和回归的非参数方法。在这两种情况下,输入由特征空间中k个最接近的训练样本组成。输出取决于k-NN是用于分类还是用于回归。

特征和目标变量

我们从sklearn数据集中导入的数字数据有两个属性,即data和target。首先将这些部分分配给新变量。我们将特征(数据)称为X,标签(目标)称为y:

X=digits.datay=digits.target拆分数据

接下来,我们将使用train_test_split方法来分割数据。与其训练整个数据,不如将其分成训练和测试数据,以检查模型的准确性。

#test_size是将成为测试数据的比率,其余将是训练数据X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42,stratify=y)定义分类器

knn=KNeighborsClassifier(n_neighbors=7)模型拟合

knn.fit(X_train,y_train)准确度得分

print(knn.score(X_test,y_test))

这个分数是怎么计算的呢?首先,我们利用knn模型对X_test进行预测。然后把它和实际的标签进行比较,也就是y_test。以下是如何实际计算准确率的代码:

y_pred=knn.predict(X_test)number_of_equal_elements=np.sum(y_pred==y_test)number_of_equal_elements/y_pred.shape[0]

如何改善:过拟合和欠拟合

本节的重点是改进你的模型并找到正确的参数来创建完美的监督学习模型。下面是我在Amazon机器学习文档中发现的关于模型过拟合和欠拟合的一个很好的解释:

当模型在训练数据上表现不佳时,模型对训练数据的拟合不足。这是因为模型无法捕获输入示例(特征)和目标值(标签)之间的关系。

当你看到模型在训练数据上表现良好,但在评估数据上表现不佳时,该模型过拟合了你的训练数据。这是因为该模型是在记忆它所看到的数据,无法推广到看不见的例子。(参考:
转载请注明原文网址:http://www.gzdatangtv.com/bcyyys/bcyyys/18309.html

------分隔线----------------------------