1. 程式人生 > >kaggle——Digit Recognizer

kaggle——Digit Recognizer

在kaggle上做的第一個專案,作為資料分析的初學者,學習到了很多東西

專案說明

在本次比賽中,您的目標是正確識別來自數萬個手寫影象資料集的數字。我們策劃了一套教程式的核心,涵蓋從迴歸到神經網路的一切。我們鼓勵您嘗試使用不同的演算法來學習第一手什麼工作良好以及技術如何比較。

這個專案要求使用分類演算法來識別數字,屬於一個入門級別的專案吧

這裡我使用了SVM和MLP兩種方法解決,程式碼如下

PCA+SVM

#-*- coding: utf-8 -*-

import pandas as pd
from sklearn import svm, metrics
from sklearn.decomposition import PCA

train = pd.read_csv('../input/train.csv')
test = pd.read_csv('../input/test.csv')
train_x = train.ix[:,1:].values.astype('int32')
train_y = train.ix[:,0].values.astype('int32')
test_x = test.ix[:,:].values.astype('int32')

# PCA reduction
pca = PCA(n_components=36, whiten=True)
pca.fit(train_x)
train_x = pca.transform(train_x)
test_x = pca.transform(test_x)

# print train_y
# print type(train_x), type(train_y)
# print len(train_y), len(train_x)
# print train_x[0], train_y[0]

# SVM classifier
clf = svm.SVC()
clf.fit(train_x, train_y)

# test output
def write_preds(preds, fname):
    pd.DataFrame({"ImageId": range(1,len(preds)+1), "Label": preds}).to_csv(fname, index=False, header=True)
test_y = clf.predict(test_x)
write_preds(test_y, 'out.csv')

MLP+Normalization

#-*- coding: utf-8 -*-

from keras.models import Sequential
from keras.utils import np_utils
from keras.layers.core import Dense, Activation, Dropout

import pandas as pd
import numpy as np

# Read data
train = pd.read_csv('../input/train.csv')
labels = train.ix[:,0].values.astype('int32')
X_train = (train.ix[:,1:].values).astype('float32')
X_test = (pd.read_csv('../input/test.csv').values).astype('float32')

# convert list of labels to binary class matrix
y_train = np_utils.to_categorical(labels) 

# pre-processing: divide by max and substract mean
scale = np.max(X_train)
X_train /= scale
X_test /= scale

mean = np.std(X_train)
X_train -= mean
X_test -= mean

input_dim = X_train.shape[1]
nb_classes = y_train.shape[1]

# Here's a Deep Dumb MLP (DDMLP)
model = Sequential()
model.add(Dense(128, input_dim=input_dim))
model.add(Activation('relu'))
model.add(Dropout(0.15))
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dropout(0.15))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))

# we'll use categorical xent for the loss, and RMSprop as the optimizer
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

print("Training...")
model.fit(X_train, y_train, nb_epoch=10, batch_size=16, validation_split=0.1, verbose=2)

print("Generating test predictions...")
preds = model.predict_classes(X_test, verbose=0)

def write_preds(preds, fname):
    pd.DataFrame({"ImageId": list(range(1,len(preds)+1)), "Label": preds}).to_csv(fname, index=False, header=True)

write_preds(preds, "mlp.csv")

提交資料,準確率0.96814


相關推薦

Kaggle Digit Recognizer識別手寫數字入門賽基於tensorflow-GPU(TOP 15%)

本人原創,開源出來希望與大家互相學習。 ps:目前這個比賽前二三十名測試集的正確率為1,我覺得其中一個方法可能是將所有的樣本(從官網下載train set和 test set及其他們的標籤)喂入CNN學習,將訓練集正確率訓練到1.0就可以了,這樣用測試集測出來的結果就可以1.0了,但

kaggle——Digit Recognizer

在kaggle上做的第一個專案,作為資料分析的初學者,學習到了很多東西 專案說明 在本次比賽中,您的目標是正確識別來自數萬個手寫影象資料集的數字。我們策劃了一套教程式的核心,涵蓋從迴歸到神經

Kaggle digit-recognizer PCA+SVM

什麼是PCA 主分析方法(PCA),是運用線性代數的知識,找到一個k維空間(k小於n, n為原來 樣本的維度)讓原來的樣本投影到該空間後能保留最大的差異程度,具體表現為方差。 舉個一個簡單的例子就是,全班同學的成績語文相差很大,從50到9

kaggle--Digit Recognizer(python實現)

