为了账号安全,请及时绑定邮箱和手机立即绑定

机器学习实战篇——用支撑向量算法在Kaggle上跑个分

标签:
机器学习

之前写了关于人工智能和机器学习的理论基础文章,今天就理论联系实际,用机器学习算法跑个分。

机器学习最重要的就是数据,Kaggle平台提供了大量数据为机器学习的学习者和研究者提供一个跑分的平台。注册账号登录之后就可以进入比赛了,初学者可以从Digit Recognizer入手,也就是识别手工书写的数字。

作为一个菜鸟,我目前最好的成绩是识别率97.228 排名第1189位。

这个成绩是我用支撑向量(SVM)算法获得的,所以今天就来介绍如何用SVM来实现识别手写数字。

一、下载处理数据

首先导入需要用到的python库文件, pandas 和 sklearn 是机器学习非常重要的库文件。

import pandas as pdimport matplotlib.pyplot as plt, matplotlib.image as mpimgfrom sklearn.model_selection import train_test_splitfrom 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 的黑白带灰阶的图片。


image.png

学习之前还需要将数据normalize, 这里用到了sklearn 中的 standardscaler 函数

image.png

二、用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%准确率的训练结果的所有代码,是不是很简单。



作者:Hongtao洪滔
链接:https://www.jianshu.com/p/0d0614ff33dd
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消