一起学数据分析_3(模型建立与评估_1)

news2024/11/25 4:26:38

使用前面清洗好的数据来建立模型。使用自变量数据来预测是否存活(因变量)?

(根据问题特征,选择合适的算法)算法选择路径:

1.切割训练集与测试集

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from IPython.display import Image

# 读取原数据数集
train = pd.read_csv('train.csv')
train.shape

#读取清洗过的数据集
# 删除了姓名列(对因变量无关),文本数据改为数值型数据
data = pd.read_csv('clear_data.csv')

 在作图时会使用中文标签,若要中文标签正常显示需要在前面加上下面的代码(应该放到我上一篇文章可视化部分):

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
plt.rcParams['figure.figsize'] = (10, 6)  # 设置输出图片大小

 在机器学习中有了数据集,需要按照一定比例把数据分为训练集与数据集(看我之前发的机器学习相关笔记),这里可以使用train_test_split() 函数:

在jupyter notebook中查看函数文档,了解用法和相关参数:

# 使用?来查看文档
train_test_split?
from sklearn.model_selection import train_test_split

# 定义自变量和因变量
# 一般先取出X和y后再切割,有些情况会使用到未切割的,这时候X和y就可以用,x是清洗好的数据,y是我们要预测的存活数据'Survived'
X = data
y = train['Survived']

# 对数据集进行切割
# 随机种子:random_state=
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)

# 查看数据形状
X_train.shape, X_test.shape

X_test.head()
  • 将数据集分为自变量和因变量
  • 按比例切割训练集和测试集(一般测试集的比例有30%、25%、20%、15%和10%)
  • 使用分层抽样
  • 设置随机种子以便结果能复现

2.模型创建

  • 创建基于线性模型的分类模型(逻辑回归)
  • 创建基于树的分类模型(决策树、随机森林)
  • 分别使用这些模型进行训练,分别的到训练集和测试集的得分
  • 查看模型的参数,并更改参数值,观察模型变化
  • 逻辑回归不是回归模型而是分类模型,不要与LinearRegression混淆
  • 随机森林其实是决策树集成为了降低决策树过拟合的情况
  • 线性模型所在的模块为sklearn.linear_model
  • 树模型所在的模块为sklearn.ensemble

(模型的原理可查看我之前的笔记)

 1逻辑回归模型:

导入包—使用模型—查看准确度—调整参数

from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier

# 默认参数逻辑回归模型
lr = LogisticRegression()
# fit使用给定的训练数据去拟合模型
# sample_weight=None样本权重参数,用于在训练时调整损失函数(仅用于训练)
# 某一种类的数据数量特别多,其他种类的数量特别少,样本不平衡,导致样本不是总体样本的无偏估计,从而可能导致我们的模型预测能力下降
# 查看数据是否失衡(结果:没有)
train['Survived'].value_counts()
lr.fit(X_train, y_train)

# lr = LogisticRegression().fit(X_train,y_train)

# 查看数据是否失衡
train['Survived'].value_counts()

# 查看训练集和测试集score值
# 返回平均准确度(把已知标签与预测标签对比)
# :.2f(表示浮点数小数点后两位)
print("Training set score: {:.2f}".format(lr.score(X_train, y_train)))
print("Testing set score: {:.2f}".format(lr.score(X_test, y_test)))
# format另一种使用法
print(f"Testing set score: {lr.score(X_test, y_test):.2f}")

# 调整参数后的逻辑回归模型
# C,默认为1,越小越能限制模型的复杂度,模型就会越简单
# 因此需要找到合适的C值使得模型准确度升高,参数种类很多可以自己选择
# 模型简单就欠拟合,过于复杂就过拟合
lr2 = LogisticRegression(C=100)
lr2.fit(X_train, y_train)

# score()返回平均准确度(把已知标签与预测标签对比)
print("Training set score: {:.2f}".format(lr2.score(X_train, y_train)))
print("Testing set score: {:.2f}".format(lr2.score(X_test, y_test)))

2随机森林模型:

# 默认参数的随机森林分类模型
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)

