当前位置: 首页 > news >正文

中恒建设职业技术培训学校网站网站开发前端课程

中恒建设职业技术培训学校网站,网站开发前端课程,哪家网络营销好,榆林市中小企业融资服务平台四 特征工程 1 特征工程概念 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 …四 特征工程 1 特征工程概念 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 特征工程步骤为 特征提取 如果不是像dataframe那样的数据要进行特征提取比如字典特征提取文本特征提取 无量纲化(预处理) 归一化标准化 降维 底方差过滤特征选择 主成分分析-PCA降维 2 特征工程API 实例化转换器对象转换器类有很多都是Transformer的子类, 常用的子类有: DictVectorizer 字典特征提取 CountVectorizer 文本特征提取 TfidfVectorizer TF-IDF文本特征词的重要程度特征提取 MinMaxScaler 归一化 StandardScaler 标准化 VarianceThreshold 底方差过滤降维 PCA 主成分分析降维转换器对象调用fit_transform()进行转换, 其中fit用于计算数据transform进行最终转换 fit_transform()可以使用fit()和transform()代替 data_new transfer.fit_transform(data) 可写成 transfer.fit(data) data_new transfer.transform(data)3 DictVectorizer 字典列表特征提取 稀疏矩阵 稀疏矩阵是指一个矩阵中大部分元素为零只有少数元素是非零的矩阵。在数学和计算机科学中当一个矩阵的非零元素数量远小于总的元素数量且非零元素分布没有明显的规律时这样的矩阵就被认为是稀疏矩阵。例如在一个1000 x 1000的矩阵中如果只有1000个非零元素那么这个矩阵就是稀疏的。 由于稀疏矩阵中零元素非常多存储和处理稀疏矩阵时通常会采用特殊的存储格式以节省内存空间并提高计算效率。 三元组表 (Coordinate List, COO)三元组表就是一种稀疏矩阵类型数据,存储非零元素的行索引、列索引和值: (行,列) 数据 (0,0) 10 (0,1) 20 (2,0) 90 (2,20) 8 (8,0) 70 表示除了列出的有值, 其余全是0 非稀疏矩阵稠密矩阵 非稀疏矩阵或称稠密矩阵是指矩阵中非零元素的数量与总元素数量相比接近或相等也就是说矩阵中的大部分元素都是非零的。在这种情况下矩阵的存储通常采用标准的二维数组形式因为非零元素密集分布不需要特殊的压缩或优化存储策略。 存储稀疏矩阵使用特定的存储格式来节省空间而稠密矩阵使用常规的数组存储所有元素无论其是否为零。计算稀疏矩阵在进行计算时可以利用零元素的特性跳过不必要的计算从而提高效率。而稠密矩阵在计算时需要处理所有元素包括零元素。应用领域稀疏矩阵常见于大规模数据分析、图形学、自然语言处理、机器学习等领域而稠密矩阵在数学计算、线性代数等通用计算领域更为常见。 在实际应用中选择使用稀疏矩阵还是稠密矩阵取决于具体的问题场景和数据特性。 (1) api 创建转换器对象: sklearn.feature_extraction.DictVectorizer(sparseTrue) 参数: sparseTrue返回类型为csr_matrix的稀疏矩阵 sparseFalse表示返回的是数组,数组可以调用.toarray()方法将稀疏矩阵转换为数组 转换器对象: 转换器对象调用fit_transform(data)函数参数data为一维字典数组或一维字典列表,返回转化后的矩阵或数组 转换器对象get_feature_names_out()方法获取特征名 (2)示例1 提取为稀疏矩阵对应的数组 from sklearn.feature_extraction import DictVectorizer data [{city:成都, age:30, temperature:200}, {city:重庆,age:33, temperature:60}, {city:北京, age:42, temperature:80}] #创建DictVectorizer对象 transfer DictVectorizer(sparseFalse) data_new transfer.fit_transform(data) # data_new的类型为ndarray #特征数据 print(data_new:\n, data_new) #特征名字 print(特征名字\n, transfer.get_feature_names_out())data_new:[[ 30. 0. 1. 0. 200.][ 33. 0. 0. 1. 60.][ 42. 1. 0. 0. 80.]] 特征名字[age city北京 city成都 city重庆 temperature]import pandas pandas.DataFrame(data_new, columnstransfer.get_feature_names_out())(3)示例2 提取为稀疏矩阵 from sklearn.feature_extraction import DictVectorizer data [{city:成都, age:30, temperature:200}, {city:重庆,age:33, temperature:60}, {city:北京, age:42, temperature:80}] #创建DictVectorizer对象 transfer DictVectorizer(sparseTrue) data_new transfer.fit_transform(data) #data_new的类型为class scipy.sparse._csr.csr_matrix print(data_new:\n, data_new) #得到特征 print(特征名字\n, transfer.get_feature_names_out())其中(row,col)数据中的col表示特征 本示例中0表示 ‘age’, 1表示‘city北京’,…… data_new:(0, 0) 30.0(0, 2) 1.0(0, 4) 200.0(1, 0) 33.0(1, 3) 1.0(1, 4) 60.0(2, 0) 42.0(2, 1) 1.0(2, 4) 80.0 特征名字[age city北京 city成都 city重庆 temperature](4)稀疏矩阵转为数组 稀疏矩阵对象调用toarray()函数, 得到类型为ndarray的二维稀疏矩阵 4 CountVectorizer 文本特征提取 (1)API sklearn.feature_extraction.text.CountVectorizer ​ 构造函数关键字参数stop_words值为list表示词的黑名单(不提取的词) fit_transform函数的返回值为稀疏矩阵 (2) 英文文本提取 from sklearn.feature_extraction.text import CountVectorizer import pandas as pd data[stu is well, stu is great, You like stu] #创建转换器对象, you和is不提取 transfer CountVectorizer(stop_words[you,is]) #进行提取,得到稀疏矩阵 data_new transfer.fit_transform(data) print(data_new)import pandas pandas.DataFrame(data_new.toarray(), index[第一个句子,第二个句子],columnstransfer.get_feature_names_out())(3) 中文文本提取 a.中文文本不像英文文本中文文本文字之间没有空格所以要先分词一般使用jieba分词. b.下载jieba组件, (不要使用conda) c.jieba的基础 import jieba data 在如今的互联网世界正能量正成为澎湃时代的大流量 data jieba.cut(data) data list(data) print(data) #[在, 如今, 的, 互联网, 世界, , 正, 能量, 正, 成为, 澎湃, 时代, 的, 大, 流量] data .join(data) print(data) #在 如今 的 互联网 世界 正 能量 正 成为 澎湃 时代 的 大 流量使用jieba封装一个函数功能是把汉语字符串中进行分词(会忽略长度小于等于1的词语,因为它们往往缺乏语义信息不能很好地表达文本的特征) import jieba def cut(text):return .join(list(jieba.cut(text)))data 在如今的互联网世界正能量正成为澎湃时代的大流量 data cut(data) print(data) #在 如今 的 互联网 世界 正 能量 正 成为 澎湃 时代 的 大 流量完整终合示例 import jieba from sklearn.feature_extraction.text import CountVectorizerdef cut(text):return .join(list(jieba.cut(text)))data [教育学会会长期间坚定支持民办教育事业,热忱关心、扶持民办学校发展,事业做出重大贡献] data_new [cut(v) for v in data]transfer CountVectorizer(stop_words[期间, 做出]) data_final transfer.fit_transform(data_new)print(data_final.toarray())#把非稀疏矩阵转变为稀疏矩阵 print(transfer.get_feature_names_out())#import pandas as pd pd.DataFrame(data_final.toarray(), columnstransfer.get_feature_names_out())import pandas mylist [] for i in range(len(data)):print(第str(i)名)mylist.append(第str(i)句)pandas.DataFrame(data_final.toarray(), indexmylist, columnstransfer.get_feature_names_out())5 TfidfVectorizer TF-IDF文本特征词的重要程度特征提取 (1) 算法 词频(Term Frequency, TF), 表示一个词在当前篇文章中的重要性 逆文档频率(Inverse Document Frequency, IDF), 反映了词在整个文档集合中的稀有程度 (2) API sklearn.feature_extraction.text.TfidfVectorizer() ​ 构造函数关键字参数stop_words表示词特征黑名单 fit_transform函数的返回值为稀疏矩阵 (3) 示例 代码与CountVectorizer的示例基本相同,仅仅把CountVectorizer改为TfidfVectorizer即可 示例中data是一个字符串list, list中的第一个元素就代表一篇文章. import jieba import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizerdef cut_words(text):return .join(list(jieba.cut(text)))data [教育学会会长期间坚定支持民办教育事业, 扶持民办,学校发展事业,事业做出重大贡献] data_new [cut_words(v) for v in data]transfer TfidfVectorizer(stop_words[期间, 做出,重大贡献]) data_final transfer.fit_transform(data_new)pd.DataFrame(data_final.toarray(), columnstransfer.get_feature_names_out())from sklearn.feature_extraction.text import CountVectorizertransfer CountVectorizer(stop_words[期间, 做出,重大贡献]) data_final transfer.fit_transform(data_new)pd.DataFrame(data_final.toarray(), columnstransfer.get_feature_names_out())6 无量纲化-预处理 无量纲即没有单位的数据 无量纲化包括归一化和标准化, 为什么要进行无量纲化呢? 这是一个男士的数据表: 编号id身高 h收入 s体重 w11.75(米)15000(元)120(斤)21.5(米)16000(元)140(斤)31.6(米)20000(元)100(斤) 假设算法中需要求它们之间的欧式距离, 这里以编号1和编号2为示例: L ( 1.75 − 1.5 ) 2 ( 15000 − 16000 ) 2 ( 120 − 140 ) 2 L \sqrt{(1.75-1.5)^2(15000-16000)^2(120-140)^2} L(1.75−1.5)2(15000−16000)2(120−140)2 ​ 从计算上来看, 发现身高对计算结果没有什么影响, 基本主要由收入来决定了,但是现实生活中,身高是比较重要的判断标准. 所以需要无量纲化. (1) MinMaxScaler 归一化 通过对原始数据进行变换把数据映射到指定区间(默认为0-1) 1归一化公式: 这里的 min 和 max 分别是每种特征中的最小值和最大值而 是当前特征值scaled 是归一化后的特征值。 若要缩放到其他区间可以使用公式xx*(max-min)min; 比如 [-1, 1]的公式为: 手算过程: 2归一化API sklearn.preprocessing.MinMaxScaler(feature_range) 参数:feature_range(0,1) 归一化后的值域,可以自己设定 fit_transform函数归一化的原始数据类型可以是list、DataFrame和ndarray, 不可以是稀疏矩阵 fit_transform函数的返回值为ndarray 3归一化示例 示例1原始数据类型为list from sklearn.preprocessing import MinMaxScaler data[[12,22,4],[22,23,1],[11,23,9]] #feature_range(0, 1)表示归一化后的值域,可以自己设定 transfer MinMaxScaler(feature_range(0, 1)) #data_new的类型为class numpy.ndarray data_new transfer.fit_transform(data) print(data_new)[[0.09090909 0. 0.375 ][1. 1. 0. ][0. 1. 1. ]]示例2原始数据类型为DataFrame from sklearn.preprocessing import MinMaxScaler import pandas as pd; data[[12,22,4],[22,23,1],[11,23,9]] data pd.DataFrame(datadata, index[一,二,三], columns[一列,二列,三列]) transfer MinMaxScaler(feature_range(0, 1)) data_new transfer.fit_transform(data) print(data_new)示例3原始数据类型为 ndarray from sklearn.feature_extraction import DictVectorizer from sklearn.preprocessing import MinMaxScalerdata [{city:成都, age:30, temperature:200}, {city:重庆,age:33, temperature:60}, {city:北京, age:42, temperature:80}] transfer DictVectorizer(sparseFalse) data transfer.fit_transform(data) #data类型为ndarray print(data)transfer MinMaxScaler(feature_range(0, 1)) data transfer.fit_transform(data) print(data)4缺点 最大值和最小值容易受到异常点影响所以鲁棒性较差。所以常使用标准化的无量钢化 (2)StandardScaler 标准化 在机器学习中标准化是一种数据预处理技术也称为数据归一化或特征缩放。它的目的是将不同特征的数值范围缩放到统一的标准范围以便更好地适应一些机器学习算法特别是那些对输入数据的尺度敏感的算法。 1标准化公式 最常见的标准化方法是Z-score标准化也称为零均值标准化。它通过对每个特征的值减去其均值再除以其标准差将数据转换为均值为0标准差为1的分布。这可以通过以下公式计算: 其中z是转换后的数值x是原始数据的值μ是该特征的均值σ是该特征的标准差 2 标准化 API sklearn.preprocessing.StandardScale 与MinMaxScaler一样原始数据类型可以是list、DataFrame和ndarray fit_transform函数的返回值为ndarray, 归一化后得到的数据类型都是ndarray from sklearn.preprocessing import StandardScale #不能加参数feature_range(0, 1) transfer StandardScaler() data_new transfer.fit_transform(data) #data_new的类型为ndarray3标准化示例 import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler # 1、获取数据 df_data pd.read_csv(src/dating.txt) print(type(df_data)) #class pandas.core.frame.DataFrame print(df_data.shape) #(1000, 4)# 2、实例化一个转换器类 transfer StandardScaler()# 3、调用fit_transform new_data transfer.fit_transform(df_data) #把DateFrame数据进行归一化 print(DateFrame数据被归一化后:\n, new_data[0:5])nd_data df_data.values #把DateFrame转为ndarray new_data transfer.fit_transform(nd_data) #把ndarray数据进行归一化 print(ndarray数据被归一化后:\n, new_data[0:5])nd_data df_data.values.tolist() #把DateFrame转为list new_data transfer.fit_transform(nd_data) #把ndarray数据进行归一化 print(list数据被归一化后:\n, new_data[0:5])class pandas.core.frame.DataFrame (1000, 4) DateFrame数据被归一化后:[[ 0.33193158 0.41660188 0.24523407 1.24115502][-0.87247784 0.13992897 1.69385734 0.01834219][-0.34554872 -1.20667094 -0.05422437 -1.20447063][ 1.89102937 1.55309196 -0.81110001 -1.20447063][ 0.2145527 -1.15293589 -1.40400471 -1.20447063]] ndarray数据被归一化后:[[ 0.33193158 0.41660188 0.24523407 1.24115502][-0.87247784 0.13992897 1.69385734 0.01834219][-0.34554872 -1.20667094 -0.05422437 -1.20447063][ 1.89102937 1.55309196 -0.81110001 -1.20447063][ 0.2145527 -1.15293589 -1.40400471 -1.20447063]] list数据被归一化后:[[ 0.33193158 0.41660188 0.24523407 1.24115502][-0.87247784 0.13992897 1.69385734 0.01834219][-0.34554872 -1.20667094 -0.05422437 -1.20447063][ 1.89102937 1.55309196 -0.81110001 -1.20447063][ 0.2145527 -1.15293589 -1.40400471 -1.20447063]]自己实现标准化来测试 #数据 datanp.array([[5],[20],[40],[80],[100]]) #API实现标准化 data_newsscaler.fit_transform(data) print(API实现:\n,data_news)#标准化自己实现 munp.mean(data) sum0 for i in data:sum((i[0]-mu)**2) dnp.sqrt(sum/(len(data))) print(自己实现:\n,(data[3]-mu)/d)4 注意点 在数据预处理中特别是使用如StandardScaler这样的数据转换器时fit、fit_transform和transform这三个方法的使用是至关重要的它们各自有不同的作用 fit: 这个方法用来计算数据的统计信息比如均值和标准差在StandardScaler的情况下。这些统计信息随后会被用于数据的标准化。你应当仅在训练集上使用fit方法。 fit_transform: 这个方法相当于先调用fit再调用transform但是它在内部执行得更高效。它同样应当仅在训练集上使用它会计算训练集的统计信息并立即应用到该训练集上。 transform: 这个方法使用已经通过fit方法计算出的统计信息来转换数据。它可以应用于任何数据集包括训练集、验证集或测试集但是应用时使用的统计信息必须来自于训练集。 当你在预处理数据时首先需要在训练集X_train上使用fit_transform这样做可以一次性完成统计信息的计算和数据的标准化。这是因为我们需要确保模型是基于训练数据的统计信息进行学习的而不是整个数据集的统计信息。 **一旦scaler对象在X_train上被fit它就已经知道了如何将数据标准化。**这时对于测试集X_test我们只需要使用transform方法因为我们不希望在测试集上重新计算任何统计信息也不希望测试集的信息影响到训练过程。如果我们对X_test也使用fit_transform测试集的信息就可能会影响到训练过程。 总结来说:我们常常是先fit_transform(x_train)然后再transform(x_text)
http://www.w-s-a.com/news/634709/

