手写数字识别
#matplotlib画图包,sklearn传统机器学习包
#In[5]:
import matplotlib.pyplot as plt
from sklearn import datasets, metrics
from sklearn.linear_model import LogisticRegression
读取数据集
# In[9]:
#读取数据集
digits = datasets.load_digits()
#打印样例数据
samples = list(zip(digits.images, digits.target))
for id, (img, label) in enumerate(samples[:4]):
plt.subplot(2, 4, id + 1)
plt.axis('off')
plt.imshow(img, cmap = plt.cm.gray_r, interpolation = 'nearest')
plt.title('Label: %i' % label)
plt.show

样例.png
# In[11]:
#有n个图像
n = len(digits.images)
#将二维图像变为一维向量(n * 8 * 8 -> n * 64),方便处理
data = digits.images.reshape(n, -1)
建立模型
model = LogisticRegression(C = 1e5)
# In[17]:
#用前一半数据作为训练数据
model.fit(data[:n//2], digits.target[:n//2])
# In[18]:
answer = digits.target[n//2:]
pred = model.predict(data[n//2:])
将预测结果与正确答案进行比较
# In[19]:
#将预测结果与正确答案进行比较
metrics.confusion_matrix(answer, pred)

QQ20180302-141209@2x预测结果.png
打印几个预测的例子
# In[22]:
samples = list(zip(digits.images[n//2:], pred))
for id, (img, label) in enumerate(samples[:4]):
plt.subplot(2, 4, id + 1)
plt.axis('off')
plt.imshow(img, cmap = plt.cm.gray_r, interpolation = 'nearest')
plt.title('Predict: %i' % label)
plt.show()

预测例子.png
网友评论