python基础学习10【哑变量处理、离散化(等宽法、等频法、基于聚类分析的方法)、fit()、聚类模型评价指标、 分类模型评价指标、ROC曲线】

news2024/12/23 10:45:58

哑变量处理

特点:对于一个类别型特征,若其取值有m个,则经过哑变量处理后就变成了m个二元特征,并且这些特征互斥,每次只有一个激活,这使得数据变得稀疏。

get_dummise()函数:

pd.get_dummies(data['dishes_name'])#进行哑变量处理

离散化【等宽法、等频法、基于聚类分析的方法】

某些模型算法,特别是某些分类算法如ID3决策树算法和Apriori算法等,要求数据是离散的,此时就需要将联系型特征(数值型)变换成离散型特征。

等宽法:

将数据的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定或者用户指定,与制作频率分布表类似;

对数据分布具有较高要求。

cut()函数:

pd.cut(data['amounts'],bins=5).value_counts()#划分为5类(取值不均匀)

等频法:

cut函数虽然不能够直接现实等频离散化,但是可以通过定义将相同数量的记录放进每个区间;

等频法离散化的方法相比较于等宽法离散化而言,避免了类分布不均匀的问题。

def samefreq(data,k):#等频法    w = data.quantile(np.arange(0,1+1/k,1/k))#前闭后开,步长1/k    return pd.cut(data,w)samefreq(data['amounts'],k=5).value_counts()#对离散化做一下统计

基于聚类分析的方法

一维聚类的方法:

将连续型数据用聚类算法(K-Means算法等)进行聚类;

处理聚类得到的簇,将合并到一个簇的连续型数据做同一标记;

聚类分析的离散化方法需要用户指定簇的个数,用来决定产生的区间数。

聚类:

聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组内样本最小化。

sklearn估计器:(拥有fit和predict两个方法)

fit():

实例:

def samefreq(data,k):#等频法    w = data.quantile(np.arange(0,1+1/k,1/k))#前闭后开,步长1/k    return pd.cut(data,w)samefreq(data['amounts'],k=5).value_counts()#对离散化做一下统计from sklearn.datasets import load_iris#导入鸢尾花数据from sklearn.cluster import KMeansdata = load_iris()#函数model = KMeans(n_clusters = 3).fit(data['data'])model.labels_#聚类标签(前50个都是0)model.labels_#聚类标签(前50个都是0)

import matplotlib.pyplot as pltfor i in range(3):    plt.scatter(data['data'][model.labels_==i,0],data['data'][model.labels_==i,1])#提取聚类标签为i的数据,只取前两列做图形绘制) plt.show()

聚类模型评价指标:

组内的对象相互之间是相似的,而不同组中的对象是不同的,即组内的相似性越大,组内差别越大,聚类效果就越好。

from sklearn.metrics import silhouette_scoresilhouette_score(data['data'],model.labels_)#0.5:聚类效果一般

from sklearn.metrics import silhouette_scorefor k in range(2,9):    model = KMeans(n_clusters = k).fit(data['data'])    print(k,silhouette_score(data['data'],model.labels_))#寻找最优k

(可以看到k取2时,聚类效果最好)

另外,jupyter里面这个警告(红色的块)不在显示的方法:

输入代码,然后运行就ok:

import warningswarnings.filterwarnings("ignore")

得到效果:

分类算法的实现过程

在数据分析领域,分类算法有很多,其原理千差万别,有基于样本距离的最近邻算法,有基于特征信息熵的决策树,有基于bagging的随机森林,有基于boosting的梯度提升分类树,但其实现过程相差不大。

from sklearn.datasets import load_breast_cancerdata = load_breast_cancer()x=data['data']y=data['target']

