数据分析与应用-----使用scikit-learn构建模型

目录

一、使用sklearn转换器处理数据

(一)、加载datasets模块中的数据集

(二)、将数据集划分为训练集和测试集 

​编辑 train_test_spli

(三)、使用sklearn转换器进行数据预处理与降维 

PCA 

二、 构建并评价聚类模型

(一)、使用sklearn估计器构建聚类模型

 (二)、使用sklearn转换器进行数据预处理与降维

TSNE类

(三)、评价聚类模型


一、使用sklearn转换器处理数据

(一)、加载datasets模块中的数据集

sklearn库的datasets模块集成了部分数据分析的经典数据集,读者可以使用这些数据集进行数据预处理、建 模等操作,以及熟悉sklearn的数据处理流程和建模流程。

datasets模块常用数据集的加载函数及其解释,如下表所示。

使用sklearn进行数据预处理需要用到sklearn提供的统一接口——转换器(Transformer)。

如果需要加载某个数据集,那么可以将对应的函数赋值给某个变量。加载diabetes数据集,如以下代码

 

(二)、将数据集划分为训练集和测试集 

 train_test_spli

 在sklearn的model_selection模块中提供了train_test_split函数,可实现对数据集进行拆分,train_test_split函数 的基本使用格式如下。

sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)

train_test_split函数是最常用的数据划分方法,在model_selection模块中还提供了其他数据集划分的函数,如PredefinedSplit函数、ShuffleSplit函数等。读者可以通过查看官方文档学习其使用方法。 

数值型数据类型

说明

*arrays

接收list、numpy数组、scipy-sparse矩阵、Pandas数据帧。表示需要划分的数据集。若为分类回归,则分别传入数据和标签;若为聚类,则传入数据。无默认值

test_size

接收float、int。表示测试集的大小。若传入为float型参数值,则应介于0~1之间,表示测试集在总数据集中的占比;若传入为int型参数值,则表示测试样本的绝对数量。默认为None

train_size

接收float、int。表示训练集的大小,传入的参数值说明与test_size参数的参数值说明相似。默认为None

random_state

接收int。表示用于随机抽样的伪随机数发生器的状态。默认为None

shuffle

接收bool。表示在拆分数据集前是否对数据进行混洗。默认为True

stratify

接收array。表示用于保持拆分前类的分布平衡。默认为None

 train_test_split函数可分别将传入的数据集划分为训练集和测试集。

如果传入的是一组数据集,那么生成的就是这一组数据集随机划分后的训练集和测试集,总共两组。

如果传入的是两组数据集,则生成的训练集和测试集分别两组,总共4组。

将breast_cancer数据集划分为训练集和测试集,如以下代码。

(三)、使用sklearn转换器进行数据预处理与降维 

为了帮助用户实现大量的特征处理相关操作,sklearn将相关的功能封装为转换器。 转换器主要包括3个方法:fit()、transform()和fit_transform()。转换器的3种方法及其说明如下表所示。

方法名称

方法说明

fit()

主要通过分析特征和目标值提取有价值的信息,这些信息可以是统计量、权值系数等。fit() 方法用于从数据中学习参数,不进行实际的数据转换。

transform()

主要用于对特征进行转换。transform() 方法使用已经学习到的参数对数据进行转换,因此在调用 transform() 之前必须先调用 fit()。

fit_transform()

即先调用fit()方法,然后调用transform()方法

sklearn除了提供离差标准化函数MinMaxScaler外,还提供了一系列数据预处理函数,如下表所示。

函数名称

函数说明

StandardScaler

对特征进行标准差标准化

Normalizer

对特征进行归一化

Binarizer

对定量特征进行二值化处理

OneHotEncoder

对定性特征进行独热编码处理

FunctionTransformer

对特征进行自定义函数变换

PCA 

sklearn除了提供基本的特征变换函数外,还提供了降维算法、特征选择算法,这些算法的使用也是通过转换器的方式进行的。

sklearn的decomposition模块中提供了PCA类,可实现对数据集进行PCA降维,PCA类的基本使用格式如下。 

 class sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)

参数名称

参数说明

n_components

接收int、float、'mle'。表示降维后要保留的特征纬度数目。若未指定参数值,则表示所有特征均会被保留下来;若传入为int型参数值,则表示将原始数据降低到n个维度;若传入为float型参数值,则将根据样本特征方差来决定降维后的维度数;若赋值为“mle”,则将会使用MLE算法来根据特征的方差分布情况自动选择一定数量的主成分特征来降维。默认为None

copy

