机器学习特征分析

news2024/11/24 17:52:30

机器学习的常规流程

在真正进入机器学习算法之前,数据准备和处理过程会尤为重要,这直接关系到后续模型的效果和最终的业务判决。

数据分析

什么是数据分析

数据分析指对原始数据进行检查、清理、转换及筛选等一系列动作,找到数据对结果的影响关系。

怎么数据分析

数据分析的三板斧:数据对比、数据细分和数据溯源。

  • 数据对比:对比是能够看到数据自身以及和其它变量的关系。比如,电商场景中上个月和这个月的用户数量变化,GMV变化;
  • 数据细分:系分是指对数据增加维度、降低粒度,便于更好的对比。比如客群,会分为男性、女性,性别下又会有年龄的划分,年龄后还会有职业等等;
  • 数据溯源:分析的数据有可能是二手的,得到的信息片面、阉割,所以需要找到一手原始数据,真实反应业务情况。当然,另一种可能是数据本身采集指标不合理,所以需要找到源头;

数据分析的维度

描述性统计指标
  • 集中趋势看平均值、中位数和众数
  • 离散程度看极差、方差、标准差、离散系数;(极差:样本最大值和最小值的间距; 方差:度量数据离散程度;标准差:反应数据在均值附近的波动;离散系数:标注差和均值的比例)
  • 分布形态:正态分布、高斯分布、峰度等;通常,数据处于正态分布情况下,训练越容易收敛,所以会看到数据的归一化处理;
交叉维度
  • 相关系数:反应两个变量的相关性;
  • 线性回归:回归分析两种或两种以上变量的相互依赖;有一元线性回归和多元线性回归。
概率分布
  • 连续性变量正态分布
  • 离散性变量伯努利分布、泊松分布

数据分析抽样方式

如果原始的数据量很大,需要对数据进行抽样分析,用局部替代整体的分布情况,加快数据搜索。抽样方式有:

  • 随机抽样
  • 分层抽样
  • 群体抽样
  • 系统抽样

数据分析与业务关系

数据分析的前提是要了解业务,知道业务目标,分析不是漫无目的的看数据。比如,要分析电商GMV的影响,得知道GMV是什么,影响的因素有哪些,有什么样的影响关系。这里不做过多赘述。

业务分析模型

  • ABTest 最常用的线上业务对比方法;
  • RFM分析:衡量客户价值和客户创利能力的重要工具和手段。通过细分Recently最近一次消费、Frequency消费频率和Monetary消费金额。
  • AARRR漏洞分析法,描述产品生命周期中用户的参与行为深度
  • 同期群分析,分析性质完全一样的、可对比群体随时间的变化
  • 对比分析,环比、同比、标准对比等

数据异常值分析

Python提供了数据形状描绘的工具,可以通过工具快速看到数据的分布。如用seaborn的测试数据titanic.csv,可以得到整体的分布图:

raw = pd.read_csv('dataset/titanic.csv')
sns.set(style="whitegrid")
df_melted = pd.melt(raw, value_vars=raw.columns)
g = sns.FacetGrid(df_melted, col="variable", col_wrap=4, sharex=False, sharey=False)
g.map(sns.histplot, "value")
g.set_titles(col_template="{col_name}")  # 添加标题和调整布局
g.tight_layout() # 保持布局紧凑
plt.show()

异常值监测和分析

异常值分析是检验数据中是否有不合理的数据。注意:数据异常值不一定是错误值。常用的异常值分析办法有:

  1. 描述统计性分析

如上所述,常见的有min/max/avg/mid等,明显不合理的数据清除或填充处理

     2. Z-Score分析(描述与平均值的距离是标准差的多少倍)

在正态分布下,距离平均值 3\sigma之外的值出现的概率为 P(|x-μ|>3σ)<=0.003,属于极个别的小概率事件。如果观测值与平均值的差值超过3倍标准差,那么可以将其视为异常值。

如测试数据中,票价fare的分析,存在异常点

from scipy.stats import zscore
z_scores = zscore(df['fare'])

      3. 箱线图 IQR异常监测(连续变量)

四分位点内距(Inter-Quartile Range,IQR),是指在第75个百分点与第25个百分点的差值,或者说,上四分位数与下四分位数之间的差。通常把小于Q1-1.5*IQR和Q3+1.5*IQR的数据视为离群点;

      4. 基于密度

考察当前点周围密度,局部异常点/离群点的局部密度显著低于大部分近邻点。这类方法适用于非均匀的数据集。

缺点:基于邻近度的算法时间复杂度是O(n^2),大数据集不适用

基于聚类、基于距离等都各有优点,但时间复杂度不使用大数据集

异常值处理

异常值处理有3中模式:删除异常值数据、插补替换异常值和不处理,将异常值视为特殊的类别;

数据缺失值分析处理

查找数据中的缺失值:

data.isnull().sum()