from sklearn.model_selection import train_test_split#划分训练集、测试集x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)#测试集占总比例的百分之20#模型预处理x_train.shapex_train.max()#查看最大值import numpy as npnp.int32(x_train.max(axis=0))#每一列的最大值x_train.min()from sklearn.preprocessing import StandardScaler#预处理model = StandardScaler().fit(x_train)x_train_ss=model.transform(x_train)x_test_ss=model.transform(x_test)x_train_ss.max(axis=0)#分类模型构建from sklearn.svm import SVCmodel = SVC().fit(x_train_ss,y_train)y_pre=model.predict(x_test_ss)#构建好的数据

分类模型的评价指标

分类模型对测试集进行预测而得出的准确率并不能很好地反应模型的性能,为了有效判断一个预测模型的性表现,需要结合真实值,计算出精确率、召回率、F1值和Cohen's Kappa系数等指标来衡量。

from sklearn.metrics import recall_score,precision_score,f1_score,roc_curveprint(recall_score(y_test,y_pre))#召回率print(precision_score(y_test,y_pre))#准确率(与召回率相反)print(f1_score(y_test,y_pre))

(sklearn的metrics模块还提供了一个能够输出分类模型评价报告的函数classfication_report.)

ROC曲线

fpr,tpr,thresholds=roc_curve(y_test,y_pre)#假正率、真正率、预测import matplotlib.pyplot as pltplt.plot(fpr,tpr)plt.show()#乳腺癌分类的ROC图

回归分析方法

分为学习和预测两个步骤。学习是通过训练样本数据来拟合回归方程;预测是利用学习过程中拟合出的回归方程,将测试数据放入方程中求解。

回归模型的性能评估不同于分类模型,虽然都是对照真实值进行评估,但由于回归模型的预测结果和真实值都是连续的,所以不能够求取precision|recall和F1值等评价指标。

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

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

相关文章

Ubuntu20.04安装ros系统,使用dvs_ros软件包

Ubuntu20.04安装ros系统 确保Ubuntu系统已经更新配置好合适的软件源 添加ros软件源: sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest…

2023省赛-运维-溯源取证-日志分析

2023省赛-运维-溯源取证-日志分析 一、概要 1、标题:日志分析 2、关键字:access.log日志分析 3、比赛:2023省赛 4、工具:awk、cat 二、开始 1、题目分析 apache或nginx的access.log分析。使用最多的就是awk命令和cat命令。 其…

Java中==和equals的区别,包装类对比、String和new String

对于这个问题,我们得了解基本类型和引用类型在内存中的结构,具体如下: 引用对象句柄访问: 引用对象直接指针访问: 可以看出,无论哪种方式访问基本类型和引用类型的实例数据,基本类型的内存上是…

Spring Framework远程代码执行漏洞(CVE-2022-22965)

Spring Framework远程代码执行漏洞(CVE-2022-22965) 一、漏洞描述 springframework 是spring 里面的一个基础开源框架,主要用于javaee的企业开发。 2022年3月30日,Spring框架曝出RCE 0day漏洞,攻击者通过该漏洞可远…

计网之基础篇

因特网协议概述 常用协议应用层HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、DNS(域名系统)、DHCP(动态主机配置协议)、SNMP&#xff…

erlang安装问题(State machine user_ dru terminating)

输入erl 出现错误 State machine user_ dru terminating 主要原因是安装的erlang版本太高导致,建议选择对应rabbitmq并且是中版本的。新版本会有各种各样适配问题。如果现在26 建议选用25中间 对应rabbitmq低一个版本,稳定性更好

螺旋矩阵(顺时针遍历矩阵)

leetcode 54.螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 和剑指office29题相似; 思路:既然是顺时针遍历一圈,那么我们就分别从上边,右边,下…

SQL-游标-更新删除-多列指向

--切换数据库 use MyDatabase--创建游标(scroll:滚动游标) declare mycur cursor scroll for select EmpNo from Employee --打开游标 open mycur --关闭游标 close mycur --删除游标 deallocate mycur--提取第一行 --利用游标进行数据的修改 fetch absolute 2 from…

【django中处理静态的数据 css js img】

