用k近邻和logistic回归模型识别手写数字,并比较结果

来源:互联网 发布:算法竞赛入门经典 豆瓣 编辑:程序博客网 时间:2024/05/20 23:33

1.导入模块

import numpy as npimport pandas as pdfrom pandas import Series,DataFrame#机器学习模型from sklearn.linear_model import LogisticRegressionfrom sklearn.neighbors import KNeighborsClassifier#机器学习数据集import sklearn.datasets as datasets#绘图import matplotlib.pyplot as plt%matplotlib inline

2.获取训练数据和预测数据

#导入datasets模块中的数据digits=datasets.load_digits()data = digits.datatarget = digits.targetimages = digits.images#训练数据X_train=data[:1600]Y_train=target[:1600]#测试数据x_test = data[1600:]y_true = target[1600:]

3.确定学习模型

#k近邻算法模型knnclf = KNeighborsClassifier(n_neighbors=5)#logistic模型logistic = LogisticRegression(solver='lbfgs')

4.用训练数据训练模型

knnclf.fit(X_train,Y_train)logistic.fit(X_train,Y_train)

5.用模型预测结果

y_pre_knn = knnclf.predict(x_test)y_pre_logistic=logistic.predict(x_test)

6.查看算法得分

knn_score = knnclf.score(x_test,y_true)logistic_score = logistic.score(x_test,y_true)display(knn_score,logistic_score)

7.绘图,展示结果

plt.figure(figsize=(16,16))for i in range(100):    plt.subplot(10,10,i+1)    plt.imshow(x_test[i].reshape(8,8))    plt.axis('off')    title = 'KNN:'+ str(y_pre_knn[i]) + '\nLOGIC:' + str(y_pre_logistic[i]) + '\nTrue:' + str(y_true[i])    plt.title(title)

这里写图片描述

原创粉丝点击