机器学习(python)笔记整理

目录

一、数据预处理:

1. 缺失值处理:

2. 重复值处理:

3. 数据类型:

二、特征工程:

1. 规范化:

2. 归一化:

3. 标准化(方差):

三、训练模型:

如何计算精确度,召回、F1分数


一、数据预处理:

1. 缺失值处理:

在数据中存在缺失值的情况下,可以采用删除缺失值、均值填充、中位数填充、插值法等方式进行缺失值处理。

import pandas as pd
import numpy as np# 创建DataFrame,包含缺失值
df = pd.DataFrame({'A': [1, 2, np.nan, 4, 5], 'B': [6, np.nan, 8, np.nan, 10]})
print(df)# 删除缺失值
df.dropna(inplace=True)
print(df)# 均值填充
df.fillna(df.mean(), inplace=True)
print(df)# 中位数填充
df.fillna(df.median(), inplace=True)
print(df)# 插值法填充
df.interpolate(inplace=True)
print(df)

2. 重复值处理:

在数据中存在重复值的情况下,可以采用删除重复值、保留重复值、统计重复值等方式进行重复值处理。

import pandas as pd
import numpy as np# 创建DataFrame,包含重复值
df = pd.DataFrame({'A': [1, 2, 2, 4, 5], 'B': [6, 6, 8, 8, 10]})
print(df)# 删除重复值
df.drop_duplicates(inplace=True)
print(df)# 保留重复值
df[df.duplicated(keep=False)]
print(df)# 统计重复值
df.duplicated()
print(df.duplicated().sum())

3. 数据类型:

在数据中存在不同数据类型的情况下,可以采用转换数据类型、或者删除对模型影响不大的数据类型等方式进行数据类型处理。

import pandas as pd# 创建DataFrame,包含不同数据类型
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['4', '5', '6']})
print(df)# 转换数据类型
df['B'] = df['B'].astype(int)
print(df)# 删除对模型影响不大的数据类型
df.drop(columns='B', inplace=True)
print(df)

二、特征工程:

1. 规范化:

规范化的目的是将特征的值域缩小到[0,1]之间,以消除各特征值域不同的影响,并提高模型的精度。

1.one-hot编码

情况一 . 一个特征中两个不同的特征值(one-hot编码)

import pandas as pd
#情况一  一个特征中两个不同的特征值(one-hot编码)
'''
1 = male
0 = female
'''
df1 = pd.DataFrame({'Gender': ['female','male', 'female','female', 'male','male']})
df1['Gender'].replace({'female':1,'male':0})

 

 情况二 一个特征中有多个不同的特征值(标签编码,一般1对应标签占位)

import pandas as pd#情况二 一个特征中有多个不同的特征值(标签编码,一般1对应标签占位)# 创建DataFrame,包含需要规范化的特征
df2 = pd.DataFrame({'A': ['one','one', 'three','twe', 'one','three']})#使用标签编码来规范化 
'''
分析有三个不同值(将值1作为特征占位)
one  twe  three
1     0     0
0     1     0 
0     0     1
'''
# 将值替换
df2=df2.replace({'one':'100','twe':'010','three':'001'}).astype('category')df2

 

2. 归一化:

归一化与规范化类似,也是将特征的值域缩小到[0,1]之间,但与规范化不同的是,归一化是对整个数据集的缩放,而规范化是对单个特征的缩放。示例代码:
 

import pandas as pd# 创建DataFrame,包含需要归一化的特征
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
print(df)# 将值转换为 0-1值,增加相似度
# 公式  :(x-min)/(max-min)df['A']=(df['A']-df['A'].min())/(df['A'].max()-df['A'].min())
df['B']=(df['B']-df['B'].min())/(df['B'].max()-df['B'].min())
df

3. 标准化(方差):

标准化是将特征值转换为标准正态分布,使得特征值的均值为0,标准差为1,以消除特征值之间的量纲影响,并提高模型的精度。

数据转化到均值为0,方差为1的范围内,方差和标准差越趋近于0,则表示数据越集中;如果越大,表示数据越离散。

使用sklearn.preprocession import StandardScaler

