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

news/2024/5/20 8:02:56 标签: 机器学习, python, 算法, 人工智能, 聚类

目录

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


机器学习

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

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

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

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

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

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

特征工程

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

在这里插入图片描述

1.特征抽取

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

在这里插入图片描述

python"># 特征抽取
# 导入包
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()

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

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

在这里插入图片描述

python"># 特征抽取
# 导入包
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结巴分词:对三段话进行特征值化——流程

在这里插入图片描述

python"># 特征抽取# 导入包
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作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

在这里插入图片描述

python"># 特征抽取# 导入包
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 归一化:传统精确小数据

在这里插入图片描述

python">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特征选择

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

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

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

在这里插入图片描述

python">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()

案例:超市订单分析

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

python">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.niftyadmin.cn/n/459206.html

相关文章

文件搜索引擎的搭建Elasticsearch+Fscrawler+SearchUI+Git+Nginx

文章目录 前言如何搭建文档搜索引擎服务器架构环境准备一、搭建Elasticsearch二、搭建Fscrawler三、搭建SearchUI服务四、定时拉取Git文件五、搭建Nginx文件下载服务器 前言 搭建一套文档搜索引擎。有时候,我们有一批文档,需要在这批文档中查找想要的内…

解决Vue前端项目打包部署到tomcat后浏览器F5刷新页面404问题

前后端分离项目,前端项目在ide中运行,浏览器直接按F5刷新和调试均未出现问题。 打包部署到tomcat之后,在浏览器F5刷新页面会出现404问题。 解决方案如下: 在路由配置文件中,找到如下代码,将 mode 修改为…

chatgpt赋能python:Python求绝对值:从初学者到高级工程师的必备知识

Python求绝对值:从初学者到高级工程师的必备知识 Python是一种有趣且功能强大的编程语言。它非常易于学习,同时又具有广泛的应用领域,比如Web开发、数据分析、机器学习和人工智能等。在Python的数学运算中,求绝对值是一个常见的需…

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

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

InstructGPT论文解读

介绍 上图可以看出InstructGPT(PPO-ptx)及变体(variant trained without pretraining mix)(PPO)显著优于GPT,1.3B的InstructGPT优于175B的GPT,SFT作为RLHF第一阶段的模型效果比GPT好。当然结果是由人来评价的。 RLHF包含三个步骤…

BeanShell:检查变量是否为null的正确方式

BeanShell是一个小型、免费、可嵌入的 Java 源代码 具有对象脚本语言功能的解释器,用 Java 编写。 BeanShell动态执行标准Java语法,并使用通用语法对其进行扩展 脚本编写便利性,适用于 Java 的轻量级脚本。 在Java中判断一个变量是否为null很…

iOS自动化环境搭建(超详细)

1.macOS相关库安装 libimobiledevice > brew install libimobiledevice 使用本机与苹果iOS设备的服务进行通信的库。 ideviceinstaller brew install ideviceinstaller 获取设备udid、安装app、卸载app、获取bundleid carthage > brew install carthage 第三方库…

常用的Windows黑窗口cmd命令

Windows 命令提示符(cmd)提供了许多命令,用于执行各种系统管理任务、文件操作、网络配置等。以下是一些常用的命令,按照功能进行分类: 1. 文件和目录操作命令: dir:列出当前目录中的文件和子目…