python机器学习——机器学习相关概念 特征工程

news2024/9/22 1:27:00

目录

  • 机器学习
  • 特征工程
  • 1.特征抽取
  • 2.特征处理
    • 2.1 归一化:传统精确小数据
    • 2.2 标准化:大多数情况
  • 3.数据降维
    • 3.1特征选择
    • 3.2主成分分析PCA
  • 案例:超市订单分析


机器学习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
监督学习:输入数据有特征有标签,即有标准答案

  • 分类:k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络

  • 回归:线性回归、岭回归

  • 标注:隐马尔可夫模型 (不做要求)

无监督学习:输入数据有特征无标签,即无标准答案

  • 聚类:k-means

在这里插入图片描述
在这里插入图片描述

特征工程

特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性

在这里插入图片描述

1.特征抽取

通过演示得出结论:
• 特征抽取针对非连续型数据
• 特征抽取对文本等进行特征值化
字典特征抽取:对字典数据进行特征值化
One—hot编码

在这里插入图片描述

# 特征抽取
# 导入包
from sklearn.feature_extraction import DictVectorizer

def dictves():
    """
    字典数据处理
    :return:小王
    """
    #实例化
    dict=DictVectorizer(sparse=False)
    #调用fit_transform
    data=dict.fit_transform([{'city': '北京','temperature':100},{'city': '上海','temperature':60},{'city': '深圳','temperature':30}])
    print(data)
    return None
if __name__ == '__main__':
    dictves()

文本特征抽取:对文本数据进行特征值化

在这里插入图片描述
流程:

在这里插入图片描述

# 特征抽取
# 导入包
from sklearn.feature_extraction.text import CountVectorizer
def dictves():
    """
    字典数据处理
    :return:小王
    """
    #实例化
    dict=CountVectorizer()
    #调用fit_transform
    data=dict.fit_transform(["life is short,i like python","life is too long,i dislike python"])
    print(data.toarray())#sprase矩阵转换成数组
    print(dict.get_feature_names())
    return None

if __name__ == '__main__':
    dictves()

Jieba结巴分词:对三段话进行特征值化——流程

在这里插入图片描述

# 特征抽取# 导入包
from sklearn.feature_extraction.text import CountVectorizer
import jieba

def cutword():
    c11=jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")
    c21=jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
    c31=jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
    #转换成列表
    content1 = list(c11)
    content2 = list(c21)
    content3 = list(c31)
    #列表转换成字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)
    return c1,c2,c3

def hanzivec():
    """
    中文特征值化
    :return:小王
    """
    #实例化
    c1,c2,c3=cutword()
    dict=CountVectorizer()
    #调用fit_transform
    data=dict.fit_transform([c1,c2,c3])
    print(dict.get_feature_names())
    print(data.toarray())#sprase矩阵转换成数组
    return None

if __name__ == '__main__':
    hanzivec()

在这里插入图片描述
TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

在这里插入图片描述

# 特征抽取# 导入包
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
import jieba

def cutword():
    c11=jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")
    c21=jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")
    c31=jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
    #转换成列表
    content1 = list(c11)
    content2 = list(c21)
    content3 = list(c31)
    #列表转换成字符串
    c1 = ' '.join(content1)
    c2 = ' '.join(content2)
    c3 = ' '.join(content3)
    return c1,c2,c3

def hanzivec():
    """
    中文特征值化
    :return:小王
    """
    #实例化
    c1,c2,c3=cutword()
    dict=TfidfVectorizer()
    #调用fit_transform
    data=dict.fit_transform([c1,c2,c3])
    print(dict.get_feature_names())
    print(data.toarray())#sprase矩阵转换成数组
    return None

if __name__ == '__main__':
    hanzivec()

2.特征处理

在这里插入图片描述
在这里插入图片描述

2.1 归一化:传统精确小数据

在这里插入图片描述

from sklearn.preprocessing import MinMaxScaler
def mm():
    """
    归一化处理
    :return: None
    """
    mm = MinMaxScaler(feature_range=(2, 3))
    data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
    print(data)
    return None
if __name__ == '__main__':
    mm()

注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

在这里插入图片描述

2.2 标准化:大多数情况

在这里插入图片描述
在这里插入图片描述
在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

3.数据降维

维度:特征的数量

3.1特征选择

特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。

在这里插入图片描述在这里插入图片描述

