精华内容
下载资源
问答
  • 随机森林模型代码

    2018-07-19 16:11:29
    随机森林预测模型代码,相互学习。里面包含视频和ppt的学习资源。
  • matlab软件随机森林法回归模型代码,可直接matlab打开运行!精简版,包括数据导入、模型建立、误差计算、保存模型,绘制对比图的多个功能!
  • matlab软件随机森林法分类模型代码,可直接matlab打开运行!精简版,包括数据导入、模型建立、误差计算、绘制对比图、保存模型等多个功能!
  • 随机森林模型

    2021-03-21 22:32:51
    随机森林模型集成模型简介Bagging算法Boosting算法随机森林模型1、基本原理1、数据随机2、特征随机随机森林的代码实现 集成模型简介 集成学习模型使用一系列弱学习器(基础模型或者基模型)进行学习。将各个弱学习器...

    集成模型简介

    集成学习模型使用一系列弱学习器(基础模型或者基模型)进行学习。将各个弱学习器的结果进行整合,从而达到比单个学习器更好的学习效果。常见的算法有bagging算法和boosting算法。随机森林就是典型的bagging算法,而boosting算法的典型学习模型有Adaboost、GBDT、XGBoost、LightGBM。

    Bagging算法

    bagging算法原理类似投票,每次使用一个训练集训练一个弱学习器,有放回地随机抽取n次后,根据不同的训练集训练出n个弱学习器。对于分类问题,根据所有的弱学习器的投票,进行“少数服从多数”的原则进行最终预测结果。对于回归问题,采取所有学习器的平均值作为最终结果。

    Boosting算法

    Boosting算法本质是将弱学习器提升至强学习器。它和bagging算法区别在于,bagging算法对待所有的弱学习器一视同仁,而boosting算法则对弱学习器区别对待,改变弱学习器的权重。具体表现在:1、在每一论训练后对预测结果较准确的弱学习器给予较大权重,对不好的弱学习器降低权重。2、在每一轮训练后改变训练集的权值或概率分布。通过提高前一轮被弱学习器预测错误的样例的权值,降低前一轮被弱学习器预测正确的样例权值。提高若学器对预测错误的数据的重视程度。

    随机森林模型

    1、基本原理

    随机森林(random forest)是一种经典的bagging模型,其弱学习器为决策树模型。为了保证模型的泛化能力,在建立每棵树时,遵循“数据随机”和“特征随机”两个基本原则。

    1、数据随机

    从所有数据中有放回地随机抽取数据作为其中一个决策树模型的训练数据。

    2、特征随机

    假设每个样本的维度为M,指定一个常数k<M,随机地从M个特征中选取k个特征,在使用python构造随机森林模型,默认选取特征的个数k为√M。

    随机森林的代码实现

    随机森林分类模型的弱学习器是分类决策树模型,随机森林回归模型的弱学习器是回归决策树模型。

    ####随机森林0-1分类模型
    from sklearn.ensemble import RandomForestClassifier  
    X = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
    y = [0, 0, 0, 1, 1]
    model = RandomForestClassifier(n_estimators=10, random_state=123)
    model.fit(X, y)
    print(model.predict([[5, 5]]))
    

    n_estimators:若学习器的数量
    random_state:随机种子,

    ###随机森林回归模型
    from sklearn.ensemble import RandomForestRegressor
    X = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
    y = [1, 2, 3, 4, 5]
    model = RandomForestRegressor(n_estimators=10, random_state=123)
    model.fit(X, y)
    print(model.predict([[5, 5]]))
    

    案例实战

    量化金融股票

    1、引入所需要的库

    import tushare as ts  # 股票基本数据相关库
    import numpy as np  # 科学计算相关库
    import pandas as pd  # 科学计算相关库  
    import talib  # 股票衍生变量数据相关库
    import matplotlib.pyplot as plt  # 引入绘图相关库
    from sklearn.ensemble import RandomForestClassifier  # 引入分类决策树模型
    from sklearn.metrics import accuracy_score  # 引入准确度评分函数
    import warnings
    warnings.filterwarnings("ignore") # 忽略警告信息,警告非报错,不影响代码执行
    

    2、获取数据

    # 1.股票基本数据获取
    df = ts.get_k_data('000002',start='2015-01-01',end='2019-12-31')
    df = df.set_index('date')  # 设置日期为索引
    
    # 2.简单衍生变量构造
    df['close-open'] = (df['close'] - df['open'])/df['open']
    df['high-low'] = (df['high'] - df['low'])/df['low']
    
    df['pre_close'] = df['close'].shift(1)  # 该列所有往下移一行形成昨日收盘价
    df['price_change'] = df['close']-df['pre_close']
    df['p_change'] = (df['close']-df['pre_close'])/df['pre_close']*100
    
    # 3.移动平均线相关数据构造
    df['MA5'] = df['close'].rolling(5).mean()
    df['MA10'] = df['close'].rolling(10).mean()
    df.dropna(inplace=True)  # 删除空值
    
    # 4.通过Ta_lib库构造衍生变量
    df['RSI'] = talib.RSI(df['close'], timeperiod=12)  # 相对强弱指标
    df['MOM'] = talib.MOM(df['close'], timeperiod=5)  # 动量指标
    df['EMA12'] = talib.EMA(df['close'], timeperiod=12)  # 12日指数移动平均线
    df['EMA26'] = talib.EMA(df['close'], timeperiod=26)  # 26日指数移动平均线
    df['MACD'], df['MACDsignal'], df['MACDhist'] = talib.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)  # MACD值
    df.dropna(inplace=True)  # 删除空值
    

    3、特征变量和目标变量提取

    X = df[['close', 'volume', 'close-open', 'MA5', 'MA10', 'high-low', 'RSI', 'MOM', 'EMA12', 'MACD', 'MACDsignal', 'MACDhist']]
    y = np.where(df['price_change'].shift(-1)> 0, 1, -1)
    

    4、划分训练集和测试集

    X_length = X.shape[0]  # shape属性获取X的行数和列数,shape[0]即表示行数 
    split = int(X_length * 0.9)
    X_train, X_test = X[:split], X[split:]
    y_train, y_test = y[:split], y[split:]
    

    5、模型构建

    model = RandomForestClassifier(max_depth=3, n_estimators=10, min_samples_leaf=10, random_state=1)
    model.fit(X_train, y_train)
    

    完整的RandomForestClassifier参数

    RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,
                           criterion='gini', max_depth=3, max_features='auto',
                           max_leaf_nodes=None, max_samples=None,
                           min_impurity_decrease=0.0, min_impurity_split=None,
                           min_samples_leaf=10, min_samples_split=2,
                           min_weight_fraction_leaf=0.0, n_estimators=10,
                           n_jobs=None, oob_score=False, random_state=1, verbose=0,
                           warm_start=False)
    

    6、预测

    y_pred = model.predict(X_test)
    a = pd.DataFrame()  # 创建一个空DataFrame 
    a['预测值'] = list(y_pred)
    a['实际值'] = list(y_test)
    

    在这里插入图片描述
    用pridict_paoba()函数科研预测各个分类的概率

    # 查看预测概率
    y_pred_proba = model.predict_proba(X_test)
    y_pred_proba[0:5]
    

    7、模型准确度评估

    from sklearn.metrics import accuracy_score
    score = accuracy_score(y_pred, y_test)
    # 此外,我们还可以通过模型自带的score()函数记性打分,代码如下:
    model.score(X_test, y_test)
    

    8、分析特征变量的特征重要性

    model.feature_importances_
    # 通过如下代码可以更好的展示特征及其特征重要性:
    features = X.columns  
    importances = model.feature_importances_
    a = pd.DataFrame()
    a['特征'] = features
    a['特征重要性'] = importances
    a = a.sort_values('特征重要性', ascending=False)
    

    在这里插入图片描述

    参数调优

    from sklearn.model_selection import GridSearchCV  # 网格搜索合适的超参数
    # 指定分类器中参数的范围
    parameters = {'n_estimators':[5, 10, 20], 'max_depth':[2, 3, 4, 5], 'min_samples_leaf':[5, 10, 20, 30]}
    new_model = RandomForestClassifier(random_state=1)  # 构建分类器
    grid_search = GridSearchCV(new_model, parameters, cv=6, scoring='accuracy')  # cv=6表示交叉验证6次,scoring='roc_auc'表示以ROC曲线的AUC评分作为模型评价准则, 默认为'accuracy', 即按准确度评分,设置成'roc_auc'表示以ROC曲线的auc值作为评估标准
    grid_search.fit(X_train, y_train)  # 传入数据
    grid_search.best_params_  # 输出参数的最优值
    

    参数调优的最终结果
    9、 收益回测曲线绘制

    X_test['prediction'] = model.predict(X_test)
    X_test['p_change'] = (X_test['close'] - X_test['close'].shift(1)) / X_test['close'].shift(1)
    X_test['origin'] = (X_test['p_change'] + 1).cumprod()
    X_test['strategy'] = (X_test['prediction'].shift(1) * X_test['p_change'] + 1).cumprod()
    X_test[['strategy', 'origin']].tail()
    

    在这里插入图片描述

    # 通过如下代码将收益情况删除空值后可视化,并设置X轴刻度自动倾斜:
    X_test[['strategy', 'origin']].dropna().plot()
    plt.gcf().autofmt_xdate()
    plt.show()
    

    在这里插入图片描述

    展开全文
  • # 随机森林模型建立与训练 from sklearn.ensemble import RandomForestRegressor # 其他模型按需要选择即可 rfr = RandomForestRegressor(n_estimators=100, max_depth=3, random_state=0) # 参数自己看帮助文档进行...
    # 随机森林模型建立与训练
    from sklearn.ensemble import RandomForestRegressor  # 其他模型按需要选择即可
    rfr = RandomForestRegressor(n_estimators=100, max_depth=3, random_state=0)  # 参数自己看帮助文档进行选择
    rfr.fit(x_train, y_train)  # 训练模型
    
    # 基于模型的特征重要性评估
    # 得到特征重要性
    importances = list(model_name.feature_importances_)
    # 转换格式
    feature_importances = [(feature, round(importance, 2)) for feature, importance in zip(list(X.columns), importances)]
    # 排序
    feature_importances = sorted(feature_importances, key = lambda x: x[1], reverse = True)
    # 输出展示
    [print('Variable: {:20} Importance: {}'.format(*pair)) for pair in feature_importances]
    # 得到特征重要性后,按照相关论文经验,选择特征直到特征重要性累加值达到95%
    
    展开全文
  • /** * Created by lkl on 2017/10/9. */ import org.apache.spark.sql.hive.HiveContext import org.apache.spark.SparkConf import scala.collection.mutable.ArrayBuffer ...import org.apache.spar...
    /**
      * Created by lkl on 2017/10/9.
      */
    import org.apache.spark.sql.hive.HiveContext
    import org.apache.spark.SparkConf
    import scala.collection.mutable.ArrayBuffer
    import org.apache.spark.SparkContext
    import org.apache.spark.mllib.tree.RandomForest
    import org.apache.spark.mllib.tree.model.RandomForestModel
    import org.apache.spark.mllib.linalg.Vectors
    import org.apache.spark.sql.SQLContext
    import org.apache.spark.mllib.regression.LabeledPoint
    import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
    object uvcy {
      def main(args: Array[String]) {
        val conf = new SparkConf().setAppName("test") //setMaster("spark://192.168.0.37:7077")
        val sc = new SparkContext(conf)
        val sqlContext = new SQLContext(sc)
        val hc = new HiveContext(sc)
        val data2 = hc.sql("select * from  fin_tec.uvcy2")
    //第一个字段为身份证号,第二个字段为是否逾期,字符存在在hive中全部为double型
        val data = data2.map{ row => val arr = new ArrayBuffer[Double]()
            for(i <- 2 until row.size){
              if(row.isNullAt(i)){
                arr += 0.0}
              else if(row.get(i).isInstanceOf[Double])
                arr += row.getDouble(i)
              else if(row.get(i).isInstanceOf[Long])
                arr += row.getLong(i).toDouble
              else if(row.get(i).isInstanceOf[String])
                arr += row.getString(i).toDouble}
            LabeledPoint(row.getDouble(1), Vectors.dense(arr.toArray))}
        val splits = data.randomSplit(Array(0.7, 0.3))
        val (trainingData, testData) = (splits(0), splits(1))
        val numClasses = 2
        val categoricalFeaturesInfo = Map[Int, Int]()
        val numTrees = 3
        val featureSubsetStrategy = "auto"
        val impurity = "gini"
        val maxDepth = 4
        val maxBins = 32
        val model = RandomForest.trainClassifier(trainingData, numClasses, categoricalFeaturesInfo, numTrees, featureSubsetStrategy, impurity, maxDepth, maxBins)
        val labelAndPreds = testData.map { point =>
          val prediction = model.predict(point.features)
          (point.label, prediction)
        }
        val evaluator = new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction").setMetricName("precision")
        val testErr = labelAndPreds.filter(r => r._1 != r._2).count.toDouble / testData.count()
        println("Test Error = " + testErr)
        println("Learned classification forest model:\n" + model.toDebugString)
        model.save(sc, "uvcymodel/forest")
    
        val sameModel = RandomForestModel.load(sc, "uvcymodel/forest")
        val data3 = hc.sql("select * from test.uvcy where i_l3_hk_amt=2150")
        val id="110101000000000000"
        val datas = data3.map{ row => val arr = new ArrayBuffer[Double]()
          for(i <- 2 until row.size){
            if(row.isNullAt(i)){
              arr += 0.0}
            else if(row.get(i).isInstanceOf[Double])
              arr += row.getDouble(i)
            else if(row.get(i).isInstanceOf[Long])
              arr += row.getLong(i).toDouble
            else if(row.get(i).isInstanceOf[String])
              arr += row.getString(i).toDouble}
          (Vectors.dense(arr.toArray))}
        val labelAndPreds2 = testData.map { point =>
          val prediction =sameModel.predict(point.features)
          (id,point.label, prediction,point.features)
        }
        labelAndPreds2.take(2)
    
    
    
    
    
    
      }
    }
    

     

    转载于:https://www.cnblogs.com/canyangfeixue/p/7762521.html

    展开全文
  • 随机森林模型机器学习【系列】之第六章随机森林模型前言一、随机森林模型的原理和代码实现1.集成模型简介2.随机森林模型的基本原理3.随机森林模型代码实现二、使用步骤1.引入库2.读入数据总结 前言 本章将介绍...

    机器学习【系列】之第六章随机森林模型

    第六章随机森林模型



    前言

    本章将介绍集成学习模型,集成学习采用的其实就是这一思想:将多个模型组合在一起,从而产生更强大的模型。本章要讲解一个非常典型的集成学习模型-----随机森林模型,并通过一个金融领域的应用----股票涨跌预测模型来巩固所学知识。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、随机森林模型的原理和代码实现

    1.集成模型简介

    集成学习模型使用一系列弱学习器(也称基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。集成学习模型的常见算法有Bagging算法和Boosting算法。Bagging算法的典型机器学习模型为本章要讲的随机森林模型,而Boosting算法的典型机器学习模型则为下次要讲到的AdaBoost,GBDT、XGBoost和LightGBM模型。

    • (1)Bagging算法

    Bagging 算法的原理类似投票,每一个弱学习器都有一票,最终根据所有弱学习的投票,按照“少数服从多数”的原则产生最终的预测结果。具体来说,在分类问题中是用n个弱学习器投票的方式获取最终的预测结果,在回归问题中则是取n个弱学习器的平均值作为最终结果。

    • (2)Boosting算法
      Boosting算法的本质是将弱学习器提升为强学习器,它和Bagging算法的区别在于:Bagging算法对待所有的弱学习器都是一视同仁;而Boosting算法则会对弱学习器“区别对待”,通俗来讲就是注重“培养精英”和“重视错误”。
      培养精英”就是每一轮训练后对预测结果较为准确的弱学习器给予较大的权重,对表现不好的弱学习器则降低权重。这样在最终预测时,“优秀模型”的权重是大的,相当于它可以投出多票,而“一般模型”只能投出一票或不能投票。
      重视错误”就是在每一轮训练后改变训练集的权重或概率分布,通过提高在前一轮被弱学习器预测错误的样例的权值,降低前一轮被弱学习器预测正确的权值,来提高弱学习器对预测错误的数据的重视程度,从而提升模型的整体预测效果。

    2.随机森林模型的基本原理

    随机森林是(Random Forest)一种经典的Bagging模型,其若学习器为决策树模型。随机森林会在原始数据集中随机抽样,构成n个不同的样本数据集,然后根据这些数据集搭建n个不同的决策树模型,最后根据这些样本数据集,然后根据这些数据集搭建n个不同的决策树模型,最后根据这些决策树模型的平均值(针对回归模型)或者投票情况(针对分类模型)来获取最终结果。为了保证模型的泛化能力(或者说通用能力),随机森林模型在建立每棵树时,往往会遵循“数据随机”和“特征随机”这两个基本原则。

    • 数据随机:从所有数据中有放回地随机抽取数据作为其中一个决策树模型的训练数据。例如:有1000个原始数据,有放回地抽取1000次,构成一组新的数据,用于训练一个决策树模型。
    • 特征随机:如果每个样本的特征维度为M,指定一个常数k<M,随机地从M个特征中选取k个特征。在使用Python构造随机森林模型时,默认选取特征的个数k为 根号M。

    3.随机森林模型的代码实现

    # 随机森林分类模型,弱学习器是分类决策树模型
    from sklearn.ensemble import RandomForestClassifier
    X = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
    y = [0, 0, 0, 1, 1]
    model = RandomForestClassifier(n_estimators=10, random_state=123)
    model.fit(X, y)
    print(model.predict([[5, 5]]))
    
    # 随机森林回归模型,弱学习器是回归决策树模型
    from sklearn.ensemble import RandomForestRegressor
    X = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
    y = [1, 2, 3, 4, 5]
    model = RandomForestRegressor(n_estimators=10, random_state=123)
    model.fit(X, y)
    print(model.predict([[5, 5]]))
    

    二、案例实战:股票涨跌预测模型

    1.股票基本数据获取

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import tushare as ts
    # 1.获取日线行情数据
    df = ts.get_hist_data("000002",start='2018-01-01',end="2019-01-31")
    # print(df.head())
    
    # 2.获取分钟级别的数据
    df = ts.get_hist_data("000002",ktype='5')
    # print(df.head())
    
    # 3.获取实时行情数据
    df = ts.get_realtime_quotes("000002")
    # print(df.head())
    df = df[["code","name","price","bid","ask","volume","amount","time"]]
    # print(df)
    
    # 4.获取分笔数据
    # 获取历史分笔数据,即每笔成交的数据
    df = ts.get_tick_data("000002",date="2018-12-12",src="tt")
    # print(df)
    # 获取当日每笔数据
    df = ts.get_today_ticks("000002");
    # print(df)
    # 获取指数数据
    df = ts.get_index()
    # print(df.head())
    

    2. 股票衍生变量生成

    # 1.获取股票基本数据
    df = ts.get_k_data("000002",start='2015-01-01',end="2019-12-31")
    df = df.set_index('date')
    # print(df.head())
    
    # 2.生成简单衍生变量
    df["close-open"] = (df["close"] - df["open"]) / df["open"]
    df["high-low"] = (df["high"] - df["low"]) / df["low"]
    df["pre_close"] = df["close"].shift(1)
    df["price_change"] = df["close"] - df["pre_close"]
    df["p_change"] = (df["close"]-df["pre_close"]) / df["pre_close"]*100
    # print(df.head())
    
    # 3.生成移动平均指标MA值
    df["MA5"]=df["close"].rolling(5).mean()
    df["MA10"]=df["close"].rolling(10).mean()
    
    df.dropna(inplace=True)  # 删除空值行,也可以写成df = df.dropna()
    df["MA5"] = df["close"].sort_index().rolling(5).mean()
    # print(df.head())
    
    # 4.股票衍生变量生成库TA_lib的安装
    import talib
    
    # 5.用TA—lib库生成相对强弱指标RSI值
    df["RSI"] = talib.RSI(df["close"],timeperiod=12)
    

    RSI值能反映短期内股价涨势相对于跌势的强弱,帮助我们更更好地判断股价的涨跌趋势。RSI值越大,涨势相对于跌势越强,反之则涨势相对于跌势越弱。

    # 6.用TA-lib库生成动量指标MOM值
    df["MoM"] = talib.MOM(df["close"],timeperiod=5)
    # MOM反映了一段时间内股价的涨跌速度
    
    # 7.用TA-lib库生成指数移动平均值EMA
    df["EMA12"] = talib.EMA(df["close"],timeperiod=12) # 12日指数移动平均值
    df["EMA26"] = talib.EMA(df["close"],timeperiod=26) # 26日指数移动平均值
    # EMA和移动平均指标MA值有点类型,不过计算公式更复杂。EMA是一种趋势指标。
    
    # 8.用TA-lib库生成异同移动平均线MACD值
    df["MACD"],df["MACDsignal"],df["MACDhist"] = talib.MACD(df["close"],fastperiod=6,slowperiod=12,signalperiod=9)
    #MACD是股票是市场上常用指标,它是基于EMA值得衍生变量。
    
    # 生成所有衍生变量数据并删除空值后,打印tail()查看表格的最后5行。
    print(df.tail())
    

    3.多因子模型搭建

    有了合适的数据之后,就可以进行模型的搭建了。本案例中的模型是根据多个特征进行搭建的,在量化金融领域称为多因子模型。股票数据是时间序列数据,与之相关的一些数据处理工作和之前所讲的模型稍有不同。下面先进行一些简单的数据处理工作,再进行模型搭建。

    1.引入需要用到的库

    import tushare as ts  # 引入股票基本数据相关库
    import numpy as np  # 引入科学计算相关库
    import pandas as pd  # 引入科学计算相关库
    import talib  # 引入股票衍生变量数据相关库
    import matplotlib.pyplot as plt  # 引入绘图相关库
    from sklearn.ensemble import RandomForestClassifier  # 引入分类决策树模型
    from sklearn.metrics import accuracy_score  # 引入预测准确度评分函数
    

    2.获取数据

    
    # 1.股票基本数据获取
    df = ts.get_k_data("000002",start='2015-01-01',end='2020-11-14')
    df = df.set_index("date")
    
    # 2.简单衍生变量数据构造
    df["close-open"] = (df["close"] - df["open"]) / df["open"]
    df["high-low"] = (df["high"] - df["low"]) / df["low"]
    df["pre_close"] = df["close"].shift(1)
    df["price_change"] = df["close"] - df["pre_close"]
    df["p_change"] = (df["close"]-df["pre_close"]) / df["pre_close"]*100
    
    # 3.移动平均线相关数据构造
    df["MA5"] = df["close"].rolling(5).mean()
    df["MA10"] = df["close"].rolling(10).mean()
    df.dropna(inplace=True)
    
    # 4.通过TA_lib库构造衍生变量数据
    df["RSI"] = talib.RSI(df["close"],timeperiod=12)
    df["MoM"] = talib.MOM(df["close"],timeperiod=5)
    df["EMA12"] = talib.EMA(df["close"],timeperiod=12) # 12日指数移动平均值
    df["EMA26"] = talib.EMA(df["close"],timeperiod=26) # 26日指数移动平均值
    df["MACD"],df["MACDsignal"],df["MACDhist"] = talib.MACD(df["close"],fastperiod=6,slowperiod=12,signalperiod=9)
    df.dropna(inplace=True)
    
    

    3.提取特征变量和目标变量

    X = df[["close","volume","close-open","MA5","MA10","high-low","RSI","MoM","EMA12","MACD","MACDsignal","MACDhist"]]
    y = np.where(df["price_change"].shift(-1)>0,1,-1)
    

    4.划分训练集和测试集

    X_length = X.shape[0]
    split = int(X_length * 0.5)
    X_train,X_test = X[:split],X[split:]
    y_train,y_test = y[:split],y[split:]
    

    5.搭建模型

    model = RandomForestClassifier(max_depth=3,n_estimators=10,min_samples_leaf=10,random_state=1)
    model.fit(X_train,y_train)
    

    4.模型使用与评估

    1.预测下一天股价的涨跌情况

    y_pred = model.predict(X_test)
    a = pd.DataFrame()
    a["预测值"] = list(y_pred)
    a["实际值"] = list(y_test)
    
    # 用predict_proba()函数可以预测属于各个分类的概率
    y_pred_proba = model.predict_proba(X_test)
    

    2.模型准确度评估

    from sklearn.metrics import accuracy_score
    score = accuracy_score(y_pred,y_test)
    
    model.score(X_test,y_test)
    

    3.分析特征变量的特征重要性

    features = X.columns
    importances = model.feature_importances_
    a = pd.DataFrame()
    a["特征"] = features
    a["特征重要性"] = importances
    a = a.sort_values("特征重要性",ascending=False)
    print(a)
    
    

    5.收益回测曲线绘制

    这里主要用到了累乘函数cumprod()

    X_test["prediction"] = model.predict(X_test)
    X_test["p_change"] = (X_test["close"] - X_test["close"].shift(1)) / X_test["close"].shift(1)
    X_test["origin"] = (X_test["p_change"]+1).cumprod()
    X_test["strategy"] = (X_test["prediction"].shift(1) * X_test["p_change"]+1).cumprod()
    
    X_test[["strategy","origin"]].dropna().plot()
    plt.gcf().autofmt_xdate()
    plt.show()
    

    总结

    参考书籍:《Python大数据分析与机器学习商业案例实战》

    展开全文
  • 随机森林图像matlab代码使用人类视觉DOG模型随机森林融合的图像质量评估 该代码是[1]中特征提取部分的Matlab实现。 从图像对中提取特征的功能是“ featurev1.m”。 更具体地说,输出X(6:10)是DOG-SSIM的亮度特征...
  • 随机森林 random forest 模型是由Breiman 和Cutler 在2001 年提出的一种基于分类树的算法 它通过 对大量分类树的汇总提高了模型的预测精度 是取代神经网络等传统机器学习方法的新的模型 随机森林的运 算速度很快 在...
  • 决策树、随机森林代码实战

    千次阅读 2019-04-28 22:47:56
    随机森林训练 ...我们对训练集采用随机森林模型,并评估模型效果 %pylab inline # 导入训练集、验证集和测试集 import pandas as pd samtrain = pd.read_csv('samtrain.csv') samval = pd.read_csv(...
  • 万事俱备,我们可以来建立随机森林模型啦,首先导入工具包,先建立1000个树试试吧,其他参数先用默认值,之后我们会再深入到调参任务中: # 导入算法 from sklearn.ensemble import RandomForestRegressor # 建模 ...
  • 学了差不多10多天的入门机器学习,突然发现学好数学是多么的重要,以前上学时还觉得数学只要学会加减乘除就可以了,什么导数,回归方程都没什么用,这段时间真后悔死,看了好多模型原理推导,有好多的数学符号都不...
  • 随机森林模型选股matlab代码使用趋势确定性数据准备技术比较用于股票预测和股票指数走势的机器学习算法。 如果您喜欢演示文稿而不是自述文件,我们建议您查看该项目 :triangular_flag: 目录 :light_bulb: 介绍 2014...
  • 基于随机森林模型的红酒品质分析

    千次阅读 2020-04-12 22:48:38
    代码做了些注释。 https://scipy.org/ # url: https://archive.ics.uci.edu/ml/datasets/Wine+Quality # 导入模块 import pandas as pd import seaborn as sns import matplotlib.pyplot as p...
  • 代码基于https://github.com/HMS-IDAC/MLRFS 和https://github.com/HMS-IDAC/MLRFSwCF 主要区别是: >仅实现了一个随机森林层。 这使得模型更易于理解并且训练/测试更快。 > 提供更多功能选项,尤其是可操纵和日志...
  • 前一篇是写的线性回归模型,这一篇为随机森林,下一篇为xgboost。 二、算法简介 2.1 随机森林概述 随机森林是集成学习方法bagging类中的翘楚。与集成学习boosting类的GBDT分庭抗礼。 bagging类集成学习采用的...
  • 用鸢尾花数据集构建随机森林模型

    千次阅读 2019-03-29 12:03:11
    直接上代码 ''' Created on 2019年3月29日 @author: vincent ''' from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier import pandas as pd import numpy as np iris = ...
  • sklearn随机森林和决策树分类器的Hellinger距离准则 我正在将其添加到scikit-learn-contrib / imbalanced-learn 建造 您将需要来自sklearn的cython“头文件”(.pxd)。 如果您已经从源代码包中安装了sklearn,...
  • 随机森林原理附代码

    2021-01-23 17:24:55
    随机森林1 概述1.1 集成算法概述1.2 sklearn中的集成算法1.2.1 集成算法模块ensemble1.2.2 sklearn的基本建模流程2 RandomForestClassifier2.1 重要参数2.1.1 控制基评估器的参数 1 概述 1.1 集成算法概述 集成学习...
  • 核心代码: import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.metrics import precision_score from sklearn.metrics import recall_score from sklearn.metrics import f1...
  • 使用模型进行训练 模型参数调优 sklearn所有算法,封装好了 直接用,使用规则如下 clf = DecisionTreeClassifier(criterion=‘entropy’) clf.fit(X_train,y_train) y_ = clf.predict(X_test) from sklearn.metrics ...
  • 随机森林图像matlab代码搜索九号星球 欢迎来到第九行星研究资料库! 搜索使用来自的数据,并着眼于距地球约200AU的跨海马物体。 这是我在2017年夏季为该项目编写的一些代码。...Python随机森林模型
  • 主要脚本有: voxelClassifierTrain,用于训练模型,以及voxelClassifier,用于在训练模型后分割体积。 有关详细信息和要设置的参数,请参阅这些文件。 可以使用VolumeAnnotationBot创建标签/注释, 网址为...
  • 随机森林图像matlab代码卒中发作 这个回购。 提供了“机器学习方法以在4.5小时内识别中风”的MATLAB代码。 这包括以下步骤: 梗塞分割 比率图生成(和注册), 纹理特征提取, 训练机器学习模型(逻辑回归,支持向量...
  • 它们都是很基础但很强大的机器学习工具,虽然我们现在有更先进的算法工具来训练模型,但决策树与随机森林因其简单灵活依然广受喜爱,建议大家学习。 一、决策树 1.1 什么是决策树 我们可以把决策树想象成IF/ELSE判别...
  • 构建Pipeline管道,设置Stage,每个Stage要么是算法(模型学习器Estimator),要么是模型(转换器Transformer) val pipeline: Pipeline = new Pipeline() // 设置Stage,依赖顺序 .setStages( Array(labelIndexer,...
  • 随机森林图像matlab代码HAB深度学习分类(培训和测试) 该代码用于为HAB数据库生成分类分数 有两种基本的分类方法: 使用ConvNet在单独的网络中从每个帧中提取特征,并将序列传递给RNN 使用ConvNet从每个帧中提取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 510
精华内容 204
关键字:

随机森林模型代码