使用AdaBoost分类器学习一个初音未来的轮廓

在台大李宏毅老师的讲座里有提到一个使用AdaBoost分类器学习初音未来轮廓的例子。这里用scikit-learn工具包提供的AdaBoost算法进行了实现。

import pandas as pd
import numpy as np
from PIL import Image

以下读入原始数据,转成图片后显示出来:
原始数据下载地址(http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2015_2/theano/miku)

miku = pd.read_csv('/home/eric/Documents/MachineLearning/Algorithms/Adaboost/miku.csv')

miku = np.array(miku.values)

miku_grayscale = miku[:, 2]

miku_grayscale = miku_grayscale.reshape((500, 500))
miku_grayscale = miku_grayscale.transpose()



image = Image.fromarray(miku_grayscale*255)
image.show()

以下使用最大深度为5的决策树作为基分类器进行AdaBoost训练,训练结果转成图片显示出来,通过调整不同数量的基分类器,AdaBoost算法可以取得不同的效果。

from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
clf = AdaBoostClassifier(DecisionTreeClassifier(max_depth=5), n_estimators=100)
miku_data = miku[:, 0:2]
miku_target = miku[:, 2]


clf.fit(miku_data, miku_target)
predict = clf.predict(miku_data)
#print predict.shape


predict = predict.reshape((500, 500))
predict = predict.transpose()
image_pre = Image.fromarray(predict*255)
image_pre.show()

分类学习结果:

10个基分类器:


使用AdaBoost分类器学习一个初音未来的轮廓_第1张图片
miku_adaboost10.png

20个基分类器:


使用AdaBoost分类器学习一个初音未来的轮廓_第2张图片
miku_adaboost20.png

50个基分类器:


使用AdaBoost分类器学习一个初音未来的轮廓_第3张图片
miku_adaboost50.png

100个基分类器:


使用AdaBoost分类器学习一个初音未来的轮廓_第4张图片
miku_adaboost100.png

你可能感兴趣的:(使用AdaBoost分类器学习一个初音未来的轮廓)