使用集成学习对不同的机器学习方法进行集成

news2024/9/20 4:58:56

数据入口:数据人才的现场调研 - Heywhale.com

本数据集中有 43 行,19 列,数据集包含如下字段:

首先读取数据:

import pandas as pd

# 读取Excel文件
data = pd.read_excel('数据人才的现场调研.xls')

可以输出每一列含有的不同的值:

# 打印每一列的唯一值
for column in data.columns:
    print(f"Unique values in {column}:")
    print(data[column].unique())

一:特征选择

# 找出含有不同数值小于 5 的列
columns_to_encode = [col for col in data.columns if len(data[col].unique()) < 5 and col!= '11、您对于目前数据团队的工作是否满意']

# 对选定的列进行独热编码
encoded_data = pd.get_dummies(data[columns_to_encode])


encoded_data = encoded_data.astype(int)
# 对“11、您对于目前数据团队的工作是否满意”列进行处理
data['11、您对于目前数据团队的工作是否满意'] = data['11、您对于目前数据团队的工作是否满意'].map({'满意': 1, '一般': 0,'不满意':'0','尚未建立数据团队': 0})


# 合并独热编码后的数据和处理后的“11、您对于目前数据团队的工作是否满意”列
result = pd.concat([encoded_data, data['11、您对于目前数据团队的工作是否满意']], axis=1)
result = result.astype(int)
result

独热编码后的数据的一部分如下:

这段代码将数据框中的某些分类变量转换为数值形式,使其适合用于机器学习模型。独热编码用于类别较少的变量,而特定列则使用自定义映射进行转换。最终,这些处理过的数据被合并并转换为统一的整数类型。

二:决策树

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score


# 分离特征和目标变量
X = result.drop('11、您对于目前数据团队的工作是否满意', axis=1)  # 假设 '11、您对于目前数据团队的工作是否满意' 是目标变量
y = result['11、您对于目前数据团队的工作是否满意']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建决策树模型
model = DecisionTreeClassifier()

# 训练模型
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

得出决策树预测准确率约为0.67。

三:xgboost 

import xgboost as xgb
from sklearn.model_selection import train_test_split

# 分离特征和目标变量
X = result.drop('11、您对于目前数据团队的工作是否满意', axis=1)
y = result['11、您对于目前数据团队的工作是否满意']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建 XGBoost 分类器
model = xgb.XGBClassifier()

# 训练模型
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# 可以进行后续的评估和分析

得出xgboost预测准确率约为0.78.

四:集成学习

可以使用集成学习的方法将决策树和 XGBoost 两个模型进行集成,例如使用投票集成(Voting Ensemble)或堆叠集成(Stacking Ensemble)。

以下是一个使用投票集成的示例代码:

from sklearn.ensemble import VotingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 创建投票集成模型
ensemble_model = VotingClassifier(estimators=[('decision_tree', decision_tree), ('xgb', xgb_model)], voting='hard')

# 训练集成模型
ensemble_model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = ensemble_model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

在上述代码中,我们创建了决策树和 XGBoost 两个模型,并将它们作为基模型放入投票集成模型中。投票集成模型通过硬投票的方式结合两个模型的预测准确率约为0.89,模型的预测效果比当模型较好。

补充:特征工程

除了独热编码外,在特征工程中,可以进行以下一些常见的处理:

  1. 数据清洗:处理缺失值、异常值、重复值等。
  2. 特征选择:选择与目标变量相关的重要特征,减少无关特征的影响。
  3. 特征提取:从原始数据中提取新的特征,例如通过文本数据提取词袋特征、使用主成分分析(PCA)进行特征降维等。
  4. 特征缩放:对特征进行标准化或归一化处理,使不同特征具有可比性。
  5. 编码处理:对类别型特征进行编码,如独热编码、标签编码等。
  6. 时间序列特征处理:如果数据是时间序列数据,可以提取时间相关的特征,如趋势、季节性等。
  7. 特征构建:根据领域知识和数据特点,构建新的特征,例如计算比率、差值、聚合统计等。
  8. 数据增强:通过数据扩充技术,增加数据的多样性,例如随机旋转、裁剪、翻转图像数据等。
  9. 特征转换:对特征进行数学变换,如对数变换、指数变换等,以改善数据的分布或满足模型的要求。

这些处理步骤可以帮助提高模型的性能和准确性,具体的处理方法应根据数据的特点和问题的需求来选择。

附录:每日股票行情数据
 

想要探索多元化的数据分析视角,可以关注之前发布的相关内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

供方软件供应链安全保障要求及开源场景对照自评表(下)

国标《信息安全技术 软件供应链安全要求》确立了软件供应链安全目标&#xff0c;规定了软件供应链安全风险管理要求和供需双方的组织管理和供应活动管理安全要求。 开源软件供应链作为软件供应链的一种特殊形式&#xff0c;该国标亦适用于指导开源软件供应链中的供需双方开展组…

C HTML格式解析与生成之gumbo

测试 #include <fstream> #include <iostream> #include <stdlib.h> #include <string>#include "../src/gumbo.h"// 提取纯文本内容 static std::string cleantext(GumboNode* node) {if (node->type GUMBO_NODE_TEXT) {return std::st…

【TabBar嵌套Navigation案例-关于页面 Objective-C语言】

一、关于页面 1.首先,看一下我们的示例程序 点击关于以后,它实际上,跳到的也是SettingController,然后呢,传一个plist,但是,这个Controller里边,又多了一个header,所以,这个里边,我们也是用继承的方式去写,因为其他的页面没有这个header,不是所有的Setting都有he…

数据结构--结构体数组和结构体指针