接收bool。表示是否在运行算法时将原始训练数据进行复制。若为True,则运行算法后原始训练数据的值不会有任何改变;若为False,则运行算法后原始训练数据的值将会发生改变。默认为True

whiten

接收bool。表示对降维后的特征进行标准化处理,使得具有相同的方差。默认为False

svd_solver

接收str。表示使用的SVD算法,可选randomized、full、arpack、auto。randomized一般适用于数据量大,数据维度多,同时主成分数目比例又较低的PCA降维。full是使用SciPy库实现的传统SVD算法。arpack和randomized的适用场景类似,区别在于,randomized使用的是sklearn自己的SVD实现,而arpack直接使用了SciPy库的sparse SVD实现。auto则代表PCA类会自动在上述3种算法中去权衡,选择一个合适的SVD算法来降维。默认为auto

二、 构建并评价聚类模型

(一)、使用sklearn估计器构建聚类模型

聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将它们划分为若干组,划分的原则是组内(内部)距离最小化,而组间(外部)距离最大化,如图所示。

常用的聚类算法及其类别如下表所示。

算法类别

包括的主要算法

划分(分裂)方法

K-Means算法(K-平均)、K-MEDOIDS算法(K-中心点)和CLARANS算法(基于选择的算法)

层次分析方法

BIRCH算法(平衡迭代规约和聚类)、CURE算法(代表点聚类)和CHAMELEON算法(动态模型)

基于密度的方法

DBSCAN算法(基于高密度连接区域)、DENCLUE算法(密度分布函数)和OPTICS算法(对象排序识别)

基于网格的方法

STING算法(统计信息网络)、CLIOUE算法(聚类高维空间)和WAVE-CLUSTER算法(小波变换)

 sklearn常用的聚类算法模块cluster提供的聚类算法及其适用范围如下表所示。

算法名称

参数

适用范围

距离度量

K-Means

簇数

可用于样本数目很大、聚类数目中等的场景

点之间的距离

Spectral clustering

簇数

可用于样本数目中等、聚类数目较小的场景

图距离

Ward hierarchical clustering

簇数

可用于样本数目较大、聚类数目较大的场景

点之间的距离

Agglomerative clustering

簇数、链接类型、距离

可用于样本数目较大、聚类数目较大的场景

任意成对点线图间的距离

聚类算法模块cluster提供的聚类算法及其适用范围续表。

算法名称

参数

适用范围

距离度量

DBSCAN

半径大小、最低成员数目

可用于样本数目很大、聚类数目中等的场景

最近的点之间的距离

Birch

分支因子、阈值、可选全局集群

可用于样本数目很大、聚类数目较大的场景

点之间的欧式距离

聚类算法实现需要使用sklearn估计器(estimator)。

sklearn估计器拥有fit()和predict()两个方法,其说明如下表所示。

方法名称

方法说明

fit()

fit()方法主要用于训练算法。该方法可接收用于有监督学习的训练集及其标签两个参数,也可以接收用于无监督学习的数据

predict()

predict()方法用于预测有监督学习的测试集标签,亦可以用于划分传入数据的类别

 (二)、使用sklearn转换器进行数据预处理与降维

TSNE类

使用customer数据集,通过sklearn估计器构建K-Means聚类模型,对客户群体进行划分。

并使用sklearn的manifold模块中的TSNE类可实现多维数据的可视化展现功能,查看聚类效果,TSNE类的基本使用格式如下。

class sklearn.manifold.TSNE(n_components=2, *, perplexity=30.0, early_exaggeration=12.0, learning_rate=200.0, n_iter=1000, n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', init='random', verbose=0, random_state=None, method='barnes_hut', angle=0.5, n_jobs=None, square_distances='legacy')

import pandas as pd
from sklearn.manifold import TSNE
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 读取数据集
filepath = 'D:\Desktop\data\customer.csv'
customer = pd.read_csv(filepath, encoding='gbk')
customer_data = customer.iloc[:, :-1]
customer_target = customer.iloc[:, -1]
# Kmeans聚类
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=6,random_state=6).fit(customer_data)
# 使用TSNE进行数据降维,降成两维
tsne = TSNE(n_components=2, init='random',random_state=2).fit(customer_data)
df = pd.DataFrame(tsne.embedding_)  # 将原始数据转
df['labels'] = kmeans.labels_  # 将聚类结果存储进df
# 提取不同标签的数据
df1 = df[df['labels'] == 0]
df2 = df[df['labels'] == 1]
df3 = df[df['labels'] == 2]
df4 = df[df['labels'] == 3]
df5 = df[df['labels'] == 4]
df6 = df[df['labels'] == 5]# 绘制图形
fig = plt.figure(figsize=(9, 6))  # 设定空白画布,为
# 用不同的颜色表示不同数据
plt.plot(df1[0], df1[1], 'bo', df2[0], df2[1], 'r*',df3[0], df3[1], 'gD', df4[0], df4[1], 'kD',df5[0], df5[1], 'ms', df6[0], df6[1], 'co' )
plt.show()  # 显示图片

