zoukankan      html  css  js  c++  java
  • knn算法之预测数字

    训练算法并对算法的准确值准确率进行估计

    #导入相应模块

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    %matplotlib inline

    #将所有准备的样本加载到列表中

    x = []
    for i in range(10):
         for j in range(1,501):
              x.append(plt.imread("./data/%d/%d_%d.bmp"%(i,i,j)))                      #读取数据

    #对样本数据进行操作处理

    #先将列表转化成为数组

    x = np.array(x)
    x.shape

    #准备模型数据,并让模型数据与样本数据一一对应

    y = [0,1,2,3,4,5,6,7,8,9]*500

    y = np.array(y)
    y.sort()

    index = np.arange(5000)       

     

    # 将索引打乱           
    np.random.shuffle(index)                 

    # 打乱数字顺序,通过索引来随机提取数据
    x = x[index]
    y = y[index]

    # 采取训练数据和测试数据,此时训练数据和测试数据一一对应
    x_test = x[3750:]
    x_train = x[:3750]
    y_train = y[:3750]
    y_test = y[3750:]

    #引入KNN算法

    from sklearn.neighbors import KNeighborsClassifier

    knn = KNeighborsClassifier(n_neighbors=5)

    #想用训练数据和训练模型对算法进行训练

    knn.fit(x_train,y_train)

    #训练结果

    """

    KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=None, n_neighbors=5, p=2, weights='uniform')

    """

    #用测试数据对训练的算法进行测试算法的预测准确率

    x_predict = knn.predict(x_test)                      

    array = x_predict==y_test

    #array是含有Ture和False的数组

    #对于0和1的数组进行求平均值,则就是值为1的出现的概率

    array.mean()

    #算法准确率

    0.9376

    自定义验证算法

    # 加载样本图片
    numall = plt.imread("./timg.jpg")
    # plt.imshow(numall)

    #对需要识别的数字进行切片,使之符合算法样本要求(算法的训练数据的尺寸是(28,28))

    #测试数据的格式必须和算法训练数据的样本格式相同
    num8 = numall[280:510,380:600][:,:,0]
    plt.imshow(num8)

    #导入算法响应模块,对图片尺寸进行修正

    from scipy import misc
    num8 = misc.imresize(num8,(28,28))
    num8.shape

    num8 = num8.reshape(1,-1)
    knn.predict(num8)

  • 相关阅读:
    GitHub之初体验
    梦过去了
    转载:获取ISAPI_Rewrite重写后的URL
    看《分手合约》
    我们的家
    一盏灯的思考
    网站爱好者:开篇文
    致我们终将逝去的青春
    一起看看百度转码有多无耻!
    RPM
  • 原文地址:https://www.cnblogs.com/kuangkuangduangduang/p/10311517.html
Copyright © 2011-2022 走看看