黑马机器学习day1

1.sklearn数据集

sklearn.datasets

datasets.load_*()        获取小规模的数据集

datasets.fetch_*(data_home=None)        获取大规模数据集        函数的第一个参数是data_home,标识数据集下载目录,默认/scikit_learn_data/

1.1sklearn小数据集

sklearn.datasets.load_iris()

1.2sklearn大数据集

sklearn.datasets.fetch_20newsgroups(data_home=None) 

1.3数据集的返回值

datasets.base.Bunch(继承自字典)

disk["ket"] = values

bunch.key = valuse

from sklearn.datasets import load_irisdef datasets_demo():"""sklearn数据集使用:return:"""#获取数据集iris = load_iris()print("鸢尾花数据集:\n", iris)print("查看数数据集描述:\n",iris["DESCR"])print("查看特征值的名字:\n", iris.feature_names)print("查看特征值:\n", iris.data, iris.data.shape)return Noneif __name__ == "__main__":#sklearn数据集的使用datasets_demo()

data:特征数据数组,是[n_samples * n_features]的二维numpy.ndarry数组
target:标签数组,是n_samples的一维numpy.ndarry数组
DESCR:数据描述
feature_names:特征名,新闻数据,手写数字、回归数据集没有
target_names:标签名

1.4.数据集的划分

训练数据:用于训练,构建模型

测试数据:在模型检验时使用,用于评估模型是否有效

        测试集 20%~30%

数据集划分api

sklearn.model_selection.train_test_split(arrays, *options)

x 数据集的特征值
y 数据集的标签值
test_size测试集的大小,一般为float
random_state随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同
return训练集特征值,测试集特征值,训练集目标值,测试集目标值

return      x_train,       x_test,                 y_train,           y_test

from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, train_size = 0.2, random_state = 22)print("训练集的特征值:\n",x_test,x_test.shape)

2.特征工程介绍

算法 特征工程

pandas 数据清洗,数据处理

sklearn 特征工程

2.1特征抽取/特征提取

sklearn.feature_extraction

机器学习算法 - 统计方法 - 数学公式

文本类型 - > 数值

将任意数据(文本或土象)转换为可用于机器学习的数字特征

字典特征提取(特征离散化)

文本特征提取

图像特征提取(深度学习再介绍)

2.1.1字典特征提取

字典特征提取 - 类别 -> one -hot编码

作用:对字典数据进行特征值化

sklearn.feature_extraction.DictVectorizer(sparse=True, …)

vector 数学:向量         物理:矢量

矩阵 matrix 二位数字

向量 vector 一维数组

父类:转换器类

返回sparse矩阵(sparse稀疏)将非零值 按位置表示出来

                                                   节省内存 提高加载效率

DictVectorizer.fit_transform(X), X:字典或者包含字典的迭代器返回值,返回sparse矩阵
DictVectorizer.inverse_transform(X), X:array数组或者sparse矩阵 返回值:转换之前数据格式
DictVectorizer.get_feature_names_out():返回类别名称(新版)

 

from sklearn.feature_extraction import DictVectorizerdef dict_demo():"""字典特征抽取:return:"""data = [{'city':'北京', 'temperature':100},{'city':'上海', 'temperature':60},{'city':'深圳', 'temperature':30}]# 1.实例化一个转换器类transfer = DictVectorizer(sparse=False)# 2、调用fit_transform()data_new = transfer.fit_transform(data)print("data_new:\n", data_new)print("特征名字:\n", transfer.get_feature_names_out())return Noneif __name__ == "__main__":# 代码2:字典特征抽取dict_demo()

2.1.2字典提取应用场景:

        1.pclass,sex 数据集当中类别特征比较多

                1.将数据集的特征 -> 字典类型

                2.DictVectorizer转换

        2。本身拿到的数据就是字典类型

2.2文本特征提取

单词作为特征

句子,短语,单词,字母

特征:特征词

方法1:CountVectorizer 统计样本特征词出现的个数

        stop_words停用的

        关键词:在某一个类别的文章出现的次数很多,但是在其他类别的文章出现的次数少

sklearn.feature_extraction.text.CountVectorizer(stop_words=[]):返回词频矩阵

CountVectorizer.fit_transform(X),X:文本或者包含文本字符串的可迭代对象,返回值:返回sparse矩阵
CountVectorizer.inverse_transform(X),X:array数组或者sparse矩阵,返回值:转换之前数据格
CountVectorizer.get_feature_names_out():返回值:单词列表

 

