1、k近邻算法可以说是唯一一个没有训练过程的机器学习算法,它含有训练基础数据集,但是是一种没有模型的算法,为了将其和其他算法进行统一,我们把它的训练数据集当做它的模型本身。
2、在scikitlearn中调用KNN算法的操作步骤如下(利用实际例子举例如下):#1导入相应的数据可视化模块import numpy as npimport matplotlib.pyplot as plt #2输入训练的数据集x_train、y_trainraw_data_X=[[3.393533211,2.331273381], [3.110073483,1.781539638], [1.343808831,3.368360954], [3.582294042,4.679179110], [2.280362439,2.866990263], [7.423436942,4.696522875], [5.745051997,3.533989803], [9.172168622,2.511101045], [7.792783481,3.424088941], [7.939820817,0.791637231]]raw_data_Y=[0,0,0,0,0,1,1,1,1,1]x_train=np.array(raw_data_X)y_train=np.array(raw_data_Y)x=np.array([8.093607318,3.365731514]) #特别注意:scilearn模块里面验证数据都将默认为二维数据,如果不是,则需要使用.reshape(1,-1)函数对其进行转换#3从scikitlearn库中调用相应的机器学习算法from sklearn.neighbors import KNeighborsClassifier #调用算法库KNN_classifier=KNeighborsClassifier(n_neighbors=6) #定义新的算法KNN_classifier.fit(x_train,y_train) #基础数据训练模型#4导入测试的数据集test_data和test_targettest_data1=[[3.93533211,2.33127381], [3.10073483,1.78159638], [1.34808831,3.36830954], [3.58294042,4.67919110], [2.28032439,2.86690263], [7.42343942,4.69652875], [5.74505997,3.53399803], [9.17216622,2.51101045], [7.79278481,3.42488941], [7.93982087,0.79637231]]test_data=np.array(test_data1)test_target=[0,0,0,0,1,1,0,0,0,0]x=x.reshape(1,-1) print(KNN_classifier.predict(x))y_pred=KNN_classifier.predict(test_data) #对测试数据进行预测#5对于算法的准确度进行输出和评估(准确度和混淆矩阵)from sklearn import metrics #引入机器学习的验证模块print(metrics.accuracy_score(y_true=test_target,y_pred=y_pred)) #输出整体预测结果的准确率,其中第三个参数normalize=False表示输出结果预测正确的个数print(metrics.confusion_matrix(y_true=test_target,y_pred=y_pred)) #输出混淆矩阵,如果为对角阵,则表示预测结果是正确的,准确度越大
3、从scikitlearn库中调用相应的机器学习算法的步骤如下:
(1)从scikitlearn库中调用相应的机器学习算法模块;(2)输入相应的算法参数定义一个新的算法;(3)输入基础训练数据集进行训练;(4)输入测试数据集对其结果进行预测;(5)将预测结果与真实结果进行对比,输出其算法的准确率(或者混淆矩阵)4、对于机器学习算法的准确度评价主要有以下几种方式:(1)利用scikitlearn中的accuracy函数:from sklearn import metrics #引入机器学习的验证模块print(metrics.accuracy_score(y_true=y_test,y_pred=y_pred)) #输出整体预测结果的准确率,其中第三个参数normalize=False表示输出结果预测正确的个数print(metrics.confusion_matrix(y_true=y_test,y_pred=y_pred)) #输出混淆矩阵,如果为对角阵,则表示预测结果是正确的,准确度越大(2)直接利用机器学习算法中的.score(X,y)函数输出算法的准确度其中X表示数据的测试集(x_test),y代表真实目标值(y_test)