|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
随机森林是个非常好用的算法,原理就是把许多个决策树执行后选择一个最好的结果,下面还是把昨天有用的代码复制过来:
- from sklearn.datasets import make_moons
- from sklearn.model_selection import StratifiedShuffleSplit
- from sklearn.model_selection import StratifiedShuffleSplit
- X,y=make_moons(n_samples=500, shuffle=True, noise=0.3, random_state=42)
- split=StratifiedShuffleSplit(n_splits=1,test_size=0.2,random_state=42)
- for train_index,test_index in split.split(X,y):
- X_train=X[train_index]
- X_test=X[test_index]
- y_train=y[train_index]
- y_test=y[test_index]
复制代码
我们先做一个随机森林模型:
- from sklearn.ensemble import RandomForestClassifier
- rnd_clf=RandomForestClassifier(n_estimators=500,max_leaf_nodes=16,n_jobs=-1)
- rnd_clf.fit(X_train,y_train)
- y_pred_rf=rnd_clf.predict(X_test)
复制代码
这里面参数的含义是:用500棵决策树,每棵树最大分出来的树叶16个,最后一个参数n_jobs就是利用我们电脑最大的CUP内核数,比如我的电脑是8核的,就是用8个核来达到最快运算速度。底下这段代码就跟上面的原理是一样的,可作为参考:
- from sklearn.ensemble import BaggingClassifier
- from sklearn.tree import DecisionTreeClassifier
- bag_clf=BaggingClassifier(
- DecisionTreeClassifier(splitter="random",max_leaf_nodes=16),n_estimators=500,
- max_samples=1.0,bootstrap=True,n_jobs=-1
- )
复制代码
然后还有一种随机森林的写法,代码如下:
- from sklearn.ensemble import ExtraTreesClassifier
- etr_clf=ExtraTreesClassifier(n_estimators=500,max_leaf_nodes=16,n_jobs=-1)
- etr_clf.fit(X_train,y_train)
- etr_clf.predict(X_test)
复制代码
用这以上2种都可以,不分优劣。随机森林的最大好处是还可以帮我们预测数据里的哪种特征有用,代码如下:
- from sklearn.datasets import load_iris
- iris=load_iris()
- rnd_clf=RandomForestClassifier(n_estimators=500,n_jobs=-1)
- rnd_clf.fit(iris["data"],iris["target"])
- for name,score in zip(iris["feature_names"],rnd_clf.feature_importances_):
- print(name,score)
复制代码
输出为:
sepal length (cm) 0.0962354787155
sepal width (cm) 0.0245017888138
petal length (cm) 0.450381280478
petal width (cm) 0.428881451992
以上这个数据还是鸢尾花,通过结果可以看到petal length ,petal width(花瓣的长和宽)这两种特征的重要性比较高,其他两种(花萼)比较没用,当我们训练时就可以只挑有用的数据来训练模型。
还有一种叫做提升算法,今天简单介绍一下,这种算法也是一种综合的算法,就是好几种算法的综合体,代码如下:
- from sklearn.ensemble import AdaBoostClassifier
- ada_clf=AdaBoostClassifier(
- DecisionTreeClassifier(max_depth=1),n_estimators=200,
- algorithm="SAMME.R",learning_rate=0.5
- )
- ada_clf.fit(X_train,y_train)
复制代码
这个算法比我们以前学习的bagging算法有优势,它是在每个循环可以判断集成的这些算法预测的得分,选取最高得分的算法来使用,这样即节省时间又提高准确度,以上代码就是综合使用了200棵决策树。 |
|