(三)、评价聚类模型

除了轮廓系数评价法以外的评价方法,在不考虑业务场景的情况下都是得分越高,其效果越好,最高分值为1。

而轮廓系数评价法则需要判断不同类别数目情况下的轮廓系数的走势,寻找最优的聚类数目。

综合以上聚类评价方法,在真实值作为参考的情况下,几种方法均可以很好地评估聚类模型。

在没有真实值作为参考的时候,轮廓系数评价法和Calinski-Harabasz指数评价法可以结合使用。 

from sklearn.metrics import fowlkes_mallows_score
for i in range(1, 7):# 构建并训练模型kmeans = KMeans(n_clusters=i, random_state=6).fit(customer_data) score = fowlkes_mallows_score(customer_target, kmeans.labels_)print('customer数据聚%d类FMI评价分值为:%f' % (i, score))from sklearn.metrics import silhouette_score
silhouettteScore = []
for i in range(2, 10):# 构建并训练模型kmeans = KMeans(n_clusters=i,random_state=6).fit(customer_data) score = silhouette_score(customer_data, kmeans.labels_)silhouettteScore.append(score)
plt.figure(figsize=(10, 6))
plt.plot(range(2, 10), silhouettteScore,
linewidth=1.5, linestyle='-')plt.show()

 

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

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

相关文章

【Tomcat】Tomcat端口仅允许本地访问设置方法

要设置Tomcat端口仅允许本地访问&#xff0c;可以通过以下两种主要方式实现&#xff1a; 方法一&#xff1a;修改Tomcat配置文件&#xff08;推荐&#xff09; 修改 server.xml 文件 打开Tomcat的配置文件 conf/server.xml&#xff0c;找到 <Connector> 标签&#xff08;…

arcgis字段计算器中计算矢量面的每个点坐标

python脚本 函数 def ExportCoordinates(feat):coors = []partnum = 0partcount = feat.partCountwhile partnum < partcount:part = feat.getPart(partnum)pnt = part.next()while pnt:coors.append("({}, {})".format(pnt.X,pnt.Y))pnt = part.next()if not p…

企业级AI开启落地战,得场景者得天下

文&#xff5c;白 鸽 编&#xff5c;王一粟 这两周&#xff0c;企业级智能体开发平台颇有你方唱罢我方登台的架势。 微软、腾讯、网易等国内外巨头&#xff0c;近期都相继宣布推出了新一代智能体开发平台。相比于两年前&#xff0c;智能体开发的产品逻辑已经有了翻天覆地的变…

探索C++标准模板库(STL):String接口实践+底层的模拟实现(中篇)

前引&#xff1a;上一篇文章小编已经整理出了String的常用接口&#xff0c;梳理了各个接口的功能、参数&#xff0c;如何使用等各种实例。本篇文章将带大家看看String这些接口的实践使用&#xff0c;探索这些接口的实用性&#xff0c;是如何增加代码效率的。在本篇文章的末尾&a…

【模型显著性分析】配对样本 t 检验

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言 t t t 检验配对样本 t t t 检验&#xff08;适用于相关组&#xff09;代码论文描…

商旅平台排名:十大商旅服务平台解析

商旅平台排名&#xff1a;十大商旅服务平台解析 在企业降本增效的关键转型期&#xff0c;商旅管理正成为优化运营成本与提升管理效能的核心场景。如何在保障出行体验的同时实现差旅成本精细化管控、管理流程智能化&#xff0c;成为越来越多企业的战略焦点。随着AI技术在数据洞…

题海拾贝:P1208 [USACO1.3] 混合牛奶 Mixing Milk

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…

每天掌握一个Linux命令 - ab(Apache Benchmark)

Linux 命令工具 ab 使用指南 一、工具概述 ab&#xff08;Apache Benchmark&#xff09; 是 Apache 官方提供的开源压力测试工具&#xff0c;用于衡量 Web 服务器的性能。它通过模拟多并发请求&#xff0c;测试服务器在高负载下的响应速度、吞吐量和稳定性&#xff0c;常用于…

AI的“空间盲症“

