Skip to content

Commit

Permalink
基本的SVM应用于数字识别介绍
Browse files Browse the repository at this point in the history
  • Loading branch information
maxiaomu committed Dec 31, 2017
1 parent 17ea026 commit 5b303a6
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 6 deletions.
6 changes: 5 additions & 1 deletion docs/svm.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def opencsv():
> 分析数据:
对数据的分析是一个特别重要的过程,不仅会让我们对数据集有一个直观的认识,更重要的是为在后续优化当中提供理论依据。


```python

Expand Down Expand Up @@ -116,6 +116,8 @@ def analyse_data(dataMat):

```
通过对数据的特征分析我们可以知道数据之间存在有很严重的相关性,那么我们可以在分类的过程中考虑提取出重要的特征。
![数据特征分析](../static/images/svm/数据特征分析.jpg)

```python
def dRCsv(x_train, x_test, preData, COMPONENT_NUM):
'''
Expand Down Expand Up @@ -225,6 +227,8 @@ def getOptimalAccuracy(trainData, trainLabel, preData):
print("特征数量= %s, 存在最优解:>>> \t" % optimalNum, lineLen, int(minSumErr), 1-minErr)
return optimalSVMClf, pcaPreDataResult
```
![最优特征和roc分析](../static/images/svm/最优特征数目和roc分析.jpg)

> 测试算法:便携一个函数来测试不同的和函数并计算错误率
加载训练好存储的模型,对测试集进行分类并存储结果
Expand Down
13 changes: 8 additions & 5 deletions src/python/getting-started/digit-recognizer/dr-python-3.6.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,14 +127,17 @@ def getOptimalAccuracy(trainData, trainLabel, preData):
optimalLabel = svmtestLabel
pcaPreDataResult = pcaPreData
print("i=%s >>>>> \t" % i, lineLen, int(minSumErr), 1-minErr)

'''
展现 准确率与召回率
展现 准确率与召回率
precision 准确率
recall 召回率
f1-score 准确率和召回率的一个综合得分
support 参与比较的数量
参考链接:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html#sklearn.metrics.classification_report
'''
#

# target_names 以 y的label分类为准
# target_names = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
target_names = [str(i) for i in list(set(y_test))]
Expand Down Expand Up @@ -166,8 +169,8 @@ def trainDRSVM():
# 模型训练 (数据预处理-降维)
optimalSVMClf, pcaPreData = getOptimalAccuracy(trainData, trainLabel, preData)

storeModel(optimalSVMClf, '../../../../datasets/getting-started/digit-recognizer/ouput/Result_sklearn_SVM.model')
storeModel(pcaPreData, '../../../../datasets/getting-started/digit-recognizer/ouput/Result_sklearn_SVM.pcaPreData')
#storeModel(optimalSVMClf, '../../../../datasets/getting-started/digit-recognizer/ouput/Result_sklearn_SVM.model')
#storeModel(pcaPreData, '../../../../datasets/getting-started/digit-recognizer/ouput/Result_sklearn_SVM.pcaPreData')

print("finish!")
stopTime = time.time()
Expand All @@ -192,7 +195,7 @@ def preDRSVM():

if __name__ == '__main__':
# 训练并保存模型
# trainDRSVM()
trainDRSVM()

# 加载预测数据集
preDRSVM()
# preDRSVM()
Binary file added static/images/svm/数据特征分析.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 5b303a6

Please sign in to comment.