今天跟着教程写了一个我的第一个机器学习算法,之前上课的时候学到了一些原理,但是自己一直没有动手写过,今天晚上花了一点点时间,看了一下教程,用python写了一下。
做一下记录,以便以后查阅。
#第一个机器学习算法 KNN分类器 from scipy.spatial import distance def euc(a,b):#计算欧氏距离return distance.euclidean(a,b) class ScrappyKnn():def fit(self,X_train,y_train):self.X_train=X_trainself.y_train=y_traindef predict(self,X_test):predictions=[]for row in X_test:label= self.closest(row) predictions.append(label)return predictionsdef closest(self,row):#这里KNN的思想就不多说了吧,不断的寻找最近的欧氏距离best_dist=euc(row,self.X_train[0])best_index=0for i in range(1,len(self.X_train)):dist=euc(row,self.X_train[i])if dist < best_dist :best_dist = distbest_index=ireturn self.y_train[best_index] from sklearn import datasets#这里用到的数据集是sklearn自带数据集 x=iris.data y=iris.target from sklearn.cross_validation import train_test_split X_train,X_test,y_train,Y_test=train_test_split(x,y,test_size=.5)#分训练数据和测试数据 iris=datasets.load_iris()#加载自带的鸢尾花数据集 my_classifier=ScrappyKnn()#调用上面写好的KNN分类器 my_classifier.fit(X_train,y_train)#训练 predictions=my_classifier.predict(X_test) print(predictions)#这一步得出预测标签 #下面将真实标签与预测标签比较一下 from sklearn.metrics import accuracy_score print(accuracy_score(Y_test,predictions))#正确率