圆月山庄资源网 Design By www.vgjia.com
随机森林是由许多决策树构成,是一种有监督机器学习方法,可以用于分类和回归,通过合并汇总来自个体决策树的结果来进行预测,采用多数选票作为分类结果,采用预测结果平均值作为回归结果。
“森林”的概念很好理解,“随机”是针对森林中的每一颗决策树,有两种含义:第一种随机是数据采样随机,构建决策树的训练数据集通过有放回的随机采样,并且只会选择一定百分比的样本,这样可以在数据集合存在噪声点、异常点的情况下,有些决策树的构造过程中不会选择到这些噪声点、异常点从而达到一定的泛化作用在一定程度上抑制过拟合;第二种随机是特征随机,训练集会包含一系列特征,随机选择一部分特征进行决策树的构建。通过这些差异点来训练的每一颗决策树都会学习输入与输出的关系,随机森林的强大之处也就在于此。
废话不多说,直接上代码:
from pyspark import SparkConf from pyspark.sql import SparkSession from pyspark.ml.linalg import Vectors from pyspark.ml.feature import StringIndexer from pyspark.ml.classification import RandomForestClassifier from pyspark.sql import Row import pandas as pd from sklearn import metrics if __name__ == "__main__": appname = "RandomForestClassifier" master ="local[4]" conf = SparkConf().setAppName(appname).setMaster(master) #spark配置 spark=SparkSession.builder.config(conf=conf).getOrCreate()#spark实例化 #读取数据 data=spark.read.csv('良恶性乳腺癌数据.csv',header=True) #构造训练数据集 dataSet = data.na.fill('0').rdd.map(list)#用0填充空值 trainData, testData= dataSet.randomSplit([0.7, 0.3], seed=7) trainingSet = trainData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF() train_num = trainingSet.count() print("训练样本数:{}".format(train_num)) #使用随机森林进行训练 stringIndexer = StringIndexer(inputCol="label", outputCol="indexed") si_model = stringIndexer.fit(trainingSet) train_tf = si_model.transform(trainingSet) train_tf.show(5) rf = RandomForestClassifier(numTrees=100, labelCol="indexed", seed=7) rfModel = rf.fit(train_tf) #输出模型特征重要性、子树权重 print("模型特征重要性:{}".format(rfModel.featureImportances)) print("模型特征数:{}".format(rfModel.numFeatures)) #预测测试集 testSet = testData.map(lambda x:Row(label=x[-1], features=Vectors.dense(x[:-1]))).toDF() test_num=testSet.count() print("测试样本数:{}".format(test_num)) si_model = stringIndexer.fit(testSet) test_tf = si_model.transform(testSet) predictResult = rfModel.transform(test_tf) predictResult.show(5) spark.stop() #将预测结果转为python中的dataframe columns=predictResult.columns#提取强表字段 predictResult=predictResult.take(test_num)# predictResult=pd.DataFrame(predictResult,columns=columns)#转为python中的dataframe #性能评估 y=list(predictResult['indexed']) y_pred=list(predictResult['prediction']) y_predprob=[x[1] for x in list(predictResult['probability'])] precision_score=metrics.precision_score(y, y_pred)#精确率 recall_score=metrics.recall_score(y, y_pred)#召回率 accuracy_score=metrics.accuracy_score(y, y_pred)#准确率 f1_score=metrics.f1_score(y, y_pred)#F1分数 auc_score=metrics.roc_auc_score(y, y_predprob)#auc分数 print("精确率:",precision_score )#精确率 print("召回率:",recall_score )#召回率 print("准确率:",accuracy_score )#准确率 print("F1分数:", f1_score)#F1分数 print("auc分数:",auc_score )#auc分数
运行结果:
标签:
pyspark,随机森林
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- 群星.2003-存为爱2CD【环球】【WAV+CUE】
- 韩磊《试音天碟》高清音频[WAV+CUE]
- 邓涛《寂寞蒲公英(黑胶CD)》[WAV]
- 江志丰.2011-爱你的理由【豪记】【WAV+CUE
- 群星《传承-太平洋影音45周年纪念版 (CD2)》[320K/MP3][140.01MB]
- 群星《传承-太平洋影音45周年纪念版 (CD2)》[FLAC/分轨][293.29MB]
- 首首经典《滚石红人堂I 一人一首成名曲 4CD》[WAV+CUE][2.5G]
- s14上单t0梯度怎么排名 s14世界赛上单t0梯度排行榜
- tes目前进了几次s赛 LPL队伍tes参加全球总决赛次数总览
- 英雄联盟巅峰礼赠什么时候开始 2024巅峰礼赠活动时间介绍
- 冯骥发文谈睡觉重要性 网友打趣:求求你先做DLC
- 博主惊叹《少女前线2》万圣节大雷皮肤:这真能过审吗?
- 《生化危机8》夫人比基尼Mod再引骂战:夸张身材有错吗?
- 江蕙.1994-悲情歌声【点将】【WAV+CUE】
- 戴娆.2006-绽放【易柏文化】【WAV+CUE】