import pandas as pd
from sklearn.preprocessing import StandardScaler
# 创建DataFrame,包含需要标准化的特征
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
print(df)# 使用StandardScaler标准化特征
scaler = StandardScaler()
df_norm = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
print(df_norm)

三、训练模型:

在对数据进行预处理和特征工程之后,就可以训练模型了。在这里,我们以xgboost模型为例进行训练。

示例代码:


# 这行代码是从sklearn.model_selection库中导入train_test_split函数,该函数用于将数据集分割为训练集和测试集。
from sklearn.model_selection import train_test_split# 这行代码将您的主数据集(特征)和目标变量(标签)分割为训练集和测试集。test_size=0.33表示测试集占总数据的33%,random_state=7用于每次分割都产生相同的数据分布,确保结果的可重复性。
X_train, X_test, y_train, y_test = train_test_split(df_train, df_y, test_size=0.33, random_state=7)# 这行代码从xgboost库中导入XGBClassifier类。这是一个实现了梯度提升决策树算法的分类器。
from xgboost import XGBClassifier# 创建XGBClassifier的一个实例。这里没有指定任何参数,所以模型会使用默认参数。
model = XGBClassifier()# eval_set是一个列表,其中包含将用于评估模型性能的测试数据集。这对于早期停止是必要的,以防止过拟合。
eval_set = [(X_test, y_test)]# 这行代码训练模型。early_stopping_rounds=10表示如果在10轮迭代中,性能没有提升,训练将停止。eval_metric='logloss'设置了评估标准。eval_set是我们之前设置的测试数据,verbose=True表示在训练时显示日志。
model.fit(X_train, y_train, early_stopping_rounds=10, eval_metric='logloss', eval_set=eval_set, verbose=True)# 使用训练好的模型对测试集进行预测。
y_pred = model.predict(X_test)# (这行代码被注释掉了,如果使用,它将执行以下操作)这行代码通过四舍五入预测值(因为梯度提升生成的是概率)来创建一个新的预测列表。
# predictions = [round(value) for value in y_pred]# (以下两行代码被注释掉了,如果使用,它们将执行以下操作)计算模型的准确度,即预测正确的比例。
# accuracy = accuracy_score(y_test, predictions)
# print(accuracy)# 从sklearn.metrics导入f1_score函数。
from sklearn.metrics import f1_score# 计算F1得分,这是准确率和召回率的加权平均值,通常用于评估分类模型的性能,尤其是在不平衡数据集中。
f1 = f1_score(y_test, y_pred)# 打印F1得分。
print(f1)

 


如何计算精确度,召回、F1分数

from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score# 真实标签和模型预测结果
y_true = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 0, 1]# 计算混淆矩阵
conf_matrix = confusion_matrix(y_true, y_pred)
TP, FP, TN, FN = conf_matrix.ravel()# 计算精确度、召回率和F1分数
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

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

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

相关文章

数据结构——双向链表的实现

一、双向链表的结构 注意:双向链表又称带头双向循环链表 这⾥的“带头”跟前⾯我们说的“头节点”是两个概念,实际前⾯的在单链表阶段称呼不严 谨,但是为了同学们更好的理解就直接称为单链表的头节点。 带头链表⾥的头节点,实际…

