下面是详细讲解“Python实现K-近邻算法的示例代码”的完整攻略,包含两个示例说明。
K-近邻法
K-近邻算法是种常用的分类算法,其基本思想将新的数据点与已知数据点进行比较,找到最相似的K个数据点将新的数据点归类为这K个数据中出现最多的类别。K-近邻算法的K值和距离度量方式是法的两重要参数。
Python实现K-近邻算法
要实现K近邻算法,可以使用Python中的NumPy和Scikit-learn库。以下是算法的基本步骤:
-
使用NumPy库读取数据,并将其转换为矩阵式。
-
使用Scikit-learn库的train_test_split函数将数据集分为训练集和测试集。
-
使用Scikit-learn库的KNeighborsClassifier类创建K-近邻分类器,并设置K值和距离度量方式。
-
使用K-近邻分类器的fit方法将训练集拟合到模型中。
-
使用K-近邻分类器的predict方法对测试集进行预测,并计算测准确率。
以下是一个示例代码,用于K-近邻算法:
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 读取数据
data = np.loadtxt('data.txt')
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data[:, :-1], data[:, -1], test_size=0.2, random_state=42)
# 创建K-近邻分类器
k = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
# 拟合训练集
knn.fit(X_train, y_train)
# 预测测试集
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = np.mean(y == y_test)
print('Accuracy:', accuracy)
这个代码使用NumPy库读取数据,并将其转换为矩阵形式。然后,我们使用Scikit-learn库的train_test_split函数将数据集分为训练集和测试集。下来,我们使用KNeighborsClassifier类创建K-近邻分类器,并设置K值为3和距离度量方式为欧几里得距离。然后,我们使用K-近邻分类器的fit方法将训练集拟合到模型中,并使用predict方法对测试集进行预测最后,我们计算预测准确率。
示例1:使用K-近邻算法分类鸢尾花数据集
让我们使用K-近邻算法分类鸢尾花数据集。我们将以下代码:
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 加载鸢尾花数据集
iris = load_iris()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test(iris.data, iris, test_size=0.2, random_state=42)
# 创建K-近邻分类器
knn = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
# 拟合训练集
knn.fit(X_train, y_train)
# 预测测试集
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = np.mean(y_pred == y_test)
print('Accuracy:', accuracy)
这个代码使用Scikit-learn库的load_iris函数加载鸢尾数据集。然后,我们train_test_split函数将数据集分为训练集和测试集。接下来,我们使用KNeighborsClassifier类创建K-近邻分类器,并设置K值为3和距离度量方式为欧几里得距离。然后,我们使用K-近邻分类器fit方法将训练集拟合到模型中,并使用predict方法对测试集进行预测。最后,我们计算预测准确率。
输出结果:
Accuracy: 1.0
这个结果表示,使用K-近邻算法对鸢尾花数据集进行分类的准确率为100%。
示例2:使用K-近邻算分类手写数字数据集
让我们使用K-近邻算法分类手写数字数据集。我们将以下代码:
import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 加载手写数字数据集
digits = load_digits()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split.data, digits.target, test_size=0.2, random_state=42)
# 创建K-近邻分类器
knn = KNeighborsClassifier(n_neighbors=3, metric='euclidean')
# 拟合训练集
knn.fit(X_train, y_train)
# 预测测试集
_pred = knn.predict(X_test)
# 计算准确率
= np.mean(y_pred == y_test)
print('Accuracy:', accuracy)
这个代码使用Scikit-learn库的load_digits函数加载手写数字数据集。然后,我们使用train_test_split函数将数据集分为训练集和测试集。接下来,我们使用KNeighborsClassifier类创建K-近邻分类器,并设置K值为3和距离度量方式为欧几里得距离。然后,我们使用K-近邻分类器的fit方法将训练集拟合模型中,并使用predict方法对测试集进行预测。最后,我们计算预测准确率。
输出结果为:
Accuracy: 0.8888888888889
这个结果表示,使用K-近邻算法对手写数字数据集进行分类的准确率为98.89%。
希这些示例说明帮助你理解如何使用Python实现K-近邻算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现K-近邻算法的示例代码 - Python技术站