下面就是详细讲解“原生Python实现KNN分类算法”的完整攻略。
1. KNN算法简介
KNN(K-Nearest Neighbor)算法是一种基本的分类和回归算法。KNN分类算法是根据所求点的k个样本中所属类别最多的一类来对所求点分类。
2. KNN算法步骤
2.1 数据集预处理
将整个数据集分为两部分:训练集和测试集。我们用训练集来进行模型的训练,用测试集来进行模型的验证。
2.2 计算距离
计算测试数据与训练数据之间的欧几里德距离,选取k个距离最近的点。
2.3 进行分类
对选取的k个点进行分类,统计出k个点中所属类别最多的一种类别作为测试数据的类别。
2.4 计算分类准确率
将测试数据的标签与预测结果相比较,统计出准确率。
3. Python代码实现KNN算法
以下是Python代码实现KNN算法的示例:
import numpy as np
import operator
# KNN分类算法实现
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0]
diffMat = np.tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5
sortedDistIndicies = distances.argsort()
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]
# 测试数据集
def createDataSet():
group = np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group,labels
# 主函数
def main():
group,labels = createDataSet()
print(classify0([0,0], group, labels, 3))
if __name__ == '__main__':
main()
以上代码是一个简单的分类实现,我们可以根据实际需求对代码进行修改。
4. 示例说明
我们以鸢尾花数据集为例。首先,我们将数据集分为训练集和测试集,并将转化为NumPy数组。以下是示例代码:
import numpy as np
from sklearn.datasets import load_iris
from sklearn import neighbors, metrics
from sklearn.model_selection import train_test_split
# 加载数据集并划分数据集
iris = load_iris()
data = iris.data
target = iris.target
train_data, test_data, train_target, test_target = train_test_split(data, target, test_size=0.3)
接下来,我们使用KNN分类算法来对数据进行分类。以下是示例代码:
# 定义KNN模型并训练
knn = neighbors.KNeighborsClassifier(n_neighbors=5)
knn.fit(train_data, train_target)
# 预测并计算准确率
predicted = knn.predict(test_data)
accuracy = metrics.accuracy_score(test_target, predicted)
print('KNN准确率:%.2f%%' % (accuracy * 100))
在上述代码中,我们使用sklearn库的neighbors包来定义KNN模型并训练。然后,我们使用测试集对模型进行测试,并计算KNN的准确率。
5. 总结
通过本篇攻略的阅读和示例代码的运行,相信你已经了解了KNN分类算法的基本原理和Python代码实现方法。在实际应用中,可以根据需求对代码进行修改和扩展,实现更加丰富和实用的分类功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生python实现knn分类算法 - Python技术站