本人小菜鸟一枚,堪称史上最不会敲代码的程序员。但是我有一腔热血,我一个不会打游戏,又不会撩妹的穷屌丝,不学习实在是不知道要去干嘛,虽然脑子笨,但是也得学点东西,要不然我一体重不过百,身高不过百的小老爷们怎么在社会上立足。别人可以‘拼爹’,我等屌丝就只能靠自己喽。
说是我的博客,其实和自己的学习笔记差不多。我只是菜鸟一枚,学完习当然要做些笔记,古话说的好“好记性不如烂笔头”。希望有看到博文的大神能不吝赐教,也希望能有道友一同学习,废话不说,笔记开始。
#导入此包是因为要计算欧式距离
from scipy.spatial import distance
#定义函数求欧式距离
def enc(a,b):
return distance.euclidean(a,b)
#我们在这里定义自己的分类器,根据分类需要添加必须的方法,在训练时调用自己撰写的分类器
class ScrappyKNN():
def fit(self,x_train,y_train):
#把数据传入
self.x_train=x_train
self.y_train=y_train
#分类器的预测函数
def predict(self,x_test):
predictions=[]
for row in x_test:
#调用closest方法计算样本距离训练样本最近的标签
lable=self.closest(row)
predictions.append(lable)
return predictions
def closest(self,row):
best_dist=enc(row,self.x_train[0])
best_index=0
for i in range(1,len(x_train)):
dist=enc(row,x_train[i])
if dist < best_dist:
best_dist=dist
best_index=i
return self.y_train[best_index]
#导入数据集
from sklearn import datasets
#得到数据集
iris=datasets.load_iris()
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)
#1.使用决策树分类器
#from sklearn import tree
#my_classifier=tree.DecisionTreeClassifier()
#2.使用knn分类器
#from sklearn.neighbors import KNeighborsClassifier
#my_classifier=KNeighborsClassifier()
#3.使用自己定义的分类器
my_classifier=ScrappyKNN()
#使用分类器对我们的数据进行训练
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))
经过自己定义的一个简单的分类器,分类的正确率到达了:
>>0.9733333333333334
这篇笔记就到这里了,如有错误请多多指教。