1.定义结构体数组存储5个学生的信息&#xff1a;姓名&#xff0c;年龄&#xff0c;性别 定义函数实现输入&#xff0c;要求形参使用结构体指针接收 函数实现5个学生年龄排序(注意对年龄排序时&#xff0c;交换的是所有信息) 定义函数实现输出&#xff0c;要求形参使用结构体…

Innovus跑到中途想要更换library怎么办?

有的小伙伴在跑innovus时&#xff0c;可能会碰到library更新等问题。但此时&#xff0c;place已经跑完了&#xff0c;又不想重新跑&#xff0c;怎么办呢&#xff1f; 其实&#xff0c;每次保存的innovus database里面都有专门存放这些数据的文件。我们可以将其中一些setting文件…

VBA技术资料MF197:禁用复制的快捷键

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

Linux内核结构

Linux内核结构 文章目录 Linux内核结构一、Linux内核结构介绍1.1 总体结构&#xff1a;1.2 Linux内核结构框图&#xff1a; 二、图解Linux系统架构三、shell3.1 shell的含义&#xff1a;3.2 shell的作用&#xff1a;3.3 shell的类型&#xff1a;3.4 shell的使用&#xff1a;3.5…

Allow anonymous access to my Azure OpenAI chat bot

题意&#xff1a;允许匿名访问我的 Azure OpenAI 聊天机器人 问题背景&#xff1a; I have an Azure OpenAI chat bot using my own data (I configured an OpenAI resource and chose Deploy as Web App) . Members of my domain can access it by logging in. Now I want it…

2.5 数据库索引机制

我们往数据表里面保存数据记录越来越多&#xff0c;一旦达到上千万条&#xff0c;那怎么提高检索速度就需要认真考虑了。我们打开手机上的APP都希望能快些加载出内容&#xff0c;这里的因素有很多&#xff0c;但是如何减少数据查找的时间是其中的重要一环。索引机制就是提升数据…

【内网渗透】最保姆级的春秋云镜Privilege打靶笔记

目录 flag1 flag2 flag3 flag4 flag1 fscan扫外网 访问./www.zip拿到源码 tools/content-log.php存在任意文件读取 根据提示读到Jenkins初始管理员密码 ./tools/content-log.php?logfile../../../../../../../../../ProgramData/Jenkins/.jenkins/secrets/initialAdminP…

第十一章 【后端】商品分类管理微服务(11.5)——增强响应

11.5 增强响应 在前后端分离的开发模式下,我们一般会统一后端的响应格式,比如自定义 Response 结构,但每个开发者可能会封装各自的 Response 结构,造成不一致,因此我们需要将响应格式统一起来,定义一个统一的标准响应格式。 11.5.1 创建响应模块 新建 yumi-etms-respon…

AJAX Jquery $.get $.post $.getJSON

AJAX AJAX Asynchronous JavaScript and XML (异步的J avascript和XML)。 Ajax $.ajax <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

【Linux进程控制】进程程序替换

目录 进程程序替换 替换函数 看现象 替换原理 多进程替换 exec*函数使用&#xff08;部分&#xff09;&#xff0c;并且认识函数参数的含义 1.execl 2.execv 3.execvp 4.execvpe execlp 和execlpe 替换函数总结 进程程序替换 替换函数 有六种以exec开头的函数&am…

AI大语言模型的全面解读

大语言模型&#xff08;Large Language Models, LLMs&#xff09;无疑是近年来最耀眼的星辰之一。他们以惊人的语言生成能力、上下文理解能力以及对复杂任务的泛化能力&#xff0c;正在深刻改变着自然语言处理&#xff08;NLP&#xff09;乃至整个AI领域的格局。 本文将从专业角…

螺栓与散装物体检测系统源码分享

螺栓与散装物体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

代理模式-动态代理

一、代理模式 代理模式:给某一个对象提供一个代理&#xff0c;并由代理对象来控制对真实对象的访问。代理模式是一种结构型设计模式。 代理模式角色分为 3种: Subject(抽象主题角色):定义代理类和真实主题的公共对外方法&#xff0c;通常被设计成接口; RealSubject(真实主题角色…

Flutter 安装,配置,运行第一个app 1

起因&#xff0c; 目的: flutter, 其实几年前&#xff0c;我就写过。 当时纯属是个人兴趣&#xff0c;随意探索。 当时我也写了几篇笔记: 比如这一篇还有这个 flutter&#xff0c;其实不难&#xff0c;比较繁琐&#xff0c;小的知识点很多. flutter&#xff0c; 又是环境配…

如何使用 C# 解决 Cloudflare Turnstile CAPTCHA 挑战

处理 CAPTCHA 挑战的复杂性可能是一项艰巨的任务&#xff0c;尤其是在涉及 Cloudflare 的 Turnstile 时。作为一名经验丰富的开发人员&#xff0c;我多年来遇到了许多 CAPTCHA 系统&#xff0c;但 Cloudflare Turnstile 由于其旨在阻止自动化系统的复杂算法&#xff0c;提出了独…

Mac 搭建仓颉语言开发环境(Cangjie SDK)

文章目录 仓颉编程语言通用版本SDK Beta试用报名仓颉语言文档注册 GitCode登录 GitCode 下载 Cangjie SDK配置环境变量VSCode 插件VSCode 创建项目 仓颉编程语言通用版本SDK Beta试用报名 https://wj.qq.com/s2/14870499/c76f/ 仓颉语言文档 https://developer.huawei.com/c…

ad18学习笔记十七:如何正确打开别人给的工程文件

不要单独打开一个pcb文件&#xff0c;如果没有在一个工程中关联上的话&#xff0c;可能会出现无法复制粘贴焊盘的情况。一般别人给文件会给整个工程&#xff0c;要打开的话直接打开整个工程&#xff0c;那么工程里相互关联的几个文件就都可以操作了。 AD中&#xff0c;怎样把从…