<------最重要的是订阅“鲁班模锤”------> 当我们看到一张照片时&#xff0c;大脑会自动分析其中的空间关系——哪个物体在前&#xff0c;哪个在后&#xff0c;左边是什么&#xff0c;右边是什么。但对于当今最先进的AI系统来说&#xff0c;这种看似简单的空间理解却是…

数据拟合实验

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的: 进一步熟练掌握最小二乘多项式拟合算法&#xff0c;提高编程能力和解决拟合问题的实践技能。 实验内容&#xff1a; 1 对下列数据&#xff0c;求解最小二乘抛物线f(x)Ax2BxC x -3 -1 1 3 y 15 5 …

系统思考:心智模式与业务创新

在最近的项目交付讨论中&#xff0c;我频繁听到一个词&#xff1a;“缺合适的人”。这让我陷入了深思&#xff1a;我们是否还在传统的生产力概念&#xff1f;纳瓦尔提出的三种杠杆&#xff1a;劳动力、资本、零边际成本产品。在当今这个信息化、全球化的商业世界中&#xff0c;…

python分步合并处理excel数据

文章目录 概要整体架构流程技术名词解释技术细节小结概要 客户需求 1. 背景与目标 用户需要将三个包含农业实验数据的Excel表格(AK、AN、AP)合并为一个结构化数据集,用于后续分析。每个表格包含相同类型的字段(如对照组与PSB处理组的样本数、均值、标准差),但需通过字…

Python爬虫实战:研究PyQuery库相关技术

1. 引言 1.1 研究背景与意义 随着互联网的快速发展,网络上的数据量呈爆炸式增长。如何高效地从海量的网页数据中提取有价值的信息,成为当前信息技术领域的一个重要研究方向。网络爬虫作为一种自动获取网页内容的程序,能够按照一定的规则,自动地抓取万维网信息,在搜索引擎…

深度学习---注意力机制(Attention Mechanism)

一、核心概念与发展背景 注意力机制是深度学习中模拟人类注意力选择能力的关键技术&#xff0c;旨在从海量信息中筛选关键特征&#xff0c;解决长序列信息处理中的瓶颈问题&#xff08;如RNN的梯度消失&#xff09;。其核心思想是&#xff1a;对输入序列的不同部分分配不同权重…

Jenkins分配对应项目权限与用户管理

在日常开发过程中经常会出现用户和权限管理问题&#xff0c;没有配置trigger时&#xff0c;通常需要我们手动构建&#xff0c;但此时前端和后端的朋友没有build权限&#xff0c;导致每次dev环境测试都需要麻烦我们手动去构建&#xff0c;消息传达不及时则会降低开发效率。 现有…

XCTF-web-file_include

解析 <?php highlight_file(__FILE__); // 高亮显示当前PHP文件源代码 include("./check.php"); // 包含检查文件&#xff08;可能包含安全过滤逻辑&#xff09;if(isset($_GET[filename])) { // 检查是否传入filename参数$filename $_GET[f…

matlab全息技术中的菲涅尔仿真成像

matlab全息技术中的菲涅尔仿真成像程序。 傅里叶法&#xff08;重建距离得大&#xff09;/Fresnel.m , 545 傅里叶法&#xff08;重建距离得大&#xff09;/FresnelB.m , 548 傅里叶法&#xff08;重建距离得大&#xff09;/Fresnel_solution.m , 1643 傅里叶法&#xff08;重…

CS144 - LAB0

CS144 - Lab 0 telnet 发送请求 如图&#xff0c;很简单&#xff0c;但是注意输入时间太久会超时 发邮箱 首先我们需要用命令行去发邮箱&#xff0c;这里我用企业微信邮箱给自己的 qq 邮箱发送~ 整个命令如下&#xff01; 对于其中的参数&#xff0c;其实从英文就可以看出来…

kafka SASL/PLAIN 认证及 ACL 权限控制

一、Zookeeper 配置 SASL/PLAIN 认证&#xff08;每个zookeeper节点都要做&#xff09; 1.1 在 zookeeper 的 conf 目录下&#xff0c;创建 zk_server_jaas.conf 文件&#xff0c;内容如下 Server {org.apache.kafka.common.security.plain.PlainLoginModule requiredusernam…

20250528-C#知识:函数简介及函数重载

C#知识&#xff1a;函数简介及函数重载 本文主要介绍函数参数和函数重载相关的知识点 1、函数 函数一般写在类中 一般函数调用 static int Add(int num, int value){num value;return num;}//一般函数调用&#xff0c;发生值类型参数的复制int num 1;Add(num, 1); //调用…