print("Training set score: {:.2f}".format(rfc.score(X_train, y_train)))
print("Testing set score: {:.2f}".format(rfc.score(X_test, y_test)))

# 调整参数后的随机森林分类模型
# n_estimators=100决策树的个数(默认100default)
# max_depth决策树的最大深度(没有默认值)
rfc2 = RandomForestClassifier(n_estimators=100, max_depth=5)
rfc2.fit(X_train, y_train)

print("Training set score: {:.2f}".format(rfc2.score(X_train, y_train)))
print("Testing set score: {:.2f}".format(rfc2.score(X_test, y_test)))

3.输出模型预测结果

  • 输出模型预测分类标签(predict() 函数)
  • 输出不同分类标签的预测概率(predict_proba() 函数)
# 预测每个测试标签的结果
pred = lr.predict(X_train)
# 输出为每个测试集样本的预测结果(list)
# 打印前五个[0,5):01234   (左闭右开)
pred[:5]

# 预测标签概率
# 返回每个样本标签的概率
pred_proba = lr.predict_proba(X_train)

pred_proba[:10]
# 标签为0死亡的概率与1存活的概率

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

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

相关文章

使用PWM实现呼吸灯功能

CC表示的意思位捕获比较,CCR表示的是捕获比较寄存器 占空比等效于PWM模拟出来的电压的多少,占空比越大等效出的模拟电压越趋近于高电平,占空比越小等效出来的模拟电压越趋近于低电平,分辨率表示的是占空比变化的精细程度&#xf…

