中国建设银行培训网站网站素材图
news/
2025/9/24 7:35:06/
文章来源:
中国建设银行培训网站,网站素材图,可以做砍价活动的网站,网站制作百度前置概念
偏差
指模型的预测值与真实值之间的差异#xff0c;它反映了模型的拟合能力。
方差
指模型在不同的训练集上产生的预测结果的差异#xff0c;它反映了模型的稳定性。 方差和偏差对预测结果所造成的影响 在机器学习中#xff0c;我们通常希望模型的偏差和方差都…前置概念
偏差
指模型的预测值与真实值之间的差异它反映了模型的拟合能力。
方差
指模型在不同的训练集上产生的预测结果的差异它反映了模型的稳定性。 方差和偏差对预测结果所造成的影响 在机器学习中我们通常希望模型的偏差和方差都能够尽可能地小从而达到更好的泛化能力。但是偏差和方差的平衡是一个非常复杂的问题很难通过简单的调参来解决。因此在实际应用中我们需要综合考虑模型的鲁棒性、准确性和泛化能力等多个指标来评估模型的性能和可靠性。 鲁棒性
指模型对于输入数据中的噪声、异常值、缺失值等干扰因素的抵抗能力。在机器学习中我们通常希望模型能够对于不同的输入数据都能够产生稳定和一致的输出结果我们可以通过数据清洗、特征选择、模型调参等方法来提高模型的鲁棒性从而提高模型的性能和准确性。 鲁棒性 集成学习
核心思想是训练出多个模型并将这些模型进行组合。根据分类器的训练方式和组合预测的方法。目标就是减少机器学习模型的方差和偏差找到机器学习模型在欠拟合和过拟合之间的最佳平衡点。集成学习中两种最重要的方法就是降低偏差的 Boosting 和降低方差的Bagging。 Boosting 方法
有三种很受欢迎的算法分别是 AdaBoost、GBDT 和 XGBoost
AdaBoost
它通过持续优化一个基模型将新模型整合到原有模型中并对样本进行加权以减小模型预测误差。
GBDT梯度提升决策树
将梯度下降和 Boosting 方法结合的算法。它采用决策树模型并定义一个损失函数通过梯度下降来优化模型。
XGBoost极端梯度提升
对 GBDT 进一步优化的算法。它也采用决策树模型并定义一个损失函数。与 GBDT 不同的是XGBoost 利用泰勒展开式将损失函数展开到二阶并利用二阶导数信息加快训练集的收敛速度 Bagging方法
是一种降低模型方差的集成学习方法它通过随机抽取数据的方式构建多个基模型并将它们的结果进行集成从而得到一个泛化能力更强的模型。Bagging方法有三种常见的算法 决策树的Bagging
这种方法是基于决策树的Bagging也称为树的聚合Bagging of Tree。它的基本思想是通过随机抽取数据和特征构建多棵决策树并将它们的结果进行集成。决策树具有显著的低偏差、高方差的特点因此通过Bagging方法可以降低模型方差提高模型的泛化能力。 随机森林算法
随机森林算法是一种基于决策树的Bagging方法它在决策树的基础上引入了随机特征选择。具体来说随机森林算法在每个节点上随机选择一部分特征进行划分从而降低模型方差提高模型的泛化能力。 极端随机森林算法
极端随机森林算法是一种基于决策树的Bagging方法它在随机森林算法的基础上进一步引入了随机特征和随机阈值选择。具体来说极端随机森林算法在每个节点上随机选择一部分特征和一个随机阈值进行划分从而进一步降低模型方差提高模型的泛化能力。 具体应用
“易速鲜花”运营部门提出了两个裂变思路。
方案一是选择一批热销商品让老用户邀请朋友扫码下载 App 并成功注册朋友越多折扣越大。我们把这个方案命名为“疯狂打折”它走的是友情牌。
方案二是找到一个朋友一起购买第二件商品就可以免费赠送这叫“买一送一”。 具体来说方案一是让老用户邀请朋友扫码下载 App 并成功注册朋友越多折扣越大。 输入的数据集 我们今天的目标就是根据这个数据集来判断一个特定用户在特定的裂变促销之下是否会转化。
预测代码如下
import pandas as pd #导入Pandas
from sklearn.metrics import f1_score
from sklearn.tree import DecisionTreeClassifierdf_fission pd.read_csv(易速鲜花裂变转化.csv) #载入数据
df_fission.head() #显示数据import matplotlib.pyplot as plt #导入pyplot模块
import seaborn as sns #导入Seaborn
fig sns.countplot(是否转化, datadf_fission) #创建柱状计数图
fig.set_ylabel(数目) #Y轴标题
plt.show() #显示图像# 把二元类别文本数字化
df_fission[性别].replace(女,0,inplace True)
df_fission[性别].replace(男,1,inplaceTrue)
# 显示数字类别
print(Gender unique values,df_fission[性别].unique())
# 把多元类别转换成多个二元哑变量然后贴回原始数据集
df_fission pd.get_dummies(df_fission, drop_first True)
df_fission # 显示数据集X df_fission.drop([用户码,是否转化], axis 1) # 构建特征集
y df_fission.是否转化.values # 构建标签集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test train_test_split(X,y,test_size 0.2)
from sklearn.preprocessing import MinMaxScaler #导入归一化缩放器
scaler MinMaxScaler() #创建归一化缩放器
X_train scaler.fit_transform(X_train) #拟合并转换训练集数据
X_test scaler.transform(X_test) #转换测试集数据# 一、测试准确率是指在测试集上分类器正确分类的样本数占总样本数的比例。它是分类器性能的一个重要指标但是它不能很好地反映分类器在不同类别上的表现。
#
#二、 F1分数是精确率和召回率的调和平均数它综合了分类器的精确率和召回率是一个更全面的分类器性能指标。
# 精确率是指分类器正确预测为正例的样本数占预测为正例的样本数的比例召回率是指分类器正确预测为正例的样本数占实际为正例的样本数的比例。F
# 1分数越高表示分类器的性能越好。#1.1 AdaBoost算法
from sklearn.ensemble import AdaBoostClassifier # 导入AdaBoost 模型
dt DecisionTreeClassifier() # 选择决策树分类器作为AdaBoost 的基准算法
ada AdaBoostClassifier(dt) # AdaBoost 模型
ada.fit(X_train, y_train) # 拟合模型
y_pred ada.predict(X_test) # 进行预测
print(AdaBoost 测试准确率: {:.2f}%.format(ada.score(X_test, y_test)*100))
print(AdaBoost 测试F1分数: {:.2f}%.format(f1_score(y_test, y_pred)*100))# 1.2 GBDT算法
from sklearn.ensemble import GradientBoostingClassifier # 导入梯度提升模型
gb GradientBoostingClassifier() # 梯度提升模型
gb.fit(X_train, y_train) # 拟合模型
y_pred gb.predict(X_test) # 进行预测
print( 梯度提升测试准确率: {:.2f}%.format(gb.score(X_test, y_test)*100))
print( 梯度提升测试F1分数: {:.2f}%.format(f1_score(y_test, y_pred)*100))#1.3 XGBoost算法
from xgboost import XGBClassifier # 导入XGB 模型
xgb XGBClassifier() # XGB 模型
xgb.fit(X_train, y_train) # 拟合模型
y_pred xgb.predict(X_test) # 进行预测
print(XGB 测试准确率: {:.2f}%.format(xgb.score(X_test, y_test)*100))
print(XGB 测试F1分数: {:.2f}%.format(f1_score(y_test, y_pred)*100))#2.1 决策树的Bagging
from sklearn.ensemble import BaggingClassifier # 导入Bagging 分类器
from sklearn.tree import DecisionTreeClassifier # 导入决策树分类器
from sklearn.metrics import (f1_score, confusion_matrix) # 导入评估指标
dt BaggingClassifier(DecisionTreeClassifier()) # 只使用一棵决策树
dt.fit(X_train, y_train) # 拟合模型
y_pred dt.predict(X_test) # 进行预测
print( 决策树测试准确率: {:.2f}%.format(dt.score(X_test, y_test)*100))
print( 决策树测试F1 分数: {:.2f}%.format(f1_score(y_test, y_pred)*100))
bdt BaggingClassifier(DecisionTreeClassifier()) # 树的Bagging
bdt.fit(X_train, y_train) # 拟合模型
y_pred bdt.predict(X_test) # 进行预测
print( 决策树Bagging 测试准确率: {:.2f}%.format(bdt.score(X_test, y_test)*100))
print( 决策树Bagging 测试F1分数: {:.2f}%.format(f1_score(y_test, y_pred)*100))#2.2 随机森林算法
from sklearn.ensemble import RandomForestClassifier # 导入随机森林模型
rf RandomForestClassifier() # 随机森林模型
rf.fit(X_train, y_train) # 拟合模型
y_pred rf.predict(X_test) # 进行预测
print( 随机森林测试准确率: {:.2f}%.format(rf.score(X_test, y_test)*100))
print( 随机森林测试F1分数: {:.2f}%.format(f1_score(y_test, y_pred)*100))#2.3 极端随机森林算法
from sklearn.ensemble import ExtraTreesClassifier # 导入极端随机森林模型
ext ExtraTreesClassifier() # 极端随机森林模型
ext.fit(X_train, y_train) # 拟合模型
y_pred ext.predict(X_test) # 进行预测
print( 极端随机森林测试准确率: {:.2f}%.format(ext.score(X_test, y_test)*100))
print( 极端随机森林测试F1分数: {:.2f}%.format(f1_score(y_test, y_pred)*100)) 图中可以看出对于这个问题XGBoost、随机森林和极端随机森林都是比较好的选择。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915216.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!