from sklearn.feature_extraction.text import CountVectorizerdef count_demo():"""文本特征抽取:CountVectorizer:return:"""data = ['life is short,i like like python','life is too long,i dislike python']# 1、实例化一个转换器类transfer = CountVectorizer()# 2、调用fit_transformdata_new = transfer.fit_transform(data)print("data_new:\n", data_new.toarray())print("特征名字:\n", transfer.get_feature_names_out())return None
if __name__ == "__main__":#代码3: 文本的特征抽取:CountVectorizercount_demo()

中文:不支持单个中字

def count_chinese_demo():"""中文文本特征抽取:CountVectorizer:return:"""data = ['我 爱 北京 天安门','天安门 上 太阳 升']# 1、实例化一个转换器类transfer = CountVectorizer()# 2、调用fit_transformdata_new = transfer.fit_transform(data)print("data_new:\n", data_new.toarray())print("特征名字:\n", transfer.get_feature_names_out())return None
if __name__ == "__main__":# 代码4: 中文文本特征抽取:CountVectorizercount_chinese_demo()

中字分割

def cut_word(text):"""进行中文分词:”我爱北京天安门“->”我 爱 北京 天安门“:param text::return:"""return " ".join(list(jieba.cut(text)))def count_chinese_demo2():"""中文本特征抽取,自动分词:return:"""# 1.将中文文本进行分词data = ['一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。','我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。','如果只用一种方式了解某件事物,他就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。']data_new = []for sent in data:data_new.append(cut_word(sent))print(data_new)# 2、实例化一个转换器类transfer = CountVectorizer()# 3、调用fit_transformdata_final = transfer.fit_transform(data_new)print("data_new:\n", data_final.toarray())print("特征名字:\n", transfer.get_feature_names_out())return Noneif __name__ == "__main__":#代码5 中文本特征抽取,自动分词count_chinese_demo2()# 代码6:中文分词# print(cut_word("我爱北京天安门"))

方法2.TfidfVectorizer

Tf-idf  - 衡量一个词的重要程度

两个词 “经济” “肥肠” 

TF - 词频(term fequency ,tf)

IDF - 逆向文档频率

from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
import jiebadef tfidf_demo():"""用TF-IDF的方法进行文本特征抽取:return:"""data = ['一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。','我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。','如果只用一种方式了解某件事物,他就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。']data_new = []for sent in data:data_new.append(cut_word(sent))print(data_new)# 2、实例化一个转换器类transfer = TfidfVectorizer(stop_words=["一种","所以"])# 3、调用fit_transformdata_final = transfer.fit_transform(data_new)print("data_new:\n", data_final.toarray())print("特征名字:\n", transfer.get_feature_names_out())return Noneif __name__ == "__main__":#代码7 用TF-IDF的方法进行文本特征抽取tfidf_demo()

3.特征预处理 

什么是特征预处理:通过一些转换函数,将特征数据转换成更适合算法模型的特征数据的过程

为什么要进行归一化/标准化:特征的单位或者大小相差较大,或者某特征的方法相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征

3.1归一化

 sklearn.preprocessing.MinMaxScaler(feature_range=(0,1)…)
MinMaxScaler.fit_transform(X),

X:numpy array格式的数据[n_samples,n_features],

返回值:转换后的形式相同的array

import pandas as pd
from sklearn.preprocessing import MinMaxScalerdef minmax_demo():"""归一化:return:"""#1.获取数据data = pd.read_csv("D:\PyCharm\heima\dating.txt")# print("data:\n", data)data = data.iloc[:,:3]print("data:\n", data)#2.实例化一个转换器类transfer = MinMaxScaler()#3.调用fit_transformdata_new = transfer.fit_transform(data)print("data_new:\n", data_new)return Noneif __name__ == "__main__":minmax_demo()

结果 

 异常值:最大值或者最小值

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

3.2标准化

在这里插入图片描述

  • 对于归一化来说:如果出现异常点,影响了最大值和最小值,name结果显然会发生改变
  • 对于标准化来说,如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响不大,从而方差改变较小
  • 标准差:集中程度
  • 应用场景:在已有样本足够多的情况下比较稳定。适合现代嘈杂大数据场景

