Titanic数据分析项目——Kaggle数据分析项目实战1

目前预测准确度达到77.511%, 会持续优化并且更新。
在这里插入图片描述

一、特征工程:

1、先对缺失值进行填充,先找到缺失值的位置,数值型数据填充众数,字符数据或者是离散型数据则填充出现最多的数据。
2、标准化数值型数据, 根据标准化数据公式:
x standardized = x − mean ( x ) std ( x ) x_{\text{standardized}} = \frac{x - \text{mean}(x)}{\text{std}(x)} xstandardized=std(x)xmean(x)
3、增加特征值:
(1) 票价等级:将票价大于均值的记为1,将票价小于等于均值的记为0,分别表示票价高者和票价低者。
(2) 是否存在亲属:将有亲属的标记位1,无亲属的标记为0。
(3) 同船亲属的数量,将同船的有关系的人数加起来,并且初始化这一列数据。
(4) 同船亲属的数量等级:求出同船亲属数量大于同船亲属数量的均值,记为1,小于等于同船亲属数量,记为0。
(5) 通过对字符型数据也就是"name"那一列的观察与处理,发现会有三种不同的称呼: “Mrs”, “Miss”, “Mr”,分别记为0, 1, -1。
(6) 年龄级别: 将大于平均年龄的记为1,小于等于平均年龄的记为0
(7) 还在思考,后续会进行补充…

特征工程代码实现:

from sklearn.preprocessing import StandardScaler
us_list = ['舱位等级', '性别', '年龄', '同船的兄弟姐妹/配偶数量', '同船的父母/孩子数量', '船票号码', '票价', '船舱号码', '登船港口'] #处理数据
def Work_Data(df):List1 = [] for i in df.index:# print(df.loc[i, '姓名'])ustr = str(df.loc[i, '姓名'])if ustr.find("Mrs") >= 0:List1.append(1) elif ustr.find("Miss"):List1.append(2) else:List1.append(0) df['称呼'] = List1for i in df.columns:us = df[i].mode()[0] df[i].fillna(us, inplace = True)    if isinstance(list(df[i])[0], (int, float)):continuedic = dict() idx = 0 for j in set(df[i]): dic[j] = idxidx += 1 for j in df.index:df.loc[j, i] = dic[df.loc[j, i]] List1 = [] for i in df.index:if df.loc[i,'同船的兄弟姐妹/配偶数量'] > 0 or df.loc[i,'同船的父母/孩子数量'] > 0:List1.append(1)else:List1.append(0) df['是否存在亲属'] = List1List1 = [] arg_pj = sum(list(df3['票价'])) / len(list(df3['票价'])) for i in df.index:if df.loc[i, '票价'] > arg_pj:List1.append(1)else:List1.append(0) df['票价等级'] = List1us = [] for i in df.index:us.append(df.loc[i, '同船的兄弟姐妹/配偶数量'] + df.loc[i, '同船的父母/孩子数量']) x = sum(us) / len(us)List1 = []         for i in us:if i > x:List1.append(1)else:List1.append(0) df['同船亲属的数量等级'] = List1List1 = [] for i in df.index:List1.append(df.loc[i, '同船的兄弟姐妹/配偶数量'] + df.loc[i, '同船的父母/孩子数量']) df['同船有关系的人的数量'] = List1 List1 = []x = sum(df['年龄']) / len(df['年龄']) for i in df.index:if df.loc[i, '年龄'] > x:List1.append(1) else:List1.append(0) df['年龄级别'] = List1 for i in ['年龄', '票价']:scaler = StandardScaler()x = [[x] for x in df[i]]# 首先拟合 StandardScaler 对象scaler.fit(x)# 使用 transform 方法对数据进行标准化x = scaler.transform(x)us = []for j in x:for k in j:us.append(k) df[i] = usreturn df 

二、从数据中处理出测试集和训练集带入模型中

1、先求出测试数据和训练数据:


