python随机森林函数 python sklearn随机森林( 二 )


每个框架都应该有模型持久化函数,以sklearn为例:
from sklearn.externals import joblib
joblib.dump(clf, "train_model.m") #存储
clf = joblib.load("train_model.m") #调用
求问随机森林算法的简单实现过程?随机森林(Random forest)指python随机森林函数的是利用多棵树对样本进行训练并预测python随机森林函数的一种分类器 。并且其输出的类别是由个别树输出的类别的众数而定 。在机器学习中有一个地位很重要的包scikit-learn可实现随机森林算法 。
原理:(随机森林的分类预测和回归预测sklearn.ensemble.RandomForestRegressor方法)
(1)给定训练集Spython随机森林函数,测试集T,特征维数F 。确定参数:使用到的CART的数量t,每棵树的深度d,每个节点使用到的特征数量f , 终止条件:节点上最少样本数s,节点上最少的信息增益m , 对于第1-t棵树,i=1-t:
(2)从S中有放回的抽取大小和S一样的训练集S(i),作为根节点的样本,从根节点开始训练
(3)如果当前节点上达到终止条件,则设置当前节点为叶子节点,如果是分类问题 , 该叶子节点的预测输出为当前节点样本集合中数量最多的那一类c(j) , 概率p为c(j)占当前样本集的比例;如果是回归问题,预测输出为当前节点样本集各个样本值的平均值 。然后继续训练其python随机森林函数他节点 。如果当前节点没有达到终止条件,则从F维特征中无放回的随机选取f维特征 。利用这f维特征 , 寻找分类效果最好的一维特征k及其阈值th,当前节点上样本第k维特征小于th的样本被划分到左节点,其余的被划分到右节点 。继续训练其他节点 。
(4)重复(2)(3)直到所有节点都训练过了或者被标记为叶子节点 。
(5)重复(2),(3),(4)直到所有CART都被训练过 。
随机森林的简单实现过程如下:
一、 开发环境、编译环境:
PyCharm Community Edition 2016.2.3
Python2.7.10
二、 所用库及安装方法:
pandas[python自带]
sklearn:命令行pip install sklearn;如果没有安装pip,先使用easy_install pip安装pip;如果在MAC上没有权限 , 使用sudo pip install sklearn;
三、 代码介绍
1. 使用pandas读取本地excel的训练集和测试集,将属性集赋给X_train和Y_train;将要预测的集合赋给X_test和Y_test;
2. 使用DictVectorizer对数据进行规范化、标准化
3. 生成RandomForestRegressor对象,并将训练集传入fit方法中进行训练
4. 调用predict函数进行预测 , 并将结果存入y_predict变量中;
5. 使用mean_squared_error、score方法输出MSE、NMSE值对拟合度、稳定度进行分析;输出feature_importance,对影响最终结果的属性进行分析;
6. 详细代码见附录
四、 附录
# coding:utf-8
import pandas as pd
data_train = pd.read_excel('/Users/xiaoliu/Desktop/data_train.xlsx')
X_train = data_train[['CPI', 'GDP', 'PPI', 'AJR', 'BJFJ', 'FBDR', 'PCFD', 'PCFDED', 'BDR']]
y_train = data_train['FJ']
data_test = pd.read_excel('/Users/xiaoliu/Desktop/data_test.xlsx')
X_test = data_test[['CPI', 'GDP', 'PPI', 'AJR', 'BJFJ', 'FBDR', 'PCFD', 'PCFDED', 'BDR']]
y_test = data_test['FJ']
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer(sparse=False)
X_train = vec.fit_transform(X_train.to_dict(orient='records'))
X_test = vec.transform(X_test.to_dict(orient='records'))
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor()
rf.fit(X_train,y_train)
y_predict = rf.predict(X_test)
print 'predict value:',y_predict
from sklearn.metrics import mean_squared_error
print 'MSE:', mean_squared_error(y_test, y_predict)

推荐阅读