sklearn.perprocessing.StandradScaler()
处理之后,对每列来说,所有数据都聚集在均值为0附近,标准差为1
StandardScaler.fit_transform(X),

X;numpy array格式的数据[n_samples,n_features],

返回值:转化后的形状相同的array

import pandas as pd
from sklearn.preprocessing import StandardScalerdef stand_demo():"""标准化:return:"""#1.获取数据data = pd.read_csv("D:\PyCharm\heima\dating.txt")# print("data:\n", data)data = data.iloc[:,:3]print("data:\n", data)#2.实例化一个转换器类transfer = StandardScaler()#3.调用fit_transformdata_new = transfer.fit_transform(data)print("data_new:\n", data_new)return Noneif __name__ == "__main__":#标准化stand_demo()

4. 特征降维

ndarray

降低的对象是:二维数组。

降维就是在某些限定条件下,降低特征的个数,得到一组“不相关”主变量的过程

降维的两种方法:特征选择,主成分分析

4.1特征选择

定义:数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征

Filter(过滤式):方差选择法:低方差特征过滤

                              相关系数法-特征与特征之间的相关程度

Embedded(嵌入式):决策树,

                                       正则化,

                                       深度学习

4.1.1过滤式

模块

sklearn.feature_selection

低方差特征过滤

删除低方差的一些特征

  • 特征方差小:某个特征大多样本的值比较相近
  • 特征方差大:某个特征很多样本的值都有差别

sklearn.feature_selection.VArianceThreshold(threshold=0.0)
删除所有低方差特征
Variance.fit_transform(X),

X:numpy array格式的数据[m_sample,n_features],

返回值:训练集差异低于threadshold的特征将被删除。默认值是保留非零方差特征,即删除所有样本中具有相同值的特征
 

import pandas as pdfrom sklearn.feature_selection import VarianceThresholddef variance_demo():"""低方差特征过滤:return:"""# 1、获取数据data = pd.read_csv('factor_returns.csv')print('data:\n', data)data = data.iloc[:,1:-2]print('data:\n', data)# 2、实例化一个转换器类#transform = VarianceThreshold()transform = VarianceThreshold(threshold=5)# 3、调用fit_transformdata_new = transform.fit_transform(data)print("data_new\n", data_new, data_new.shape)return Noneif __name__ == "__main__":#过滤低方差特征variance_demo()

 4.1.2相关系数

皮尔逊相关系数(Pearson Correlation Coefficient):反映变量之间相关关系密切程度的统计指标

 在这里插入图片描述

相关系数的值介于-1与+1之间,即-1<=r<=+1。其性质如下:

当r>0时,表示两变量正相关;r<0时,两变量为负相关
当|r|=1时,表示两变量为完全相关;当r=0时,表示两变量间无相关关系
当0<|r|<1时,表示两变量存在一定程度的相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近0,表示两变量的线性相关越弱
一般可按三级划分:|r|<0.4为低度相关;0.4<=|r|<0.7为显著相关;0.7<=|r|<1为高维线性相关
 

from scipy.stats import pearsonr

  • x:(N.)array_like
  • y:(N.)array_like Returns:(Perason’s correlation coefficient, p-value)
  • import pandas as pdfrom sklearn.feature_selection import VarianceThreshold
    from scipy.stats import pearsonrdef variance_demo():"""低方差特征过滤:return:"""# 1、获取数据data = pd.read_csv('factor_returns.csv')print('data:\n', data)data = data.iloc[:,1:-2]print('data:\n', data)# 2、实例化一个转换器类#transform = VarianceThreshold()transform = VarianceThreshold(threshold=5)# 3、调用fit_transformdata_new = transform.fit_transform(data)print("data_new\n", data_new, data_new.shape)#计算某两个变量之间的相关系数r1 = pearsonr(data["pe_ratio"],data["pb_ratio"])print("相关系数:\n", r1)r2 = pearsonr(data["revenue"],data['total_expense'])print("revenue和total_expense的相关性:\n", r2)return Noneif __name__ == "__main__":#过滤低方差特征variance_demo()
    

  • 特征与特征之间相关性很高:

    • 1选取其中一个

    • 加权求和

    • 主成分分析 

4.1.3主成分分析

定义:高维数据转换为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
作用:是数据维数的压缩,尽可能降低原数据的维数(复杂度),损失少量信息
应用:回归分析或者聚类分析中

sklearn.decomposition.PCA(n_components=None)

