当前位置:首页 > 技术分享 > 正文内容

第一圈代码数字识别:用SVM + HOG快速建立基线

admin2个月前 (07-13)技术分享110

完整代码(Google Colab / Jupyter Notebook 均可)

python
 numpy  np matplotlibpyplot  plt sklearnsvm  SVC sklearnmetrics  accuracy_score confusion_matrix ConfusionMatrixDisplay sklearndatasets  fetch_openml skimagefeature  hog skimagetransform  resize tqdm  tqdm  X y  fetch_openml version return_X_y as_frame parserX  Xastypenpfloat32  y  yastypenpint32X_train y_train  X yX_test y_test  X y images pixels_per_cell 
    
    输入: images shape (N, 784) 展平的图像
    输出: HOG特征向量 (N, 特征维度)
    """
    features  
     img  tqdmimages desc
        
        img_2d  imgreshape 
        
        hog_feat  hog
            img_2d
            pixels_per_cellpixels_per_cell
            cells_per_block 
            visualize
            feature_vector
        
        featuresappendhog_feat
     nparrayfeaturesX_train_hog  extract_hog_featuresX_trainX_test_hog  extract_hog_featuresX_testclf  SVCkernel C random_stateclffitX_train_hog y_traintrain_pred  clfpredictX_train_hogtrain_acc  accuracy_scorey_train train_predtest_pred  clfpredictX_test_hogtest_acc  accuracy_scorey_test test_prederror_indices  npwheretest_pred  y_testnum_show   error_indicesselected  nprandomchoiceerror_indices num_show replacefig axes  pltsubplots  figsize  i idx  selected
    row col  i   i  
    
    img  X_testidxreshape 
    axesrow colimshowimg cmap
    axesrow colset_title
    axesrow colaxispltsuptitle fontsizeplttight_layoutpltshowcm  confusion_matrixy_test test_preddisp  ConfusionMatrixDisplayconfusion_matrixcmdispplotcmapplttitlepltshow joblib
joblibdumpclf

运行后你会看到什么(预期输出示例)

text
训练集大小: 10000, 测试集大小: 2000
提取HOG特征: 100%|██████████| 10000/10000 [00:12<00:00, 789.23it/s]
提取HOG特征: 100%|██████████| 2000/2000 [00:02<00:00, 801.45it/s]
HOG特征维度: 324
训练集准确率: 0.8921
测试集准确率: 0.6734

准确率大约在 67% 左右——这就是不用深度学习的天花板。


这段代码让你学到什么(比准确率重要)

代码模块对应核心概念后续深度学习怎么超越
fetch_openml 加载数据数据标准化、归一化同样要归一化,但深度学习对归一化更敏感
hog() 特征提取手工特征工程——人告诉模型看什么CNN自动学习特征,不再需要HOG
SVC(kernel='linear')线性分类器,只能找直线边界神经网络可以拟合任意非线性边界
accuracy_score 评估分类任务的基础评价指标同样的指标,但深度模型会更高(>95%)
错误样本可视化知道模型“死在哪”深度模型也会错,但错的样本往往更“像人”

动手实验(必做,5分钟)

运行完上面代码后,修改下面任意一个参数,观察准确率变化:

  1. C=1.0 改成 C=100.0(更强的拟合能力)→ 训练集准确率上升,但测试集可能下降(过拟合)。

  2. pixels_per_cell=(4,4) 改成 (8,8)(更粗糙的特征)→ 特征维度降低,速度变快,但准确率可能下降。

  3. 把训练集从10000改成5000 → 准确率下降,让你直观感受“数据量对AI的影响”。


下一步预告(第二圈要做什么)

现在你用SVM只能达到67%,而且对旋转、倾斜、手写风格变化极其敏感。第二圈我们会用PyTorch搭一个简单的CNN,不做任何特征工程,直接喂像素进去,准确率直接跳到95%+。

今晚的任务:把上面代码跑通,截一张“混淆矩阵”的图保存下来。等第二圈CNN跑完后,把两张混淆矩阵放在一起对比——那会是你对“深度学习为什么有效”最震撼的一次体验。

完整代码(Google Colab / Jupyter Notebook 均可)

python
 numpy  np matplotlibpyplot  plt sklearnsvm  SVC sklearnmetrics  accuracy_score confusion_matrix ConfusionMatrixDisplay sklearndatasets  fetch_openml skimagefeature  hog skimagetransform  resize tqdm  tqdm  X y  fetch_openml version return_X_y as_frame parserX  Xastypenpfloat32  y  yastypenpint32X_train y_train  X yX_test y_test  X y images pixels_per_cell 
    
    输入: images shape (N, 784) 展平的图像
    输出: HOG特征向量 (N, 特征维度)
    """
    features  
     img  tqdmimages desc
        
        img_2d  imgreshape 
        
        hog_feat  hog
            img_2d
            pixels_per_cellpixels_per_cell
            cells_per_block 
            visualize
            feature_vector
        
        featuresappendhog_feat
     nparrayfeaturesX_train_hog  extract_hog_featuresX_trainX_test_hog  extract_hog_featuresX_testclf  SVCkernel C random_stateclffitX_train_hog y_traintrain_pred  clfpredictX_train_hogtrain_acc  accuracy_scorey_train train_predtest_pred  clfpredictX_test_hogtest_acc  accuracy_scorey_test test_prederror_indices  npwheretest_pred  y_testnum_show   error_indicesselected  nprandomchoiceerror_indices num_show replacefig axes  pltsubplots  figsize  i idx  selected
    row col  i   i  
    
    img  X_testidxreshape 
    axesrow colimshowimg cmap
    axesrow colset_title
    axesrow colaxispltsuptitle fontsizeplttight_layoutpltshowcm  confusion_matrixy_test test_preddisp  ConfusionMatrixDisplayconfusion_matrixcmdispplotcmapplttitlepltshow joblib
