使用AdaBoost算法来对视频数据进行分类

import sys
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_gaussian_quantiles

from sklearn.svm import NuSVC


#which base classify can be used in adaboost
#see https://stackoverflow.com/questions/18306416/adaboostclassifier-with-different-base-learners

inputn = int(sys.argv[1])
outputn = int(sys.argv[2])
inputcol = tuple(range(0,inputn,1))
outputcol = tuple(range(inputn,inputn+outputn,1))
print inputcol
print outputcol
x = np.loadtxt(open(sys.argv[3],"r"),delimiter="\t",usecols=inputcol)  
y = np.loadtxt(open(sys.argv[3],"r"),delimiter="\t",usecols=outputcol)  
x2 = np.loadtxt(open(sys.argv[4],"r"),delimiter="\t",usecols=inputcol)  
y2 = np.loadtxt(open(sys.argv[4],"r"),delimiter="\t",usecols=outputcol)  

'''
bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),
                         algorithm="SAMME",
                         n_estimators=200, learning_rate=1.5)
'''                         
bdt = AdaBoostClassifier(NuSVC(),
                         algorithm="SAMME",
                         n_estimators=200, learning_rate=1.5)

bdt.fit(x, y)
allcount=0
hit=0
print('----------fit over---------------')
for i in range(0,x2.shape[0]):

    left = bdt.predict(x2[i].reshape(1,-1)).tolist()[0]
    right = y2[i].tolist()
    allcount+=1
    #print left,right
    if int(left)==int(right):
        hit+=1

print(hit,allcount)   

猜你喜欢

转载自blog.csdn.net/b0207191/article/details/81027069
今日推荐