缺失值的分析处理流程:

  • 删除数据行:如果缺失值较少,可以考虑删除对应的行数据. df采用
    dt.dropna(axis=0, how='any', subset=['embarked'], inplace=True)s
  • 数值填充:包含特殊值填充,统计量(中位数、众数、平均值)填充。缺失值较少一般用众数填充,缺失值较多用中位数
    dt['embark_town'] = dt['embark_town'].fillna(dt['embark_town'].mode()[0])
  • 同类均值填充。先进行分组,落在同一个组内的数据,然后再用这个组的均值填充。
# 找到要填充的分组均值,并且得到index
age_group_mean = dt.groupby(['pclass', 'sex','who'])['age'].mean().reset_index()

# 定义筛选函数

def select_group_age_mean(row):
    condition = ((row['sex'] == age_group_mean['sex']) & (row['pclass'] == age_group_mean['pclass'])
                 & (row['who'] == age_group_mean['who']))
    # 输出的是每一个列名对应的筛选
    return age_group_mean[condition]['age'].values[0]

# 数据应用函数

dt['age'] = dt.apply(lambda x: select_group_age_mean(x) if np.isnan(x['age']) else x['age'], axis=1)
  • 模型预测值填充:将填充字段视为label,没有缺失的数据作为训练数据,建立分类/回归模型,对缺失值填充。
import pandas as pd
import numpy as np

data = pd.read_csv('titanic.csv')
# 选取特征
df_age = dt[['age', 'pclass', 'sex', 'who','fare', 'parch', 'sibsp']]
# 离散类别 哑变量
df_age = pd.get_dummies(df_age)

#  进行数据筛选
known_age = df_age[df_age.age.notnull()]
unknown_age = df_age[df_age.age.isnull()]

# 确定y label
y_label = known_age['age']
train_data = known_age.drop(['age'], axis=1)
test_data = unknown_age.drop(['age'], axis=1)

#  采用随机森林算法计算缺失值y
from sklearn.ensemble import RandomForestRegressor
# n_jobs =-1,表示不限制CPU数量
model = RandomForestRegressor(random_state=0, n_estimators=2000, n_jobs=-1)
# 进行预测
model.fit(train_data, y_label)
y_pred = model.predict(test_data)

# 使用得到的预测结果填补原来的值
dt.loc[dt.age.isnull(),'age'] = y_pred
  •  插值法填充 
    dt['fare'].interpolate(method='linear', axis=0)
    

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

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

相关文章

Qwen1.5模型文本分类微调实战教程

大家好啊!今天咱们来聊聊怎么给大语言模型"调教"一下&#xff0c;让它在文本分类这个任务上玩得更溜。具体来说&#xff0c;我们要用Qwen1.5这个模型来做文章。别看这活儿听着高大上&#xff0c;其实做起来也没那么难。跟着我来&#xff0c;保证让你轻松上手! 咱们这…

How to fool AI content detectors?

Add prompt below: Make it sound like a tweed jacket wearing professor taking to a group of 20 years old students. Vary the sentences length. Make it persoanl, add a touch of humor. Make the blog post sound unique when compared to Other blog posts.

MySQL--库的操作

文章目录 1.创建数据库2.创建数据库案例3.字符集和校验规则3.1默认字符集3.2默认校验规则3.3查看系统默认字符集以及校验规则3.4查看数据库支持的字符3.5查看数据库支持的字符集校验规则3.6校验规则对数据库的影响不区分大小写查询&#xff1a;排序结果&#xff1a;区分大小写查…

BFS广度优先搜索和DFS深度优先搜索解决迷宫问题

前言 BFS广度优先搜索和DFS深度优先搜索解决迷宫问题 迷宫问题 原题目&#xff1a;迷宫由n行m列的单元格组成(n,m都小于等于50)&#xff0c;每个单元格要吗是空地要吗是障碍物。现在请你找到一条从起点到终点的最短路径长度。 分析 BFS广度优先搜索 首先我们将起点入队&a…

iOS 18 RC 版本更新,为相机应用引入了“暂停录制视频”功能

苹果公司9月10日正式向全球iPhone用户推送了iOS 18 Release Candidate&#xff08;RC&#xff09;版本。这一版本的发布不仅标志着iOS系统的又一次重大更新&#xff0c;更预示着苹果在提升用户体验、增强隐私保护以及推动AI应用方面的持续努力。 并且此次苹果公司最新推出的 i…

Unity基本操作

API手册 Unity 脚本 APIhttps://docs.unity.cn/cn/2022.3/ScriptReference/index.html 在遇到不懂的方法、想更深入的学习或者是想查看是否有相应的方法实现某项功能&#xff0c;可以在Unity官方这里查看脚本。以Transform为例&#xff0c;可以直接搜索&#xff0c;或者在Unit…

9月12日 QT

//设置图片缩放适应label ui->label->setScaledContents(true); // 在spinbox后方设置$特殊符号 ui->spinBox->setSuffix(" 斤"); //给肉类combobox加入项目 QStringList Meat_List{"请选择&quo…

数据放到GPU上,运行程序卡住检查方法

