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

news/2024/11/15 6:04:39/

数据入口:数据人才的现场调研 - 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.ppmy.cn/news/1528060.html

相关文章

国科云域名解析课堂:一个域名可以解析到多个IP地址吗?

在互联网世界中&#xff0c;域名和IP地址是连接用户与网络资源的重要桥梁。每一个简单易记的域名背后都对应着复杂的IP地址&#xff0c;二者通过DNS解析实现对应关系&#xff0c;从而让人们可以通过域名而非IP地址来访问网络资源。那么&#xff0c;域名和IP地址是一一对应的关系…

qt-creator-10.0.2之后版本的jom.exe构建和编译速度慢下来了

1、Qt的IDE一直在升级&#xff0c;qt-creator的新版本下载地址 https://download.qt.io/official_releases/qtcreator/ 2、本人一直用的是qt-creator-10.0.2版本&#xff0c;官网历史仓库可以下载安装包qt-creator-opensource-windows-x86_64-10.0.2.exe https://download.qt…

leetcode 2576.求出最多标记下标

2576.求出最多标记下标 题意&#xff1a; 解析&#xff1a; 数组长为 n n n&#xff0c;因为一次标记两个&#xff0c;所以数组中最多有 ⌊ n 2 ⌋ \lfloor \frac{n}{2}\rfloor ⌊2n​⌋ 对标记。 贪心的考虑&#xff0c;一个数 x 一定优先与满足 y ≥ 2 x y \ge 2x y≥2…

前端面试题——token安全问题处理与大数据列表展示

1.长时间保存token问题 长时间保存Token涉及多个方面的问题&#xff0c;包括安全性、性能、以及Token的管理策略等。以下是对长时间保存Token问题的详细分析&#xff1a; 一、安全性问题 Token泄露风险&#xff1a; Token是用户身份验证的凭证&#xff0c;如果长时间保存且未…

C#中判断socket是否已断开的方法

代码如下&#xff1a; Socket s new Socket(..); if (s.Poll(-1, SelectMode.SelectRead)) {int nRead s.Receive();if (nRead 0){//socket连接已断开} }参考&#xff1a;C#中判断socket是否已断开的方法

ChatGPT的底层逻辑

“一些未知的东西正在做我们不知道的事情。” —— 阿瑟爱丁顿 “为何不尝试制作一个模拟儿童思维的程序呢&#xff1f;” —— 艾伦图灵 “只要是人脑能提出的问题&#xff0c;它就能够得到解决。” —— 库尔特哥德尔 开始 传说中的扫地僧&#xff0c;在现实中极其罕见。 有…

apt-get install 安装的tomcat配置

使用 apt-get 安装的 Tomcat 通常是由操作系统的包管理系统管理的&#xff0c;因此安装后配置会有一些不同于手动安装的特点。以下是配置 Tomcat 的步骤&#xff1a; 1. 安装 Tomcat 通过 apt-get 安装 Tomcat&#xff08;以 Tomcat 9 为例&#xff09;&#xff1a; sudo ap…

html知识点框架

一、HTML基础 HTML简介 HTML是一种超文本标记语言&#xff0c;用于创建网页和网页应用。HTML5是公认的下一代Web语言&#xff0c;极大地提升了Web在富媒体、富内容和富应用等方面的能力。HTML基本结构 基本的HTML文档结构包括<!DOCTYPE html>, <html>, <head&g…