使用xgboost並對其進行簡單的調參,準確率可達到97% 排名較低,就不要在意這些細節啦,小白一枚,新手上路。 1、安裝環境 這裡使用anaconda(python 3.6)版本。 首先從https://www.lfd.uci.edu/~goh

DeepLearning to digit recognizer in kaggle

flags 權重 數據位 更新 multiple 就會 oss you 給定 DeepLearning to digit recongnizer in kaggle 近期在看deeplearning,於是就找了kaggle上字符識別進行練習。這裏我

kaggle練手題目Digit Recognizer

安裝kaggle工具獲取資料來源(linux 環境) 採用sklearn的KNeighborsClassifier訓練資料 通過K折交叉驗證來選取K值是正確率更高 1.安裝kaggle,獲取資料來源 pip install kaggle 將資料下載到目錄/data/data-test/

Kaggle KNN實現Digit Recognizer

本文參考了https://blog.csdn.net/u012162613/article/details/41929171,然後總結一下自己的理解。主要從資料準備、資料分析、核心演算法三個方面介紹。 資料準備 Kaggle官網中搜索Digit Recognizer,從‘Data’中下載cs

Kaggle學習之路(二) —— Digit Recognizer之問題分析

Digit Recognizer是數字手寫體識別。 Kirill Kliavin基於TensorFlow 框架與深度學習演算法,給出了準確率高達0.99的解決方法,值得我們學習。 閱讀本篇的先決條件:需要有一定python基礎,一些線性代數的理論基礎,

kaggle 入門 digit recognizer Python xgboost

# coding:utf-8 import numpy __author__ = 'WHP' __mtime__ = '2016/5/12' __name__ = '' import xgboost import pandas import time now = ti

Kaggle比賽——Digit Recognizer——Part 1(Pytorch 資料集的建立)

       首先從Kaggle官網下載資料集https://www.kaggle.com/c/digit-recognizer/data裡面包含三個CSV文件。train.csv是帶標籤的資料,用於訓練和調參,test.csv是無標籤的資料,在提交測試文件的時候才需要用到。

Kiggle:Digit Recognizer

矩陣 mage get 特征 pixel 步驟 kaggle 題目 a算法 題目鏈接:Kiggle:Digit Recognizer Each image is 28 pixels in height and 28 pixels in width, for a total

KNN演算法Hadoop實現及kaggle digit recognition資料測試

軟體版本:Hadoop2.6,MyEclipse10.0 , Maven 3.3.2原始碼下載地址:https://github.com/fansy1990/knn 。1. KNN演算法思路如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類

【Kaggel】Digit Recognizer——使用caffe model

一、Kaggel簡介 Kaggel是一個主要為開發商和資料科學家提供舉辦機器學習競賽、託管資料庫、編寫和分享程式碼的平臺。Digit Recognizer是平臺上的一個簡單的練習專案。 二、Dig

整理digit-recognizer幾種解決方案

先放上理想曲線: 幾種方法程式碼: #!usr/bin/python #codeing: utf-8 ''' Create on 2018-08-09 Author: Gunther17 Ctrl + 1: 註釋/反註釋   Ctrl + 4

手把手教你在kaggle degit recognizer比賽用caffe達到準確率99.1%

最近實驗室師兄佈置了參加kaggle上的digit recognizer訓練比賽,識別手寫資料。在經過兩週的探索之後,發現了一個非常surprising的結論,就是使用mnist的lenet中的lenet_train.sh加default setting,並且不劃分vali

Build a handwritten digit recognizer in Watson Studio and PyTorch

Summary Recognizing handwritten numbers is a piece of cake for humans, but it’s a non-trivial task for machines. Currently, however,

Number of Digit One

span war n-n ota ... ret 情況 每次 10個 Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th

Kaggle 數據挖掘比賽經驗分享

沒有 bin 不一致 要求 center 線性模型 保留 libz 無法 1.Kaggle 基本介紹 Kaggle 於 2010 年創立,專註數據科學,機器學習競賽的舉辦,是全球最大的數據科學社區和數據競賽平臺。在 Kaggle 上,企業或者研究機構發布商業和科研難題,懸賞

hdu-1061 Rightmost Digit

發現 們的 time logs for color div cnblogs digi 題目鏈接: http://acm.hdu.edu.cn/showproblem.php?pid=1061 題目類型: 水題 題意概括: 求n的n次方的個位數。 解題思路: 因

Leetcode 233 Number of Digit One

solution lee -m 依據 1.8 leet 2.4 ret general 1. 問題描寫敘述   給定一個整數n,在全部不大於n的非負整數中,計算包括數字1的整數的個數。比如n=13n = 13的結果為6。包括1的數字有1,10,11,1