Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中随机森林的数据准备和预测建模_Python_Machine Learning_Prediction_Random Forest - Fatal编程技术网

python中随机森林的数据准备和预测建模

python中随机森林的数据准备和预测建模,python,machine-learning,prediction,random-forest,Python,Machine Learning,Prediction,Random Forest,我正在使用分类输出(通过/失败:二进制1或0)和大约200个特性进行预测建模练习。我有大约350K个这样的培训示例,但如果需要,我可以增加数据集的大小。以下是我遇到的几个问题: 1-我正在处理严重失衡的班级。在这些350K示例中,只有2K被标记为“失败”(即分类输出=1)。我如何解释这一点?我知道有几种技术,例如使用引导向上采样 2-我的大部分特征(~95%)都是分类的(例如城市、语言等),每个特征的级别不到5-6级。我是否需要将它们转换为功能每个级别的二进制数据?例如,如果功能“city”与纽

我正在使用分类输出(通过/失败:二进制1或0)和大约200个特性进行预测建模练习。我有大约350K个这样的培训示例,但如果需要,我可以增加数据集的大小。以下是我遇到的几个问题:

1-我正在处理严重失衡的班级。在这些350K示例中,只有2K被标记为“失败”(即分类输出=1)。我如何解释这一点?我知道有几种技术,例如使用引导向上采样

2-我的大部分特征(~95%)都是分类的(例如城市、语言等),每个特征的级别不到5-6级。我是否需要将它们转换为功能每个级别的二进制数据?例如,如果功能“city”与纽约、巴黎和巴塞罗那有3个级别,那么我可以将其转换为3个二元功能:city_New_York、city_Paris和city_Barcelona

3-选择模型本身:我正在考虑一些,例如SVM、K-邻域、决策树、随机林、逻辑回归,但我的猜测是,随机林将适用于此,因为有大量分类特征。有什么建议吗

4-如果我使用随机林,我是否需要(a)对连续变量进行功能缩放(我猜不是),(b)将连续变量更改为二进制变量,如上面问题2所述(我猜不是),(c)说明我的严重不平衡类,(d)删除缺失值

提前感谢您的回答

  • 它有助于使用平衡类进行训练(但不要与它们交叉验证),RF对数据的效率令人惊讶,因此您可能不需要所有350k负样本进行训练。通过从该池中进行替换取样,选择相同数量的正面示例。不过,别忘了留下一些积极的例子供验证

  • 如果您在scikit学习中,请使用pandas的df.get_dummies()生成二进制编码。R为作为因子的变量进行二进制编码。在幕后,它有点像矢量

  • 我总是从RF开始,因为它的旋钮太少了,这是一个很好的基准。在我理顺了我的特征变换并获得AUC之后,我尝试了其他方法

  • a) 不b)不c)是d)是的,它需要以某种方式修复。如果您可以删除任何预测值缺失的数据,那就太好了。然而,如果这是不可能的,中位数是一个常见的选择。假设正在构建一棵树,并选择变量X4进行拆分。RF需要在一条线上选择一个点,并将所有数据发送到左侧或右侧。对于X4没有值的数据,它应该做什么?以下是R中采用的策略:

  • 对于数值变量,NAs将替换为列中间值。对于因子变量,NAs被替换为最频繁的级别(随机打破联系)。如果对象不包含NAs,则会原封不动地返回


    为什么要用python标记这个?