基于Python的光谱分类建模算法——KNN(K近邻算法)

简介

K近邻(K-Nearest Neighbor, KNN)算法是一种常用的监督学习分类算法,它的基本思想是如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。本文将介绍如何使用Python中的scikit-learn库实现KNN算法,并应用于光谱数据分类任务。

数据准备

在开始建模之前,需要准备好训练集和测试集数据。这里假设数据已经按照训练集和测试集分别存储在train.csvtest.csv文件中,并且数据的最后一列为类别标签。可以使用pandas库读取csv文件:

import pandas as pd

data_Train = pd.read_csv("train.csv")
data_Test = pd.read_csv("test.csv")

读取后的数据为DataFrame格式,需要转换为numpy数组以便后续使用:

import numpy as np

data_Train = np.array(data_Train)
data_Test = np.array(data_Test)

接下来,将数据划分为特征和标签两部分:

x_train = data_Train[0:, :-1]
x_test = data_Test[0:, :-1]
y_train = data_Train[0:, -1]
y_test = data_Test[0:, -1]

模型训练

使用scikit-learn库中的KNeighborsClassifier类来创建KNN分类器对象:

from sklearn.neighbors import KNeighborsClassifier

KNN = KNeighborsClassifier(n_neighbors=3, weights='uniform', p=2)

这里设置了三个参数:

  • n_neighbors:最近邻样本数,即K值,这里设为3
  • weights:表示各个最近邻样本的权重,可以是'uniform'(均等权重)或'distance'(距离加权),这里选择'uniform'
  • p:距离度量参数,p=1表示曼哈顿距离,p=2表示欧氏距离,这里选择p=2

接下来,使用fit方法训练分类器:

KNN.fit(x_train, y_train)

模型评估

模型训练完成后,可以对训练集和测试集的分类准确率进行评估:

train_acc = KNN.score(x_train, y_train)
test_acc = KNN.score(x_test, y_test)
print("训练准确率:", train_acc)
print("测试准确率:", test_acc)

除了准确率之外,还可以计算混淆矩阵(Confusion Matrix)来评估分类器的性能:

from sklearn.metrics import confusion_matrix

train_pred = KNN.predict(x_train)
test_pred = KNN.predict(x_test)

print('训练集混淆矩阵为:\n',confusion_matrix(train_pred,y_train))
print('测试集混淆矩阵为:\n',confusion_matrix(test_pred,y_test))
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值