天天看點

機器學習實戰篇——用支撐向量算法在Kaggle上跑個分

之前寫了關于人工智能和機器學習的理論基礎文章,今天就理論聯系實際,用機器學習算法跑個分。

機器學習最重要的就是資料,

Kaggle 平台提供了大量資料為機器學習的學習者和研究者提供一個跑分的平台。新增賬號登入之後就可以進入比賽了,初學者可以從 Digit Recognizer

入手,也就是識别手工書寫的數字。

作為一個菜鳥,我目前最好的成績是識别率97.228 排名第1189位。

機器學習實戰篇——用支撐向量算法在Kaggle上跑個分
這個成績是我用 支撐向量(SVM) 算法獲得的,是以今天就來介紹如何用SVM來實作識别手寫數字。

一、下載下傳處理資料

首先導入需要用到的python庫檔案, pandas 和 sklearn 是機器學習非常重要的庫檔案。

import pandas as pd
import matplotlib.pyplot as plt, matplotlib.image as mpimg
from sklearn.model_selection import train_test_split
from sklearn import svm
%matplotlib inline

           

資料檔案是csv格式的是以需要用panda 庫來處理

labeled_images = pd.read_csv('train.csv')
images = labeled_images.iloc[:,1:]
labels = labeled_images.iloc[:,:1]
train_images, test_images,train_labels, test_labels = train_test_split(images, labels, 
                                                                       train_size=0.95, random_state=0)

           

train_test_split 函數是用來将資料成兩組,訓練組和驗證組,其中訓練組占95%。

每一張圖檔實際上是一個28 x 28 的黑白帶灰階的圖檔。

機器學習實戰篇——用支撐向量算法在Kaggle上跑個分

image.png

學習之前還需要将資料normalize, 這裡用到了sklearn 中的 standardscaler 函數

機器學習實戰篇——用支撐向量算法在Kaggle上跑個分

二、用Sklearn的SVM學習資料

将normalize 後的資料送進分類器中,總共四行代碼完成訓練和評分,結果是0.977142的準确率

from sklearn.svm import SVC
clf = svm.SVC(kernel = "poly", degree = 3, coef0=0.1, C=100)
clf.fit(train_images_scaled, train_labels.values.ravel())
clf.score(test_images_scaled,test_labels)

           

三、用訓練好的分類器來标記資料

導入未标記的測試資料,result 就是标記後的資料

test_data=pd.read_csv('test.csv')
test_data_scaled = scaler.transform(test_data)
results=clf.predict(test_data_scaled)

           

這就是我用SVM訓練分類器,并用分類器标記資料,最後取得97%準确率的訓練結果的所有代碼,是不是很簡單。

————

相關文章

AI學習筆記——循環神經網絡(RNN)的基本概念 AI學習筆記——神經網絡和深度學習 AI學習筆記——卷積神經網絡1(CNN)

文章首發steemit.com 為了友善牆内閱讀,搬運至此,歡迎留言或者通路

我的Steemit首頁