将数据分解为较低维度空间
n_components:
小数:表示保留百分之多少的信息
整数:减少到多少特征
PCA.fit_transform(X),X:numpy array格式的数据[N_samples, n_features],

返回值:转换后指定维度的array

from sklearn.decomposition import PCAdef pca_demo():"""PCA降维:return:"""data = [[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]]#1.实例化一个转化器类transfer = PCA(n_components=0.95)#2.调用了fit_transferdata_new = transfer.fit_transform(data)print("data_new:\n", data_new)return Noneif __name__ == "__main__":#PCA降维pca_demo()

保留95%

 5.案例

探究用户对物品类别的喜好细分

用户 user_id

物品类别 aisle

1)需要将user_id和aisle放在同一表中

2)找到user_id和aisle关系 - 交叉表和透视表

3)特征冗余过多 -> PCA降维

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

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

相关文章

3dmax好用插件CG Magic专业版上线,批量渲染,智能优化

CG Magic是一款基于3ds Max深度开发的智能化辅助插件&#xff0c;上千项实用功能&#xff0c;降低渲染时长&#xff0c;节省时间和精力&#xff0c;最大程度简化工作流程&#xff0c;助力高效完成创作。 CG MAGIC是基于3ds Max深度开发的智能化辅助设计插件&#xff0c;目前有两…

JavaWeb 速通Cookie

目录 一、关于base标签 1.引入 : 2.介绍 : 3.实例 : 4.细节 : 二、Cookie的引入 1.会话技术 : 1 什么是会话技术&#xff1f; 2 会话技术用于解决什么问题&#xff1f; 2.Cookie介绍 1 Cookie有什么用&#xff1f; 2 Cookie通讯机制 三、Cookie的基本使用 1.创建Cookie…

Pandas 的Merge函数详解

在日常工作中&#xff0c;我们可能会从多个数据集中获取数据&#xff0c;并且希望合并两个或多个不同的数据集。这时就可以使用Pandas包中的Merge函数。在本文中&#xff0c;我们将介绍用于合并数据的三个函数 merge、 merge_ordered、 merge_asofmerge merge函数是Pandas中…

如何实现对主机的立体监控?

主机监控是保证系统稳定性和性能的重要环节之一&#xff0c;那应该如何实现对主机的立体监控&#xff1f; 本期EasyOps产品使用最佳实践&#xff0c;我们将为您揭晓&#xff1a; 主机应该如何分组和管理&#xff1f; 主机监控应该关注哪些关键性指标&#xff1f; 背 景 通…

MySQL建表和增添改查

