Sklearn-手写数字识别 & kaggle
2018-02-01 16:35
337 查看
更多源码及训练、测试集:https://github.com/Azure-Sky-L/Machine-learning
训练集和测试集:https://www.kaggle.com/c/digit-recognizer/data
测试结果:
将保存测试结果的文件,提交到 kaggle 进行测试
训练集和测试集:https://www.kaggle.com/c/digit-recognizer/data
#运行环境 python3 import numpy as np from sklearn.decomposition import PCA from sklearn.svm import SVC #设置 PCA 降纬后的纬度值 COMPONENT_NUM = 50 print('Read training data...') #读取训练数据 with open('train.csv','r') as read: #读取文件第一行的表头,不做处理 read.readline() #训练文件的标签集 train_label = [] #训练文件的数据集 train_data = [] for line in read.readlines(): #map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list, #并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回 #把 list 里的所有元素转换为 整型 返回 data = list( map(int,line.rstrip().split(','))) #把 data 里的第一个元素加入到标签集 train_label.append(data[0]) #把 data 里剩余的元素加入到数据集 train_data.append(data[1:]) print('Loaded ' + str(len(train_label))) print('Reduction...') # 将 list 转换为 numpy 数组 train_label = np.array(train_label) train_data = np.array(train_data) # 原始数据集的维度 print (train_data.shape) pca = PCA(n_components=COMPONENT_NUM, whiten=True) # Fit the model with X pca.fit(train_data) #对数据集 train_data 进行降纬 train_data = pca.transform(train_data) #降纬后的数据集纬度 print (train_data.shape ) print('Train SVM...') #拟合模型 #KNN = KNeighborsClassifier() # 逻辑回归:model = LogisticRegression() # 支持向量机 SVM svc = SVC() #训练 SVM svc.fit(train_data, train_label) print('Read testing data...') #加载测试集 with open('test.csv','r') as read: #读取文件第一行的表头,不做处理 read.readline() #测试数据集 test_data = [] for line in read.readlines(): #map 把 list 里的所有元素转换为 整型 返回 data = list(map(int, line.rstrip().split(','))) #把所有数据加入测试数据集 test_data.append(data) print('Loaded ' + str(len(test_data))) print('Predicting...') #将 list 转换为 numpy 数组 test_data = np.array(test_data) #降纬 test_data = pca.transform(test_data) #测试结果 predict = svc.predict(test_data) print('Saving...') #将测试结果保存到 sample_submission.csv with open('sample_submission.csv', 'w') as writer: #第一行写入表头 writer.write('"ImageId","Label"\n') count = 0 for p in predict: count += 1 writer.write(str(count) + ',"' + str(p) + '"\n')
测试结果:
将保存测试结果的文件,提交到 kaggle 进行测试
相关文章推荐
- Kaggle Digit Recognizer 基于sklearn实现的手写数字识别 for MNIST data
- kaggle入门篇一【手写数字识别】
- [置顶] 【机器学习 sklearn】手写数字识别 SVM
- Kaggle竞赛排名Top 10% —— 手写数字识别Digit Recognizer
- 【Kaggle笔记】手写数字识别分类(线性支持向量机)
- 在Kaggle手写数字数据集上使用Spark MLlib的朴素贝叶斯模型进行手写数字识别
- 在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别
- 基于机器学习多种方法的kaggle竞赛入门之手写数字的图像识别预测
- Lamda新论文gcForest测试-手写数字测试识别详解(Kaggle数据集)
- kaggle-Digit Recognition(手写数字识别)
- 使用线性回归识别sklearn中的手写数字digit
- 利用scikit-learn下的knn实现kaggle的手写数字识别问题
- 数字图像中手写阿拉伯数字的识别技术概览
- tensorflow 如何识别自己手写的数字
- python tensorflow基于cnn实现手写数字识别
- 机器学习(三):逻辑回归应用_手写数字识别_OneVsAll_Python
- 机器学习(10.3)--手写数字识别的不同算法比较(3)--支持向量机(SVM)算法
- KNN之手写数字识别
- Python 手写数字识别-knn算法应用
- PCA + KNN 手写数字识别