df = Work_Data(df3) df3 = Work_Data(df3)
train_x, train_y = [], [] us_list.append("票价等级")
us_list.append("是否存在亲属") 
us_list.append("同船亲属的数量等级")
us_list.append("称呼") 
us_list.append("同船有关系的人的数量") 
us_list.append('年龄级别') for i in df.index:uslist = [] for j in us_list:uslist.append(df.loc[i,j]) train_x.append(uslist) train_y.append(df.loc[i,'是否生还'])# 构造测试集合:
test_x = [] 
df = Work_Data(df2) 
df2 = Work_Data(df2) for i in df.index:uslist = [] for j in us_list:uslist.append(df.loc[i,j]) test_x.append(uslist) 

2、模型带入

(1) 逻辑回归:

研究了一下逻辑回归处理离散型数据的方法,处理离散型数据的逻辑回归方法与处理连续型数据的逻辑回归方法类似

  1. 数据预处理

    • 确保数据中的离散型特征已经被编码为数值类型。可以使用独热编码、标签编码等方法将离散型特征转换为数值型特征。
  2. 模型训练

    • 使用逻辑回归模型训练数据。逻辑回归模型的目标是找到最佳的参数(系数),以最大化似然函数或最小化损失函数。通常使用梯度下降等优化算法来训练模型。
  3. 模型评估

    • 使用测试集评估模型的性能。可以使用各种评估指标,如准确率、精确率、召回率、F1 分数等来评估模型的性能。
  4. 调整模型

    • 根据评估结果,可能需要调整模型的超参数或特征工程方法,以提高模型的性能。
  5. 解释结果

    • 分析模型的系数,了解离散型特征对目标变量的影响。系数的正负和大小可以告诉我们特征对目标变量的影响程度。

    总之,对于二分类问题,无论是离散型数据还是连续型数据逻辑回归都是报错的选择, 因为它都有自己的处理方法。


# 训练逻辑回归模型
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score# 特征缩放
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(train_x)
X_test_scaled = scaler.transform(test_x)# 初始化逻辑回归模型
log_reg = LogisticRegression()# 拟合模型
log_reg.fit(X_train_scaled, train_y)# 预测测试集
y_pred = log_reg.predict(X_test_scaled)
(2) 随机森林:
#随机森林:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_scoreclf = RandomForestClassifier(n_estimators=1000, random_state=42)# 在训练集上拟合模型
clf.fit(train_x, train_y)# 在测试集上做出预测
y_pred = clf.predict(test_x)import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

随缘更新…

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

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

相关文章

Vue使用L2Dwidget

1、在根文件index.html中引入live2dw/lib/L2Dwidget.min.js 下载模型的文件,放在本地或者cdn 切换不同的模型 模型地址:https://github.com/xiazeyu/live2d-widget-models showLive2d(name: String) {var live2dWidget document.querySelector("…

专升本 C语言笔记-01 printf 占位符 转义符

目录 一.printf()函数简介 1.1作用 将格式化后的字符串输出(打印东西) 1.2函数原型 1.3返回值 二.常见占位符 2.1.占位符的使用 2.2.格式修饰符 2.3.输出格式说明 三.转义字符 一.printf()函数简介 1.1作用 将格式化后的字符串输出(打印东西) printf…

Python数值方法在工程和科学问题解决中的应用

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 随着计算机技术的不断发展,Python作…

【Python】新手入门学习:详细介绍开放封闭原则(OCP)及其作用、代码示例

【Python】新手入门学习:详细介绍开放封闭原则(OCP)及其作用、代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyT…

MQTT Topic通配符

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

如何不依赖Unity直接解压unitypackage的内容

使用场景 我们都知道unity的资源导出是导出成.unitypackage文件,如果要里面的内容,得打开Unity,将unitypackage导入进去才能看到里面的内容。 但是很多时候我们下了几十个unitypackage资源包,又不清楚好不好用,而且导入之后编译特别慢,unity又不提供批量解压的功能,所…

雷达图相关