1.创建一个名为mydb的数据库 mysql> show database mydb; 查询 mysql> show database mydb; 2.创建一个学生信息表 mysql> create table mydb.student_informtion( -> student_id int UNSIGNED NOT NULL PRIMARY KEY, //非空&#xff08;不允许为空&#xff0…

FastAPI(七)应用配置

目录 一、在apps下新建文件夹config 二、新建配置文件app_conf.py 一、在apps下新建文件夹config 二、新建配置文件app_conf.py from functools import lru_cachefrom pydantic.v1 import BaseSettingsclass AppConfig(BaseSettings):app_name: str "Windows10 插件&qu…

WGS_1984_UTM、WGS_1984_Mercator坐标转化为经纬度坐标python

1、遥感影像的PROJECTION有哪些 遥感影像常见的投影类型有很多&#xff0c;具体选择哪种投影方式取决于数据的特性和使用需求。以下列举了一些常见的遥感影像投影类型&#xff1a; UTM (Universal Transverse Mercator) 投影&#xff1a;最常见的投影类型之一&#xff0c;将地…

uboot详解

uboot入口 在PC机上引导程序一般由BIOS开始执行&#xff0c;然后读取硬盘中位于MBR(Main Boot Record&#xff0c;主引导记录)中的Bootloader(例如LILO或GRUB),并进一步引导操作系统的启动。然而在嵌入式系统中通常没有像BIOS那样的固件程序&#xff0c;因此整个系统的加载启动…

Unity之ShaderGraph 节点介绍 UV节点

UV节点 Flipbook&#xff08;翻页或纹理帧动画&#xff09; Polar Coordinates&#xff08;将输入 UV 的值转换为极坐标。&#xff09; Radial Shear&#xff08;径向剪切变形&#xff09; Rotate&#xff08;将UV 的值旋转&#xff09; Spherize&#xff08;鱼眼镜头的球形变…

Spring系列三:基于注解配置bean

文章目录 &#x1f497;通过注解配置bean&#x1f35d;基本介绍&#x1f35d;快速入门&#x1f35d;注意事项和细节 &#x1f497;自己实现Spring注解配置Bean机制&#x1f35d;需求说明&#x1f35d;思路分析&#x1f35d;注意事项和细节 &#x1f497;自动装配 Autowired&…

【基于IDEA + Spark 3.4.1 + sbt 1.9.3 + Spark MLlib 构建逻辑回归鸢尾花分类预测模型】

逻辑回归进行鸢尾花分类的案例 背景说明&#xff1a; 基于IDEA Spark 3.4.1 sbt 1.9.3 Spark MLlib 构建逻辑回归鸢尾花分类预测模型&#xff0c;这是一个分类模型案例&#xff0c;通过该案例&#xff0c;可以快速了解Spark MLlib分类预测模型的使用方法。 依赖 ThisBui…

maven 删除下载失败的包

本文介绍了当Maven包报红时&#xff0c;使用删除相关文件的方法来解决该问题。文章详细说明了_remote.repositories、.lastUpdated和_maven.repositories文件的作用&#xff0c;以及如何使用命令行删除这些文件。这些方法可以帮助开发者解决Maven包报红的问题&#xff0c;确保项…

Linux 中利用设备树学习Ⅳ

系列文章目录 第一章 Linux 中内核与驱动程序 第二章 Linux 设备驱动编写 &#xff08;misc&#xff09; 第三章 Linux 设备驱动编写及设备节点自动生成 &#xff08;cdev&#xff09; 第四章 Linux 平台总线platform与设备树 第五章 Linux 设备树中pinctrl与gpio&#xff08;…

OBD针脚定义参考

OBD定义的一种标准的参考&#xff0c;不同的车场有不同的定义&#xff0c;貌似没有统一。 在某宝上看到的ODB转db9的不同的线序&#xff1a; 1&#xff09;1/2/3/6几个针脚都是一样的&#xff0c;分别上下针脚对应。 2&#xff09;其中一种4/5/7/8也是上下对应的&#xff1b;另…

自动化处理,web自动化测试处理多窗口+切换iframe框架页总结(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 web 自动化之处理…

APP外包开发的学习流程

学习iOS App的开发是一项有趣和富有挑战性的任务&#xff0c;是一个不断学习和不断进步的过程。掌握基础知识后&#xff0c;不断实践和尝试新的项目将使您的技能不断提升。下面和大家分享一些建议&#xff0c;可以帮助您开始学习iOS App的开发。北京木奇移动技术有限公司&#…

小红书 KOL 种草执行策略揭秘:打造爆款产品,提升品牌影响力

随着互联网的普及和社交媒体的发展&#xff0c;小红书成为了众多年轻人购物决策的重要参考平台。小红书 KOL 种草作为一种新兴的营销方式&#xff0c;以其强大的传播力和影响力&#xff0c;越来越受到各大品牌的重视。本文伯乐网络传媒将给大家深入探讨小红书 KOL 种草的执行策…

mysql转sqlite3

在项目中需要将mysql迁移到sqlite3中&#xff0c;此时需要作数据转换 准备工作 下载mysql2sqlite转换工具 https://github.com/dumblob/mysql2sqlite/archive/refs/heads/master.zip 下载sqlite3 https://www.sqlite.org/download.html 转换 命令行中输入如下命令 1、cd …

海康威视摄像头二次开发_云台控制_视频画面实时预览(基于Qt实现)

一、项目背景 需求:需要在公司的产品里集成海康威视摄像头的SDK,用于控制海康威视的摄像头。 拍照抓图、视频录制、云台控制、视频实时预览等等功能。 开发环境: windows-X64(系统) + Qt5.12.6(Qt版本) + MSVC2017_X64(使用的编译器) 海康威视提供了设备网络SDK,设备网…

Zabbix监控系统详解及配置

前言 作为一个运维&#xff0c;需要会使用监控系统查看服务器状态以及网站流量指标&#xff0c;利用监控系统的数据去了解上线发布的结果&#xff0c;和网站的健康状态。利用一个优秀的监控软件&#xff0c;我们可以&#xff1a; 通过一个友好的界面进行浏览整个网站所有的服务…