(done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW

一个视频:https://www.bilibili.com/video/BV1mb4y1y7EB/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 这里有个视频,讲解得更加生动形象一些 总得来说,词袋模型(Bow, bag-of-words) 是最简…

spring boot nacos注册微服务示例demo_亲测成功

spring boot nacos注册微服务示例demo_亲测成功 先安装好Nacos Nacos安装使用 创建Maven项目 结构如图 例如项目名为: test-demo 下面有个子模块: test-demo-data-process 父模块pom.xml <?xml version"1.0" encoding"UTF-8"?> <project …

【Micropython ESP32】定时器Timer

文章目录 前言一、分频系数1.1 为什么需要分频系数1.2 分频系数怎么计算 二、如何使用定时器2.1 定时器构造函数2.2 定时器初始化2.3 关闭定时器 三、定时器示例代码总结 前言 在MicroPython中&#xff0c;ESP32微控制器提供了丰富的功能&#xff0c;其中之一是定时器&#xf…

【消息队列开发】 实现MemoryDataCenter类——管理内存数据

文章目录 &#x1f343;前言&#x1f334;数据格式的准备&#x1f332;内存操作&#x1f6a9;对于交换机&#x1f6a9;对于队列&#x1f6a9;对于绑定&#x1f6a9;对于单个消息&#x1f6a9;对于队列与消息链表&#x1f6a9;对于未确认消息&#x1f6a9;从硬盘上读取数据 ⭕总…

SpringCloud-深度理解ElasticSearch

一、Elasticsearch概述 1、Elasticsearch介绍 Elasticsearch&#xff08;简称ES&#xff09;是一个开源的分布式搜索和分析引擎&#xff0c;构建在Apache Lucene基础上。它提供了一个强大而灵活的工具&#xff0c;用于全文搜索、结构化搜索、分析以及数据可视化。ES最初设计用…

ARM和AMD介绍

一、介绍 ARM 和 AMD 都是计算机领域中的知名公司&#xff0c;它们在不同方面具有重要的影响和地位。 ARM&#xff08;Advanced RISC Machine&#xff09;&#xff1a;ARM 公司是一家总部位于英国的公司&#xff0c;专注于设计低功耗、高性能的处理器架构。ARM 架构以其精简指…

Vue前端开发记录(一)

本篇文章中的图片均为深色背景&#xff0c;请于深色模式下观看 说明&#xff1a;本篇文章的内容为vue前端的开发记录&#xff0c;作者在这方面的底蕴有限&#xff0c;所以仅作为参考 文章目录 一、安装配置nodejs,vue二、vue项目目录结构三、前期注意事项0、组件1、数不清的报…

一文速通ESP32(基于MicroPython)——含示例代码

ESP32 简介 ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片&#xff0c;支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa 32 位 LX7 双核处理器&#xff0c;主频高达 240 MHz&#xff0c;内置 512 KB SRAM (TCM)&#xff0c;具有 45 个可编程 GPIO 管…

IDEA 多个git仓库项目放一个窗口

1、多个项目先通过新建module或者CtrlAltShiftS 添加module引入 2、重点是右下角有时候git 分支视图只有一个module的Repositories。这时候需要去设置把多个git仓库添加到同一个窗口才能方便提交代码。

十五、自回归(AutoRegressive)和自编码(AutoEncoding)语言模型

参考自回归语言模型&#xff08;AR&#xff09;和自编码语言模型&#xff08;AE&#xff09; 1 自回归语言模型&#xff08; AR&#xff09; 自回归语言模型&#xff08;AR&#xff09;就是根据上文内容&#xff08;或下文内容&#xff09;预测下一个&#xff08;或前一个&…

微信小程序(五十八)分步表单多页面传值

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.分步表单传值 2.伪数据生成 源码&#xff1a; app.json {"pages": ["pages/index/index","pages/building/building","pages/room/room","pages/logs/logs&quo…

整数和浮点数在内存中是如何存储的?

1.整数在内存中的存储 首先数据在内存中都是以二进制的形式存储的&#xff0c;而整数在内存中也是以二进制的形式存储的&#xff0c;而整数的表示形式有三种&#xff0c;分别是源码&#xff0c;反码&#xff0c;补码&#xff0c;而整数在内存中是以补码的形式存放的。 三种表示…

图文并茂!在Oracle VM VirtualBox上安装Ubuntu虚拟机的详细步骤指南

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

CTFHUB-web-信息泄漏

题目所在位置&#xff1a;技能树->web->信息泄漏 目录遍历 打开题目&#xff0c;我们进入的是这个页面 翻译过来就是 得到的信息就是&#xff1a;flag要在这些目录里面寻找&#xff0c;我们直接一个一个点开查看就行 发现得到一个flag.txt&#xff0c;点击打开得到flag …

Python之requests实现github模拟登录

文章目录 github 模拟登录前言模拟登录流程抓包操作查看登录表单的内容登录操作 模拟登录操作在 main函数的调用获得 auth_token调用/session接口登录处理检测登录是否成功 总结&#xff1a; github 模拟登录 前言 前面学习了requests模块的基础学习后&#xff0c;接下来做一个…

upload-labs通关方式

pass-1 通过弹窗可推断此关卡的语言大概率为js&#xff0c;因此得出两种解决办法 方法一 浏览器禁用js 关闭后就逃出了js的验证就可以正常php文件 上传成功后打开图片链接根据你写的一句话木马执行它&#xff0c;我这里采用phpinfo&#xff08;&#xff09; 方法二 在控制台…

【高通camera hal bug分析】高通自带相机镜像问题

首先打了两个log&#xff0c;一个是开启镜像的log&#xff0c;还有一个是没有开启镜像的log&#xff0c;如果我们开启镜像以后&#xff0c;观察开启镜像log发现 , 这段代码走的没有任何问题&#xff0c;因为Flip的值等于1了。 关闭镜像log如下&#xff1a; 如果我们不开启镜像…

21 OpenCV 直方图均衡化

文章目录 直方图概念均衡的目的equalizeHist 均衡化算子示例 直方图概念 图像直方图&#xff0c;是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数&#xff0c;据此生成的直方图&#xff0c;称为图像直方图-直方图。直方图反映了图像灰度的分布情况。 均衡的目的…

自定义组件

1. 组件 ① 在项目的根目录中&#xff0c;鼠标右键&#xff0c;创建 components -> test 文件夹 ② 在新建的 components -> test 文件夹上&#xff0c;鼠标右键&#xff0c;点击“新建 Component” ③ 键入组件的名称之后回车&#xff0c;会自动生成组件对应的 4 个文件…