轻量封装WebGPU渲染系统示例<8>- 渲染器基本场景管理(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/RSceneTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 5. 用户操作和渲…

浅谈js代码的封装方法(2023.10.30)

常见的js代码封装方法 2023.10.30 需求1、js代码封装的优缺点2、js代码封装方式2.1 方式一:function function declarations2.1.1 示例 2.2 方式二:class2.2.1 class declarations2.2.2 Class expressions 2.3 变量函数2.4 变量闭包匿名函数2.5 闭包函数…

随机链表的复制(C++解法)

题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节…

基于SpringBoot的垃圾分类管理系统

基于SpringBootVue的垃圾分类管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven主要功能:包括前台和后台两部分、首页列表展示、垃圾分类、垃圾图谱、查看详…

【详细教程】关于如何使用GitGitHub的基本操作汇总GitHub的密钥配置 ->(个人学习记录笔记)

文章目录 1. Git使用篇1.1 下载安装Git1.2 使用Git 2. GitHub使用篇2.1 如何git与GitHub建立联系呢?2.2 配置公钥 1. Git使用篇 1.1 下载安装Git 点击 官网链接 后,进入Git官网,下载安装包 然后根据系统类型进行下载,一般为wind…

Linux 音频驱动实验

目录 音频接口简介为何需要音频编解码芯片?WM8960 简介I2S 总线接口I.MX6ULL SAI 简介 硬件原理图分析音频驱动使能修改设备树使能内核的WM8960 驱动alsa-lib 移植alsa-utils 移植 声卡设置与测试amixer 使用方法音乐播放测试MIC 录音测试LINE IN 录音测试 开机自动…

第16期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

Ceph入门到精通-bluestore IO流程及导入导出

bluestore 直接管理裸设备,实现在用户态下使用linux aio直接对裸设备进行I/O操作 写IO流程: 一个I/O在bluestore里经历了多个线程和队列才最终完成,对于非WAL的写,比如对齐写、写到新的blob里等,I/O先写到块设备上&am…

【操作系统】考研真题攻克与重点知识点剖析 - 第 1 篇:操作系统概述

前言 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术…

总结之数据分析工具cube.js通过Docker部署

cube.js介绍 官网地址:https://cube.dev/ Cube.js是一个开源的模块化框架,用于构建分析web应用程序。它主要用于构建内部业务智能工具或向现有应用程序添加面向客户的分析。 Cube.js设计用于无服务器查询引擎,如AWS Athena和谷歌BigQuery。…

《HelloGitHub》第 91 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…

BI是什么?想要了解BI需要从哪些方面入手?

企业为了执行数字化战略,实行数字化转型,实现数据价值,除了需要相关数字化技术及理念、人才等,还需要借助数字化相关应用,例如商业世界中广受企业欢迎的ERP、OA、CRM等业务信息系统,以及上升势头非常迅猛的…

京东科技埋点数据治理和平台建设实践 | 京东云技术团队

导读 本文核心内容聚焦为什么要埋点治理、埋点治理的方法论和实践、奇点一站式埋点管理平台的建设和创新功能。读者可以从全局角度深入了解埋点、埋点治理的整体思路和实践方法,落地的埋点工具和创新功能都有较高的实用参考价值。遵循埋点治理的方法论,…

nodejs+vue学生考勤综合平台的设计与实现-计算机毕业设计

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “学生考勤综合平台”是基于Mysql数据库,在 程序设计的基础上实现的。为确保中国经济的持续发展,信息时代日益更新,蓬勃发展。 因此,国内外技术…

mybatis-plus正确使用姿势:依赖配置、Mapper扫描、多数据源、自动填充、逻辑删除。。。

一、前言 本文基于 springboot、maven、jdk1.8、mysql 开发&#xff0c;所以开始前我们需要准备好这套环境。 1.1 依赖准备 想要什么依赖版本的去 maven 仓库查看&#xff1a;https://mvnrepository.com/ 引入 mybatis-plus 依赖&#xff1a; <dependency><group…

1 — NLP 的文本预处理技术

一、说明 在本文中&#xff0c;我们将讨论以下主题&#xff1a;1为什么文本预处理很重要&#xff1f;2 文本预处理技术。这个文对预处理做一个完整化、程序化处理&#xff0c;这对NLP处理项目中有很大参考性。 二、为什么文本预处理很重要&#xff1f; 数据质量显着影响机器学习…

【C++项目】高并发内存池第五讲内存回收释放过程介绍

内存回收 1.ThreadCache2.CentralCache3.PageCache 项目源代码&#xff1a;高并发内存池 1.ThreadCache void ThreadCache::Deallocate(void* ptr, size_t size) {assert(ptr);assert(size < MAX_BYTES);//计算在哪号桶中&#xff0c;然后插入进去size_t index SizeClass…

Docker 笔记(上篇)

Docker 概述 Docker 概念 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之…

qml之ui控件

文章目录 ui控件移动版风格嵌套页面并排界面 ui控件 Qt Quick控件用于创建由标准化组件&#xff08;如按钮、标签、滑块等&#xff09;构建的用户界面。 QtQuick.Controls&#xff1a;基本控件。QtQuick.Templates&#xff1a;为控件提供行为化的、非可化视的基本类型。QtQui…