相关文章:

  • 上海网站建设网站开发亚洲杯篮球直播在什么网站
  • 网站做seo第一步h5制作公司
  • 软件外包产业网络优化工程师是干嘛的
  • 怎么用服务器做局域网网站河西网站建设
  • 工业企业网站建设企业门户网站解决方案
  • 网站运营与管理论文网上商城都有哪些
  • 常德网站制作建设毕设电商网站设计
  • 西安企业模板建站福州+网站建设+医疗
  • 邹城市住房和建设局网站仙居网站建设贴吧
  • 为什么要用CGI做网站网站手机优化显示
  • 做袜子娃娃的网站做网站要学的东西
  • 类qq留言网站建设企业做网站公司
  • 如何查到网站建设三足鼎立小程序开发公司
  • 交互网站怎么做的wordpress ssl 错位
  • 公司宣传 如何做公司网站郑州做网站那
  • 衡阳市城乡建设协会官方网站免费游戏网站模板
  • 小程序怎么做优惠券网站合肥建站网站平台
  • 民制作网站价格株洲企业seo优化
  • 网站建设 岗位职责网站建设百度索引
  • 网站建设的内容下拉网站导航用ps怎么做
  • 怎样做p2p网站海口免费自助建站模板
  • 给企业建设网站的流程图wordpress 添加子菜单
  • 企业网站带新闻发布功能的建站皋兰县建设局网站
  • 国内外做gif的网站wordpress数据库教程
  • 成都建站平台自己做一个网站需要多少钱
  • 景区旅游网站平台建设公司企业网站源码
  • 免费高清网站推荐喂来苏州网络科技有限公司
  • php做的大型网站有哪些备案博客域名做视频网站会怎么样
  • 去哪网站备案吗昭通网站建设
  • flash企业网站源码建筑材料采购网站