from sklearn.feature_selection import VarianceThreshold

def seltz():
    """
       特征选择
       :return: None
       """
    mm = VarianceThreshold()
    data = mm.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])
    print(data)
    return None

if __name__ == '__main__':
    seltz()

3.2主成分分析PCA

本质:PCA是一种分析、简化数据集的技术
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
作用:可以削减回归分析或者聚类分析中特征的数量

在这里插入图片描述

from sklearn.decomposition import PCA

def pcaz():
    """
       PCA
       :return: None
       """
    mm = PCA(n_components=0.94)
    data = mm.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
    print(data)
    return None

if __name__ == '__main__':
    pcaz()

案例:超市订单分析

在这里插入图片描述
在这里插入图片描述

import pandas as pd
prior=pd.read_csv("F:\python\data\order_products__prior.csv")
products=pd.read_csv("F:\python\data\products.csv")
orders=pd.read_csv("F:\python\data\orders.csv")
aisles=pd.read_csv("F:\python/data/aisles.csv")
#合并四张表到一张表(用户——物品类别)
data1=pd.merge(prior,products,on=["product_id","product_id"])
data2=pd.merge(data1,orders,on=["order_id","order_id"])
data=pd.merge(data2,aisles,on=["aisle_id","aisle_id"])
#交叉表(特殊的分组工具)
cross=pd.crosstab(data["use_id"],data["aisles"])

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

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

相关文章

chatgpt赋能python:Python求累加求和指南

Python求累加求和指南 Python是一种简单而强大的编程语言,从事编程工作的人大多都对它有一定的了解。它具有开发复杂应用程序的强大功能,同时也可以被用作数据处理和分析等用途。其中一个最常见的任务就是累加求和,今天我们将介绍如何在Pyth…

Redis 集合相关命令

Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 集合 相关的命令,也就是关于 Sets 相关的命令,如下图。 上图中用红色圈中的部分,就是关于 集合 相关的命令。如果想要在 Redis …

JDBC小记——基础入门

目录 JDBC概念 JDBC入门 1. 导入数据库的驱动jar包 2. 加载驱动jar包 3. 获取连接对象 4. 获取操作对象 5.执行SQL语句 6.释放资源 IDEA连接数据库 结果集对象 登录练习 JDBC概念 Java DataBase Connectivity 即 Java数据库连接 JDBC,其实就是Java定义…

第7章 Scala集合

