有时提升一个模型的准确度很困难。你会尝试所有曾学习过的策略和算法,但模型正确率并没有改善。这时你会觉得无助和困顿,这也正是90%来2源gaodaima#com搞(代@码&网的数据科学家开始放弃的时候。不过,这才是考验真正本领的时候!这也是普通的数据科学家和大师级数据科学家的差距所在。
1.集成算法
三个臭皮匠,顶个诸葛亮。群体的智慧是很强大的。那么,在机器学习中能否同样采用此策略呢?答案是肯定的,就是集成算法——将多个不同算法从集成起来,使结果更优。
1.1袋装算法
袋装算法是一种提高分类准确率的算法。通过给定组合投票的方式获得最优解。比如你生病了,去个医院看了个医生,每个医生都给你开了药方,最后哪个药方的出现次数多,就说明这个药方可能是最优解。
1.1.1袋装决策树
袋装算法在数据具有很大方差时非常有效,最常见的例子就是决策树的袋装算法。
from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier filename = 'pima_data.csv' names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = read_csv(filename, names=names) array = data.values X = array[:,0:8] Y = array[:,8] num_folds = 10 seed = 7 kfold = KFold(n_splits=num_folds,shuffle=True,random_state=seed) #袋装决策树 cart = DecisionTreeClassifier() num_tree = 100 model = BaggingClassifier(base_estimator=cart,n_estimators=num_tree,random_state=seed) result = cross_val_score(model, X, Y, cv=kfold) print(result.mean())
0.7578263841421736
1.1.2随机森林
随机森林是由很多决策树构成的,不同决策树之间没有关联。
当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当做最终的结果。
from sklearn.ensemble import RandomForestClassifier #随机森林 num_tree = 100 max_features = 3 model = RandomForestClassifier(n_estimators=num_tree,random_state=seed,max_features=max_features) result = cross_val_score(model, X, Y, cv=kfold) print(result.mean())
0.759107997265892