机器学习(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.mzph.cn/news/122759.shtml

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

相关文章

阿里蚂蚁淘宝等多次一面面试面经

一面采用电话面试笔试链接做算法题(可能开视频)的形式 蚂蚁第一次: 自我介绍 技术一般使用开源技术还是自己研发 开源spring cloud等 流水线用来做什么 用户是什么人 应用场景 是toB的对吧 学到的最前沿的技术有哪些 gateway全局权限…

Openssl数据安全传输平台016:在QT中的数据库操作+在项目中的设计与实现

文章目录 1 在QT中 的数据库操作1.1 QSqlDatabase1.2 QSqlQuery 2 QT中json相关的操作类2.1 json格式字符串 -> json文档对象2.2 组织一个json数组/json对象 -> 写文件/发送 1 在QT中 的数据库操作 在Qt中进行数据库操作需要使用的类: QSqlDataBase 属于的模块: sql 使用…

.NET CORE 3.1 集成JWT鉴权和授权2

JWT:全称是JSON Web Token是目前最流行的跨域身份验证、分布式登录、单点登录等解决方案。 通俗地来讲,JWT是能代表用户身份的令牌,可以使用JWT令牌在api接口中校验用户的身份以确认用户是否有访问api的权限。 授权:这是使用JWT的…

搭建gnn环境

1.无法激活 激活pytorch遇到报错usage: conda-script.py [-h] [--no-plugins] [-V] COMMAND ... conda-script.py: error: arg-CSDN博客 参考教程 【精选】手把手教你在windows10安装GNN相关环境(torchtorch_geometricrdkitdeepchem)_gnn环境相关的包-…

redis6.0源码分析:字典扩容与渐进式rehash

文章目录 字典数据结构结构设计dictType字典类型为什么字典有两个哈希表?哈希算法 扩容机制扩容前置知识字典存在几种状态?容量相关的关键字段定义字典的容量都是2的幂次方 扩容机制字典什么时候会扩容?扩容的阈值 & 扩容的倍数哪些方法会…

matlab中类的分别之handle类和value类——matlab无法修改类属性值的可能原因

写在之前(吐槽) 最近由于变化了一些工作方向,开始需要使用matlab进行开发,哎哟喂,matlab使用的我想吐,那个matlab编辑器又没代码提示,又没彩色,我只好用vscode进行代码编辑&#xf…

MySQL篇---第六篇

系列文章目录 文章目录 系列文章目录一、 MySQL 中 varchar 与 char 的区别?varchar(30) 中的 30代表的涵义?二、 int(11) 中的 11 代表什么涵义?三、为什么 SELECT COUNT(*) FROM table 在 InnoDB 比MyISAM 慢?一、 MySQL 中 varchar 与 char 的区别?varchar(30) 中的 30…

EASYX动画效果实现

eg1:绘制小球的动画效果 通过一下的代码实现小球从左向右移动效果&#xff0c;计算小球的移动速度和帧率实现移动效果平和造成视觉上的错觉 #include <stdio.h> #include <easyx.h> #include <iostream> #include <math.h> #define PI 3.14 // 1PI …

springboot在线招聘系统

springboot在线招聘管理系统&#xff0c;java在线招聘管理系统&#xff0c;在线招聘管理系统 运行环境&#xff1a; JAVA版本&#xff1a;JDK1.8 IDE类型&#xff1a;IDEA、Eclipse都可运行 数据库类型&#xff1a;MySql&#xff08;8.x版本都可&#xff09; 硬件环境&#xf…

虚机Centos忘记密码如何重置

1进入开机前的页面&#xff0c;选中第一个&#xff0c;按“e”键&#xff0c;进入编辑模式 2找到ro crashkernel项&#xff0c;将ro替换成 rw initsysroot/bin/sh 3 Ctrlx mount -o remount, rw / chroot /sysroot chroot /sysroot passwd root 输入两次密码 touch /.a…

云服务器的先驱,亚马逊云科技海外云服务器领军者

随着第三次工业革命的发展&#xff0c;移动互联网技术带来的信息技术革命为我们的生活带来了极大的便捷。其中&#xff0c;不少优秀的云服务器产品发挥了不可低估的作用&#xff0c;你或许听说过亚马逊云科技、谷歌GCP、IBM Cloud等优秀的海外云服务器。那么云服务器有哪些&…

sqoop连接MYSQL报错处理

Sqoop远程连接MYSQL数据库报/apache/commons/lang/StringUtils错误&#xff0c;如下&#xff1a; [rootmanager ~]# sqoop list-databases --connect jdbc:mysql://10.100.81.207:3306/ --username root --password 123 Warning: /home/bigdata/sqoop//../hcatalog does not e…

Word批量删除文档属性和个人信息方法图解

投标文件中设计敏感信息&#xff0c;在投标前必须删除&#xff0c;Word批量删除文档属性和个人信息方法图解&#xff1a; 右键word文件属性--详细信息&#xff0c;可以查看如下信息&#xff1b; 删除上述信息的办法&#xff1a; 1.打开word文件---文件 2.检查文档、检查文档 检…

【Python · PyTorch】线性代数 微积分

本文采用Python及PyTorch版本如下&#xff1a; Python&#xff1a;3.9.0 PyTorch&#xff1a;2.0.1cpu 本文为博主自用知识点提纲&#xff0c;无过于具体介绍&#xff0c;详细内容请参考其他文章。 线性代数 & 微积分 1. 线性代数1.1 基础1.1.1 标量1.1.2 向量长度&…

分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测

分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测 目录 分类预测 | Matlab实现KOA-CNN-BiLSTM-selfAttention多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现KOA-CNN-BiLSTM-selfAttention开普勒算法优化卷积双向长短期记忆神…

HIT_OS_LAB1 调试分析 Linux 0.00 引导程序

操作系统实验一 姓名&#xff1a;董帅学号&#xff1a;2021111547班级&#xff1a;21R0312 1.1 实验目的 熟悉实验环境掌握如何手写Bochs虚拟机的配置文件掌握Bochs虚拟机的调试技巧掌握操作系统启动的步骤 1.2 实验内容 1.2.1 掌握如何手写Bochs虚拟机的配置文件 boot: f…

使用 Visual Studio Code 编写 TypeScript程序

安装 TypeScript 首先&#xff0c;确保你已经安装了 TypeScript&#xff0c;如果没有安装&#xff0c;请参考https://blog.csdn.net/David_house/article/details/134077973?spm1001.2014.3001.5502进行安装 创建 新建一个文件夹&#xff0c;用vs code打开&#xff0c;在文…

系统平台同一网络下不同设备及进程的话题通讯--DDS数据分发服务中间件

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言(1)中间件的介绍(2)DDS介绍(3)发布者(4)订阅者(5)idl文件(定义msg结构体)(6)QoS(Quality of Service)策略(7)DDS测试工具介绍(…

学习笔记---更进一步的双向链表专题~~

目录 1. 双向链表的结构&#x1f98a; 2. 实现双向链表&#x1f41d; 2.1 要实现的目标&#x1f3af; 2.2 创建初始化&#x1f98b; 2.2.1 List.h 2.2.2 List.c 2.2.3 test.c 2.2.4 代码测试运行 2.3 尾插打印头插&#x1fabc; 思路分析 2.3.1 List.h 2.3.2 List.…

基于Qt 的CAN Bus实现

# 简介 从 Qt5.8 开始,提供了 CAN Bus 类,假设您的 Qt 版本没有 CAN Bus,可以参考 Linux 应用编程来操控开发板的 CAN,目前我们主要讲解 Qt 相关的 CAN编程。其实 Qt 也提供了相关的 Qt CAN 的例子,我们也可以直接参考来编程。读者手上需要有测试 CAN 的仪器!否则写好程…