八云墨玄 2021-12-21 14:25 采纳率: 71.4%
浏览 159
已结题

修改svm识别手写数字

  • 写回答

4条回答 默认 最新

  • Bryce-Lin 2021-12-22 03:40
    关注

    你试试这个呢

    
    import os
    import cv2
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import datasets
    
    
    def getdata(_dir):
        images= []
        labels = []
        for cls in os.listdir(_dir):
            cls_dir = os.path.join(_dir,cls)  
            for file in os.listdir(cls_dir ):
                img = cv2.imread(os.path.join(cls_dir,file ),-1)
                images.append(img)
                labels.append(int(cls))
        return images,labels
    
    
    _dir_train=r""
    _dir_test=r""
    Xtrain,Ytrain = getdata(_dir_train)
    Xtest,Ytest= getdata(_dir_test)
    
    images_and_labels=list(zip(Xtrain,Ytrain))
    plt.figure(figsize=(8, 6))
    for index, (image, label) in enumerate(images_and_labels[:8]):
        plt.subplot(2, 4, index + 1)
        plt.axis('off')
        plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
        plt.title('Digit: %i' % label, fontsize=20);
    
    from sklearn import svm
    clf = svm.SVC(gamma=0.001, C=100., probability=True)
    clf.fit(Xtrain, Ytrain);
    
    from sklearn.metrics import accuracy_score
    Ypred = clf.predict(Xtest);
    accuracy_score(Ytest, Ypred)
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    八云墨玄 2021-12-22 04:20

    img


    报错了怎么办

    回复
    Bryce-Lin 回复 八云墨玄 2021-12-22 04:40

    这回应该可以了

    
    import os
    import cv2
    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import datasets
    
    def getdata(_dir):
        images= []
        labels = []
        for cls in os.listdir(_dir):
            cls_dir = os.path.join(_dir,cls)  
            for file in os.listdir(cls_dir ):
                img = cv2.imread(os.path.join(cls_dir,file ),-1)
                images.append(img)
                labels.append(int(cls))
        return np.array(images),np.array(labels)
    
    
    _dir_train=r"E:\test"
    _dir_test=r"E:\test"
    Xtrain,Ytrain = getdata(_dir_train)
    Xtest,Ytest= getdata(_dir_test)
    
    images_and_labels=list(zip(Xtrain,Ytrain))
    plt.figure(figsize=(8, 6))
    for index, (image, label) in enumerate(images_and_labels[:8]):
        plt.subplot(2, 4, index + 1)
        plt.axis('off')
        plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
        plt.title('Digit: %i' % label, fontsize=20);
    
    from sklearn import svm
    clf = svm.SVC(gamma=0.001, C=100., probability=True)
    
    h=Xtrain.shape[1]
    w=Xtrain.shape[2]
    Xtrain=Xtrain.reshape(-1,h*w)
    Ytrain=Ytrain.reshape(-1,h*w)
    clf.fit(Xtrain, Ytrain);
    
    from sklearn.metrics import accuracy_score
    Ypred = clf.predict(Xtest);
    accuracy_score(Ytest, Ypred)
    

    回复
    八云墨玄 回复 Bryce-Lin 2021-12-22 04:56

    img


    似乎还有一点点小问题

    回复
    展开全部17条评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月22日
  • 赞助了问题酬金 12月22日
  • 创建了问题 12月21日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部