这个问题一定是要结合具体的代码&#xff0c;下面就自己遇到问题&#xff0c;询问chatGPT后发现问题所在的过程进行记录&#xff0c;当然绝大部分情况下都是batch_size设置太大了&#xff0c;显卡内存不足导致 部分重点代码&#xff1a; 导入模型部分略 #自定义数据集有关类 c…

无人机 PX4 飞控 | EKF2简介与使用方法

无人机 PX4 飞控 | EKF2简介与使用方法 PX4 EKF2简介EKF 的启动ecl EKF 的优缺点缺点优点 运行单个EKF实例运行多个EKF实例 PX4 EKF2简介 PX4是一个流行的开源飞控系统&#xff0c;广泛用于无人机和其他自动驾驶飞行器。EKF2&#xff08;Extended Kalman Filter 2&#xff09;…

IEEE 802.11a OFDM系统的仿真(续)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第九章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; clear all %%%%%%%参数设计部分%%%%%%%Nsp52;%系统子载波数&#xff08;不包括直流载波&#xff09; Nfft64;%FFT长度 Ncp16;…

ppt文档怎么转换成pdf?快来试试这几种转换方法!

ppt文档怎么转换成pdf&#xff1f;在日常工作与学习的广阔舞台上&#xff0c;PPT&#xff0c;这一演示文稿的常青树&#xff0c;无疑是表达创意、传递信息的重要工具&#xff0c;然而&#xff0c;正如每枚硬币都有其两面&#xff0c;PPT在带来便捷的同时&#xff0c;也显露出一…

js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】

js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】 描述 概述 在前端开发中&#xff0c;遇到TypeError: Cannot read properties of null (reading indexOf)这类错误并不罕见。这个错误通常表明你试图在一个null值上调用indexOf方法&#xff0c…

Linux基础---05输入输出重定向

一.输出重定向符号> 操作1 > 文件 &#xff1a;将操作1的结果覆盖到文件里&#xff0c;并且此文件之前的数据全部清空。 操作2 >>文件&#xff1a;将操作2的结果追加到文件里&#xff0c;原文件的内容不会被清空。 操作3 1>right.txt 2>wrong.txt:操作3的返…

C 盘突然爆满,罪魁祸首竟然是 ...... !

今天打开电脑的时候突然发现 C 盘进度条变红了&#xff0c;这很不正常&#xff01; 做软件开发的应该都会经常在各种磁盘中查找文件和资料&#xff0c;也就会频繁打开 此电脑 窗口&#xff0c;因此即使不是刻意去观察各个磁盘的容量&#xff0c;也会时不时瞟一眼每个盘的占用条…

Java特殊文件xml—利用Dom4J解析xml文件(完整详解,附有代码+案例)

文章目录 三十.特殊文件30.1 xml概述30.1 xml文件30.2 Dom4J解析xml30.2.1 案列130.2.2 案例2 三十.特殊文件 30.1 xml概述 可扩展标记语言 可扩展&#xff1a;标签名字可以自己定义 优点&#xff1a;易于阅读&#xff0c;可以配置成组出现的数据 缺点&#xff1a;解析比较复…

对称矩阵的压缩存储

1.给自己出题&#xff1a;自己动手创造&#xff0c;画一个5行5列的对称矩阵 2.画图&#xff1a;按“行优先”压缩存储上述矩阵&#xff0c;画出一维数组的样子 3.简答&#xff1a;写出元素 i,j 与 数组下标之间的对应关系 4.画图&#xff1a;按“列优先”压缩存储上述矩阵&a…

盐湖卤水中提取铷、铯

盐湖卤水中提取铷、铯是一个复杂但具有重要意义的过程&#xff0c;因为铷、铯是稀有的金属元素&#xff0c;在高科技、航空航天、新能源等领域有广泛应用。以下是从盐湖卤水中提取铷、铯的详细分析&#xff1a;我国盐湖资源丰富&#xff0c;盐类资源总量约12000亿吨&#xff0c…

2024.9.12(k8s环境搭建2)

一、接9.11 19、部署calico的pod 4. 查看容器和节点状态 异常处理&#xff1a; 出现Init:0/3&#xff0c;查看node节点 /var/log/messages是否有除网络异常之外的报错信息 三台机器执行&#xff1a;&#xff08;更新版本&#xff09; yum list kernel yum update kernel reb…

i++与++i在for循环中效果一样?

首先说结果 是的&#xff0c;在Visual Studio 2022中&#xff0c;不同于直接printf&#xff0c;在for循环中的i与i是同样的效果&#xff08;都当作了i&#xff09; 这是编译器干的好事。 如图比对 i i 原因探寻 | i i的底层原理 找到一篇博客&#xff0c;我目前还看不太明…

关于Spring Cloud 表达式注入漏洞——分析复现

更多漏洞分析复现&#xff0c;可前往无问社区查看http://www.wwlib.cn/index.php/artread/artid/5175.html 一、漏洞成因 近期&#xff0c;Spring Cloud官方发布了一则安全公告&#xff0c;修复了一个Spring Cloud Function中的 SPEL表达式注入漏洞。该漏洞是由于Spring Clou…