django中处理静态的数据 css js img 1.创建django项目2.打开项目3.配置settingpy中找到STATIC_URL3.1静态资源 4.创建静态资源文件夹5.开启服务6. 网页请求7.使用模板 进行编写 并请求8.在模板中进行 图片的请求9.模板中使用动态url {% static %}10 static的 动态url加载 1.创建…

C++读取易语言字节集图片opencv识别滑块

易语言字节集在C中其实是字节数组的形式,这边做的是一个本地滑块识别的,识别已经实现,主要解决读入字节集的问题,因为图片的大小问题,直接传字节集恐怕不行,所以在易语言处理图片,然后在内容中C…

软考高级系统架构设计师(九) 作文模板-微服务架构(待继续完善)

目录 举一反三-论微服务架构及其应用 ps: 更多微服务信息 ps: 微服务与SOA区别 微服务架构举例 微服务的落地技术 微服务的技术可大致分为五类 举一反三-论微服务架构及其应用 论微服务架构及其应用 微服务提倡将单一应用程序划分成一组小的服务,服务之间互相…

vue 将登录后信息放入cookie中,后端请求接口携带

第一步 import Cookies from "js-cookie";//将需要的信息放入cookie Cookies.set("deptId", res.user.dept.deptId, { expires: 30 });引入cookies import Cookies from "js-cookie";// 查询参数queryParams: {deptName: undefined,status: un…

Rust语言从入门到入坑——(9)Rust 生命周期

文章目录 0、引入1、生命周期注释2、结构体中使用字符串切片引用3、静态生命周期4、泛型、特性与生命周期协同作战5、总结 0、引入 Rust 生命周期机制是与所有权机制同等重要的资源管理机制,之所以引入这个概念主要是应对复杂类型系统中资源管理的问题。 引用是对…

【云原生丶Docker】DockerFile完全指南

DockerFile构建过程 DockerFile 是Docker的一个配置文件,本质上来说它只是一个文本文件,它是用来构建Docker镜像的。DockerFile配置文件中包含了一系列的指令和配置信息,用于描述如何构建镜像以及如何运行容器。通过编写 Dockerfile&#xf…

【c++11】新的类功能和可变参数包

c11 新增默认成员函数类成员变量初始化关键字defaultdelete 委托构造 可变参数包递归展开参数包逗号表达式展开参数包 结语 新增默认成员函数 原来c类中,有6个默认成员函数: 构造函数析构函数拷贝构造函数拷贝赋值重载取地址函数const 取地址重载 默认…

将mp4视频推流rtsp,并转为http直播流,在前端显示

最近有个需求,在vue页面的video组件播放直播流,本来想用flv.js,但是必须要flv格式才行,所以还是用原生video播放http直播流。 1. 将本地mp4推流rtsp 下载并解压EasyDarwin,双击EasyDarwin.exe运行,在控制…

【python】web应用开发DRF框架

DRF 【python】web应用开发DRF框架 Django rest_framework, 简称 drf, 可以更方便的使用django写出符合 RESTful 规范的接口, (缩减编写api接口的代码) Django REST framework是一个建立在Django基础之上的Web应用开发框架(Django的一个app),可以快速的开发REST A…

【IMX6ULL驱动开发学习】12.Linux驱动之设备树

承接上一篇博客 【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想(学习设备树过渡部分) 代码获取:https://gitee.com/chenshao777/imx6-ull_-drivers 我后面将三个层合并了(实际上只有前两层),合并…

【Java入门】注释、关键字、常量、变量、数据类型

注释: 作用 : 可以记录代码所实现的功能,方便程序员或代码编写者阅读代码以及方便他人更好理解代码 注释分类: 单行注释 格式: //注释信息多行注释 格式: /注释信息/文档煮熟 格式:/** 注释信息*/ /***…

TCP的socket API

1、核心类 ServerSocket :服务器使用的socket Socket : 服务器和客户端都会使用的socket accept进行的工作是拉客 对应操作系统来说,建立TCP连接是内核的工作 accept要干的就是等连接建立好了,把这个连接给拿到应用程序中。 如果当前连接…