直接上代码

在做特征工程的时候, 其实可以用算法来处理特征工程的, 比如缺失值填充之类的. 这里一段code_demo是搬运来的, 不过是真滴好用呢.

# RandomForest - 强化, 对 new_user_class_level 进行 缺失值预测

from pyspark.mllib.regression import LabeledPoint

# 1. 过滤出 new_user_class_level 非空的df 作为 训练集

train_data2 = user_profile_df.dropna(subset=["new_user_class_level"]).rdd.map(
lambda r:LabeledPoint(r.new_user_class_level - 1, [r.cms_segid, r.cms_group_id, r.final_gender_code, r.age_level, r.shopping_level, r.occupation])
) # 2. 训练模型 from pyspark.mllib.tree import RandomForest model2 = RandomForest.trainClassifier(train_data2, 4, {}, 5) # 3. 测试 一波
model2.predict([0.0, 4.0 ,2.0 , 4.0, 1.0, 0.0]) # 预测值实际应该为2
# 4. 对缺失值进行预测
na_df = user_profile_df.na.fill(-1).where("new_user_class_level=-1") def row(r):
return r.cms_segid, r.cms_group_id, r.final_gender_code, r.age_level, r.shopping_level, r.occupation # 5. rdd方式进行行处理
rdd2 = na_df.rdd.map(row) # 6. 利用模型预测
predicts = model2.predict(rdd2) # 7. 修正预测值(+1), 并合并 df tmp = predicts.map(lambda x:int(x)).collect() pdf = pl_na_df.toPandas() import numpy as np pdf['new_user_class_level'] = np.array(tmp)+1 # 和预测df 和 真实 df 进行 unionAll
new_user_profile_df = user_profile_df.dropna(subset=["new_user_class_level"]).unionAll(
spark.createDataFrame(tmp, schema=schema)) # 注意: unionAll的使用(纵向合并df), 两个df的表结构必须完全一样
new_user_profile_df.show(5)

code_demo 用随机森林做缺失值预测的更多相关文章

  1. 机器学习入门-随机森林温度预测-增加样本数据 1.sns.pairplot(画出两个关系的散点图) 2.MAE(平均绝对误差) 3.MAPE(准确率指标)

    在上一个博客中,我们构建了随机森林温度预测的基础模型,并且研究了特征重要性. 在这个博客中,我们将从两方面来研究数据对预测结果的影响 第一方面:特征不变,只增加样本的数据 第二方面:增加特征数,增加样 ...

  2. 使用基于Apache Spark的随机森林方法预测贷款风险

    使用基于Apache Spark的随机森林方法预测贷款风险   原文:Predicting Loan Credit Risk using Apache Spark Machine Learning R ...

  3. 机器学习实战基础(三十八):随机森林 (五)RandomForestRegressor 之 用随机森林回归填补缺失值

    简介 我们从现实中收集的数据,几乎不可能是完美无缺的,往往都会有一些缺失值.面对缺失值,很多人选择的方式是直接将含有缺失值的样本删除,这是一种有效的方法,但是有时候填补缺失值会比直接丢弃样本效果更好, ...

  4. 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者

    python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...

  5. ML—随机森林·1

    Introduction to Random forest(Simplified) With increase in computational power, we can now choose al ...

  6. Python中随机森林的实现与解释

    使用像Scikit-Learn这样的库,现在很容易在Python中实现数百种机器学习算法.这很容易,我们通常不需要任何关于模型如何工作的潜在知识来使用它.虽然不需要了解所有细节,但了解机器学习模型是如 ...

  7. 机器学习之Bagging与随机森林笔记

    集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能.这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器.虽然从理论上来 ...

  8. Bagging与随机森林(RF)算法原理总结

    Bagging与随机森林算法原理总结 在集成学习原理小结中,我们学习到了两个流派,一个是Boosting,它的特点是各个弱学习器之间存在依赖和关系,另一个是Bagging,它的特点是各个弱学习器之间没 ...

  9. 什么是机器学习的分类算法?【K-近邻算法(KNN)、交叉验证、朴素贝叶斯算法、决策树、随机森林】

    1.K-近邻算法(KNN) 1.1 定义 (KNN,K-NearestNeighbor) 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类 ...

随机推荐

  1. 6.使用Go向Consul注册的基本方法

    编写注册函数 package utils import ( consulapi "github.com/hashicorp/consul/api" "log" ...

  2. 记录Windows下文件操作记录

    https://blog.csdn.net/huashuolin001/article/details/73863324

  3. Windbg Call Stack(调用堆栈)窗口的使用

    调用堆栈是指向程序计数器当前位置的函数调用链.调用堆栈的顶部函数是当前函数,下一个函数是调用当前函数的函数,依此类推.显示的调用堆栈基于当前程序计数器,除非更改寄存器上下文. 在 WinDbg 中,可 ...

  4. Visual Studio调试XSLT

    Visual Studio是一个很大的工具.很容易遗漏一些有用的特性.希望XSLT调试器不会错过.在下面,您可以看到调试器正在运行,因为xslt转换正在应用于某些XML.(请原谅我在示例中使用的毫无意 ...

  5. contest1 CF1084 div2 oooxx oooxo ooooo

    题意: div2D (x)(x) 给出一棵树, 找出一条路径, 使得每一时刻点权和\(\ge\)边权和, 并且点权和\(-\)边权和最大 div2E (x)(o) 给出两个长度为\(n(\le 5e5 ...

  6. tomcat Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

      1.情景展示 tomcat 日志时不时会报出如下异常信息,到底是怎么回事? java.lang.IllegalArgumentException: Invalid character found ...

  7. mongodb连接认证失败

          版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_29143909/arti ...

  8. MOT19数据集百度云盘

    图片按视频分的压缩包 [已失效] 链接: https://pan.baidu.com/s/1kNw6yhvqgitNK5N__WOpxw 提取码: yia4 链接: https://pan.baidu ...

  9. Python【每日一问】29

    问: [基础题]:给一个不多于 5 位的正整数,要求:一.求它是几位数,二.逆序印出各位数字[提高题]:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加 ...

  10. protobuf, python Enum

    继承enum.Enum的python class,其实是一个, name-value的关系,可以直接className(value)得到一个类.比如 import enum class xx(enum ...