joblibdumpclf

运行后你会看到什么(预期输出示例)

text
训练集大小: 10000, 测试集大小: 2000
提取HOG特征: 100%|██████████| 10000/10000 [00:12<00:00, 789.23it/s]
提取HOG特征: 100%|██████████| 2000/2000 [00:02<00:00, 801.45it/s]
HOG特征维度: 324
训练集准确率: 0.8921
测试集准确率: 0.6734

准确率大约在 67% 左右——这就是不用深度学习的天花板。


这段代码让你学到什么(比准确率重要)

代码模块对应核心概念后续深度学习怎么超越
fetch_openml 加载数据数据标准化、归一化同样要归一化,但深度学习对归一化更敏感
hog() 特征提取手工特征工程——人告诉模型看什么CNN自动学习特征,不再需要HOG
SVC(kernel='linear')线性分类器,只能找直线边界神经网络可以拟合任意非线性边界
accuracy_score 评估分类任务的基础评价指标同样的指标,但深度模型会更高(>95%)
错误样本可视化知道模型“死在哪”深度模型也会错,但错的样本往往更“像人”

动手实验(必做,5分钟)

运行完上面代码后,修改下面任意一个参数,观察准确率变化:

  1. C=1.0 改成 C=100.0(更强的拟合能力)→ 训练集准确率上升,但测试集可能下降(过拟合)。

  2. pixels_per_cell=(4,4) 改成 (8,8)(更粗糙的特征)→ 特征维度降低,速度变快,但准确率可能下降。

  3. 把训练集从10000改成5000 → 准确率下降,让你直观感受“数据量对AI的影响”。


下一步预告(第二圈要做什么)

现在你用SVM只能达到67%,而且对旋转、倾斜、手写风格变化极其敏感。第二圈我们会用PyTorch搭一个简单的CNN,不做任何特征工程,直接喂像素进去,准确率直接跳到95%+。

今晚的任务:把上面代码跑通,截一张“混淆矩阵”的图保存下来。等第二圈CNN跑完后,把两张混淆矩阵放在一起对比——那会是你对“深度学习为什么有效”最震撼的一次体验。

相关文章

2026年穿梭车故障率统计:哪个品牌最省心?

“穿梭车一年修三次?那你不是买了设备,是请了个爹。”我在统计30个在运项目的故障记录后发现:不同品牌穿梭车的故障率差距高达5倍。最省心的品牌平均8000小时无故障,最闹心的品牌2000小时就要修一次。...

你的AI应用上线就翻车?这份评测与优化指南请收好

一个扎心的真相你可能遇到过这样的场景:本地测试时AI回答得头头是道,一上线客户问了个刁钻问题,直接答非所问投了两个月精力做的AI助手,老板试用三分钟就关掉了页面明明代码没动过,昨天回答准确率90%,今...

AI开发者的“四层认知阶梯”——你在哪一层,决定了你能走多远

第0层:工具使用者(“调包侠”)典型画像:知道 import torch,但不知道 torch.Tensor 和 numpy.ndarray 有什么区别从GitHub clone项目,改改路径就能跑,...

2026年智能货架供应商哪家可靠?软硬一体的真相

“智能货架最贵的不是设备,是软硬不匹配的扯皮时间。”很多企业采购智能货架时,只买了货架,穿梭车和调度软件另找别家,结果出现“车架不匹配、接口不通、出了问题没人管”的灾难。今天,我就为你揭开智能货架供应...

型材加工中心推荐哪家靠谱?铝型材加工中心生产厂家有哪些值得信赖?

在铝型材深加工领域,高效、高精度、智能化的型材加工中心已成为门窗幕墙、轨道交通、新能源光伏支架等行业的核心装备。面对市场上众多厂家,用户常面临“技术参差、服务断层、售后缺位”等痛点,究竟哪些企业真正具...

AI教学:重塑教育生态的智能引擎

在教育数字化转型的浪潮中,人工智能正从辅助工具跃升为教学变革的核心驱动力。AI教学并非简单地将技术嵌入课堂,而是以数据为基、以算法为桥、以人为本,重构“教—学—评—研”全链条,推动教育从规模化走向个性...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。