重庆美邦 网站建设,wordpress 下拉式菜单,南阳做网站多少电话,山亭 网站建设目录 编程实现 kNN 算法。一、步骤二、实现代码三、总结知识1、切片2、iloc方法3、归一化4、MinMaxScale#xff08;#xff09;5、划分测试集、训练集6、KNN算法 .py 编程实现 kNN 算法。
1、读取excel表格存放的Iris数据集。该数据集有5列#xff0c;其中前4列是条件属性… 目录 编程实现 kNN 算法。一、步骤二、实现代码三、总结知识1、切片2、iloc方法3、归一化4、MinMaxScale5、划分测试集、训练集6、KNN算法 .py 编程实现 kNN 算法。
1、读取excel表格存放的Iris数据集。该数据集有5列其中前4列是条件属性最后1列是类别已经表示为数值。 2、对数据集进行按列归一化使每列的取值范围是[0,1]. 3、从数据集中随机选取70%作为训练数据集剩下30%用来测试k5. 4、输出测试数据的分类正确率即正确分类的测试样本数除以总的测试样本数。
一、步骤
①准备数据对数据进行预处理 ②计算测试样本点也就是待分类点到其他每个样本点的距离 。 ③对每个距离进行排序然后选择出距离最小的K个点。 ④对K个点所属的类别进行比较根据少数服从多数的原则将测试样本点归入在K个点中占比最高的那一类。
二、实现代码
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import accuracy_score# 读取excal表格数据
iris_datapd.read_csv(Iris.csv)# 获取条件属性和类别
xiris_data.iloc[:,:-1] #截取前4列属性
yiris_data.iloc[:,-1] #截取最后一列类别# 数据归一化
scalerMinMaxScaler()
x_normalizedscaler.fit_transform(x)# 划分测试集30%、训练集70%
x_train,x_text,y_train,y_texttrain_test_split(x_normalized,y,test_size0.3,random_state42)knn_classifierKNeighborsClassifier(n_neighbors5)# 5个最近相邻作为参考
knn_classifier.fit(x_train,y_train)# 训练分类器y_predknn_classifier.predict(x_text)# 训练好的分类剩下的测试集
accuracyaccuracy_score(y_pred,y_text)# 比较测试精度三、总结知识
1、切片
语法
start:stop:stepstart:起始索引 stop:终止索引 step:步长 举例
a[1,2,3,4,5,6,7,8,9,10]
a[2:5:]a[::-1]a[-1::]a[:-1:]a[-5:-1:]2、iloc方法
iloc是Pandas中按位置整数位置索引数据的方法
DataFrame.iloc[索引行索引列]其中索引行索引列可以是单个整数、整数列表/数组、切片对象
iloc[:,:-1] #取前四列
iloc[:,-1] #取最后一列3、归一化
什么是归一化 归一化是一种数据处理方法它将数据转换为一定范围内的数值。这个范围可以是任意的但是最常用的范围是0到1或-1到1之间。归一化的作用是使得不同数据在参与运算和比较时更加公平和准确从而提高模型的精度和可靠性。 为什么要归一化 在机器学习中由于不同的特征在量级和范围上的不同使得它们的贡献不同。在一些模型中例如kNN、KMeans等特征之间的距离就成了模型的核心而这些模型在计算距离时需要保证特征之间具有同样的权重这就需要对特征进行归一化。对于另一些模型如神经网络特征之间的权重影响了模型的收敛速度和稳定性进行归一化可以加快收敛速度和降低过拟合的情况。
4、MinMaxScale
MinMaxScaler 是 scikit-learn 库中的一个类用于进行最小-最大缩放归一化操作。归一化是一种将数据缩放到指定范围的方法通常是 [0, 1]。这有助于确保不同特征之间的数值差异不会对机器学习模型产生不良影响。 具体来说MinMaxScaler 将每个特征缩放到给定的最小值和最大值之间。其主要方法是使用以下公式
from sklearn.preprocessing import MinMaxScaler# 创建MinMaxScaler对象
scaler MinMaxScaler()# 对数据进行归一化
X_normalized scaler.fit_transform(X)fit_transform 方法将计算训练集的最小值和最大值并使用上述公式对训练集进行归一化
5、划分测试集、训练集
X_train, X_test, y_train, y_test train_test_split(X_normalized, y, test_size0.3, random_state42)X_normalized: 归一化后的特征矩阵即条件属性。
y: 目标类别列。
这行代码将数据集拆分为训练集和测试集其中X_train: 训练集的特征矩阵。
X_test: 测试集的特征矩阵。
y_train: 训练集的目标类别。
y_test: 测试集的目标类别。6、KNN算法
knn_classifier KNeighborsClassifier(n_neighbors5)创建了一个 kNN 分类器对象。n_neighbors5 表示选择最近的5个邻居作为参考来进行分类
knn_classifier.fit(X_train, y_train)使用训练数据来拟合训练kNN 分类器。X_train 是训练集的特征矩阵y_train 是训练集的目标类别列。通过这个过程kNN 分类器学会了如何根据特征对数据进行分类
.py
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import accuracy_score# 读取Excel表格数据用csv存储
iris_data pd.read_csv(Iris.csv)# 获取条件属性和类别
X iris_data.iloc[:, :-1] # 前4列是条件属性
y iris_data.iloc[:, -1] # 最后1列是类别# 对数据进行按列归一化
scaler MinMaxScaler()
X_normalized scaler.fit_transform(X)# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test train_test_split(X_normalized, y, test_size0.3)# 创建kNN分类器并进行训练
knn_classifier KNeighborsClassifier(n_neighbors5)
knn_classifier.fit(X_train, y_train)# 在测试集上进行预测
y_pred knn_classifier.predict(X_test)# 计算分类正确率
accuracy accuracy_score(y_test, y_pred)
print(f分类正确率: {accuracy})