1.中间显示数字 title: {text: 88,x: center,y: center,textStyle: {color: #333,fontWeight: bolder,fontSize: 64,} } 2.提示信息 tooltip: {trigger: item, // 当鼠标悬浮在某个数据项上时触发}, 3.修改中间颜色 默认: splitArea: {areaStyle: {color: [rgba(…

网康科技 NS-ASG 应用安全网关 SQL注入漏洞复现(CVE-2024-2330)

0x01 产品简介 网康科技的NS-ASG应用安全网关是一款软硬件一体化的产品,集成了SSL和IPSec,旨在保障业务访问的安全性,适配所有移动终端,提供多种链路均衡和选择技术,支持多种认证方式灵活组合,以及内置短信认证、LDAP令牌、USB KEY等多达13种认证方式。 0x02 漏洞概述 …

OPENCV(0-1之0.1)

OPENCV-0.1 学习安排计算机视觉简介是什么?应用领域基础概念 OpenCV简介历史背景和主要贡献者支持的语言和平台主要模块和功能 安装(windows_python)pip安装验证安装(记得安装jupyter) 第一个OpenCV程序实践练习 官方文档 学习安排 计算机视…

数据同步方案

目录 1 需求概述 1)时间戳 2)触发器 3)差异更新 4)日志解析 2 产品实施 1)数据同步 2)同步日志 3)流量统计 4)数据比对 1 需求概述 数据同步用于将不同数据库系统产生的数…

2024腾讯云轻量应用服务器地域有什么区别?哪个好?

腾讯云轻量应用服务器地域如何选择?地域就近选择,北方选北京地域、南方选广州地域,华东地区选上海地域。广州上海北京地域有什么区别?哪个好?区别就是城市地理位置不同,其他的差不多,不区分好坏…

亲测有效,职场焦虑迷茫的测试人都需要的3大良方!

Hi,大家好,我是小马哥。日常大家聊天时经常提及一个关键词——大环境不好,这种感受像一股暗流,由此带来了很多变化。 有人在这股潮流中感到迷失,选择了躺平;而有的人则积极寻找应对方法,努力在…

Linux常用指令大全

一、基本命令 1、立即关机并重启动,执行如下命令: shutdown -r now 或者reboot 2、立即关机,执行如下命令: shutdown -h now 或者poweroff 3、等待2分钟关机并重启动,执行如下命令: shutdown -r…

深入理解Apache Commons Pool2池化技术

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在现代软件开发中,为了提高性能和资源利用率,开发者们经常使用池化技术来管理那些创建和销毁代价较高的对…

LeetCode108题:将有序数组转换为二叉搜索树(python3)

一个容易想到的思路:使用 nums 中最靠近中心的位置作为整棵 BST 的根节点,确保左右子树节点数量平衡。随后递归构造 nums 中下标范围为 [0,mid−1]作为左子树,递归构造 nums 中下标范围为 [mid1,n−1]作为右子树。 # Definition for a binar…

I2C学习总结

i2c概述 I2C(Inter-Intergreted Circuit) 是一种串行通信协议,用于集成电路之间完成数据传输,i2c用广泛用以各种领域,包括电子设备、嵌入式系统、工业自动化等; i2c仅仅只是一个数据传输的协议&#xff0c…

逻辑斯特 + 神经网络梯度下降公式推导 + 向量化

全部推导来自吴恩达老师的视频课,下面仅作整理 逻辑斯特 神经网络

Vue+OpenLayers7入门到实战:使用webgl图层叠加超大量Point点要素,解决叠加超过一百万数据量点位导致浏览器卡住变慢的问题

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章介绍如何使用OpenLayers7在解决地图上叠加超过几千以上要素点就开始变慢,一万以上的要素点的时候,浏览器页面就开始卡顿或直接卡死,甚至浏览器会弹出是否等待页面加载的提示。 这时候要怎么优化?OpenLayers官…

win10安装Ubuntu22.04LTS及深度学习相关配置详细教学

由于之前Ubuntu系统硬盘空间分配的不够,又去看了一下发现扩容很很麻烦。加以发现自己前面安装的深度学习环境版本与实际要用的不符,所以当机立断决定直接重装系统。 Ubuntu系统安装 参考视频:一看就会!8分钟真机安装【Ubuntu/Wi…

JWT原理

JWT 介绍 JWT(JSON Web Token)是一个开放标准(RFC 7519),它定义了一种简洁的、自包含的方法用于通信双方之间以 JSON 对象的形式安全地传输信息。这种信息可以被验证和信任,因为它是数字签名的。JWT通常用于…