第7章 Scala集合 7.1 简介 ​ ​ scala.collection.immutable ​ scala.collection.mutable ​ 7.2 数组 ​ 不可变数组 package chapter07object Test01_ImmutableArray {def main(args: Array[String]): Unit {// 1. 创建数组val arr: Array[Int] new Array[Int](10…

【AUTOSAR】AUTOSAR开发工具链(二)----TASKING库的封装

1、集成工程 步骤: 拷贝模块代码: 将源工程的所有模块代码拷贝到库工程,将源工程拷贝一份,并删除不必要的文件作为释放工程,完成结果如下图: 源工程(左)VS库工程(中&am…

[CUDA][Ubuntu]如何卸载cuda和cudnn和nvidia driver

百度有很多牛鬼蛇神的办法,试了一晚上,都不行。 包括:通过安装方式卸载,我tm根本不知道当初这个机器是怎么安装的cuda,我怎么卸载??? 通过删除文件夹和自带uninstall程序&#xff…

安卓蓝牙协议数据包格式

本文解析蓝牙传输的数据包格式,目的是对蓝牙的各个层次的协议有更深的理解。 bit数据流格式 在讲数据报文之前,必须了解协议中对数据的BIT排序的规定,在协议中规定数据包或者PDU都是以Little Endian format(小端模式)存放,也就是…

数据库信息速递 - 将可观测性带到现代数据堆栈 (译)

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

Layui基础入门

一、引言 1.1 介绍 官网&#xff1a;<https://www.layui.com/ > 这个不维护了 看下面这个 https://www.layuiweb.com/ 在官网首页&#xff0c;可以很方便的下载LayUI LayUI 是一款经典模块化前端 UI 框架&#xff0c;我们只需要定义简单的HTML、CSS、JS即可实现很复杂的前…

小鲜肉语录

马上端午放假了&#xff0c;今天不聊技术&#xff0c;聊点轻松的。 一、 和老公、小鲜肉周末出去玩&#xff0c;路上闲聊。老公提到小鲜肉在他们班成绩大概是第四名。 我说&#xff1a;我小学五年级的时候我们我们班60个人我排第四。你们班不到30个人。这么算你成绩不如我小时候…

Qt编写跨平台的推流工具(支持win/linux/mac/嵌入式linux/安卓等)

一、前言 跨平台的推流工具当属OBS最牛逼&#xff0c;功能也是最强大的&#xff0c;唯一的遗憾就是多路推流需要用到插件&#xff0c;而且CPU占用比较高&#xff0c;默认OBS的规则是将对应画布中的视频画面和设定的音频一起重新编码再推流&#xff0c;意味着肯定占用不少CPU资…

【解决】笔记本电脑wifi无法访问网站的各种情况

本文适用于 mac 以及 windows 等操作系统 场景 手机可以连接wifi&#xff0c;电脑连接却无法访问左下角wifi图标为小地球可以使用app&#xff0c;无法访问网站其他 方式一 Win10任务栏中的网络变成小地球&#xff0c;无WIFI列表显示&#xff0c;应该&#xff1a; winR , 输入…

MATLAB计算程序运行所需的时间

在使用MATLAB进行计算时&#xff0c;用户有时需要了解程序运行所花费的四件&#xff0c;以此来评价程序的执行效率&#xff0c;从而对代码进行优化 可以使用3种方法来得到程序运行所需要的时间 1.使用tic和toc命令 将tic和toc命令相结合来得到程序的运行时间 ①tic命令&…

SAP CAP篇六:为CAP添加Fiori Elements程序(3)

本文目录 本系列之前的文章本篇之前的运行效果修改pom.xml添加新的Dependency更新plugin 添加新的Controller创建index目录添加UiIndexContentProviderFactory.java 添加resources运行结果更新UiIndexContentProviderFactory 代码库 (Gitcode) 本系列之前的文章 本系列之前的文…

文学创作的数学原理——5年文学阅读的思考

作者 | gongyouliu 编辑 | gongyouliu 我从2019年初开始阅读文学作品&#xff0c;到今年差不多5年了&#xff0c;至少也阅读了50本以上的世界名著了&#xff08;如果算「得到」听书上的文学作品&#xff0c;那么至少也有200本以上了&#xff09;&#xff0c;这里面绝大多数都是…

python(10):批量修改文件名

文章目录 1. 使用Python的字符串操作来去除文件名高位的多余零说明代码示例 2. 将文件夹中的文件重命名为递增的数字加上原始文件名的后缀代码运行前后&#xff1a; 1. 使用Python的字符串操作来去除文件名高位的多余零 说明 一个目录下的文件名是6位数字序号加上后缀的格式&…

PaddleSeg在Windows上的配置及人像分隔使用

PaddleSeg是基于飞桨PaddlePaddle开源的端到端图像分割套件&#xff0c;提供语义分割、交互式分割、Matting、全景分割四大分割能力。源代码地址&#xff1a;https://github.com/PaddlePaddle/PaddleSeg&#xff0c;license为Apache-2.0&#xff0c;最新发布版本为2.8。 Window…

借用jQuery发送Http请求的实现(内附源码)

文章目录 一、前言二、jQuery 介绍三、jQuery 下载四、jQuery 使用五、Http客户端DEMO实现 一、前言 最近在解决项目上前同事开发的视频播放器问题&#xff0c;视频播放器是用Qt开发&#xff0c;作为播放插件供Web调用。 播放器与Web的通信方式采用的是Http&#xff0c;数据格…

libevent(1)windows下安装libevent

Socket通信库libevent成熟、稳定、性能高&#xff0c;在unix和windows下都能使用&#xff0c;在证券交易领域也有不少成功的应用&#xff0c;已经用事实证明是非常棒的socket通信库。对我们目前交易系统的unix重构来说&#xff0c;是比较合适的选择 –– 坑少、在证券交易项目中…

Colors颜色代码对应表 | 常见颜色值的中英文对照及颜色值代码表Hex代码RGB代码

颜色代码对应表_颜色代码表大全——最全的颜色代码以及对应图片 Hex代码 RGB代码 关于颜色的英文&#xff0c;不仅仅有七个...... 一、常用颜色的英文名称&#xff1a; redcrimsonfirebrickdarkredbrownmaroonsiennasaddlebrownindianredrosybrownlightcoralsalmondarksalm…