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

企业网站设计wordpress网页ui设计培训

企业网站设计wordpress,网页ui设计培训,健康生活网站开发系统背景,网络综艺节目策划方案文章目录先言一、特征工程概述二、特征提取1.字典特征提取#xff08;特征离散化#xff09;2.文本特征提取2.1英文文本提取2.2中文文本提取#xff08;jieba分词器#xff09;3.TfidfVectorizer TF-IDF文本特征词的重要程度特征提取三、数据归一化与标准化1.MinMaxScaler … 文章目录先言一、特征工程概述二、特征提取1.字典特征提取特征离散化2.文本特征提取2.1英文文本提取2.2中文文本提取jieba分词器3.TfidfVectorizer TF-IDF文本特征词的重要程度特征提取三、数据归一化与标准化1.MinMaxScaler 归一化Min-Max Scaling适合分布有界的数据2.normalize归一化Normalize Scaling适合分布有界的数据3.标准化Z-Score ScalingStandardScaler适合高斯分布数据四、特征选择与降维1.方差阈值法VarianceThreshold剔除低方差特征2.皮尔逊相关系数Pearson correlation coefficient)3.主成分分析sklearn.decomposition.PCA结语先言 在机器学习项目中数据和特征决定了模型性能的上限而优秀的特征工程能让我们逼近这个上限。特征工程是从原始数据中提取、转换和优化特征的过程直接影响模型的准确性、泛化能力和训练效率。 本文将深入探讨特征工程的核心技术包括字典特征提取DictVectorizer、文本特征处理词袋模型、TF-IDF、数据标准化与归一化StandardScaler, MinMaxScaler、特征降维低方差过滤、PCA主成分分析。通过理论讲解与代码实战帮助你掌握如何将原始数据转化为高质量特征为机器学习模型提供更强大的输入 一、特征工程概述 什么是特征工程为什么它如此重要 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 特征工程步骤为 特征提取 如果不是像dataframe那样的数据要进行特征提取比如字典特征提取文本特征提取无量纲化(预处理) 归一化标准化 降维 底方差过滤特征选择主成分分析-PCA降维 二、特征提取 特征提取旨在从原始特征中提取出新的、更具表达力的特征。 1.字典特征提取特征离散化 sklearn.feature_extraction.DictVectorizer(sparseTrue)参数: sparseTrue返回类型为csr_matrix的稀疏矩阵 sparseFalse表示返回的是数组,数组可以调用.toarray()方法将稀疏矩阵转换为数组 转换器对象: 转换器对象调用fit_transform(data)函数参数data为一维字典数组或一维字典列表,返回转化后的矩阵或数组 转换器对象get_feature_names_out()方法获取特征名 代码如下示例 from sklearn.feature_extraction import DictVectorizer import pandas as pd data [{city:成都, age:30, temperature:200}, {city:重庆,age:33, temperature:60}, {city:北京, age:42, temperature:80}] #创建字典列表特征提取对象 transfer DictVectorizer(sparseFalse) #调用fit_transform方法,获取转换后的特征数组 data_new transfer.fit_transform(data) #打印特征数组 print(data_new) #获取特性名称 print(transfer.get_feature_names_out())[[ 30. 0. 1. 0. 200.][ 33. 0. 0. 1. 60.][ 42. 1. 0. 0. 80.]] [age city北京 city成都 city重庆 temperature]当sparseTrue时返回一个三元组的稀疏矩阵 #获取稀疏矩阵 transfer DictVectorizer(sparseTrue) data_new transfer.fit_transform(data) #返回一个三元组稀疏矩阵 print(data_new)返回数据结果如下 Compressed Sparse Row sparse matrix of dtype float64with 9 stored elements and shape (3, 5)Coords Values(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三元组表 (Coordinate List, COO)三元组表就是一种稀疏矩阵类型数据,存储非零元素的行索引、列索引和值: (行,列) 数据 (0,0) 10 (0,1) 20 (2,0) 90 (2,20) 8 (8,0) 70 表示除了列出的有值, 其余全是0 我们可以对三元组表进行转换为数组形式可上面的数组一致只不过通过三元组对数据进行获取可以节省资源示例代码 #对三元组矩阵进行转换 data_new data_new.toarray() print(data_new) print(transfer.get_feature_names_out())返回结果如下 [[ 30. 0. 1. 0. 200.][ 33. 0. 0. 1. 60.][ 42. 1. 0. 0. 80.]] [age city北京 city成都 city重庆 temperature] 补充稀疏矩阵 稀疏矩阵 稀疏矩阵是指一个矩阵中大部分元素为零只有少数元素是非零的矩阵。在数学和计算机科学中当一个矩阵的非零元素数量远小于总的元素数量且非零元素分布没有明显的规律时这样的矩阵就被认为是稀疏矩阵。例如在一个1000 x 1000的矩阵中如果只有1000个非零元素那么这个矩阵就是稀疏的。 由于稀疏矩阵中零元素非常多存储和处理稀疏矩阵时通常会采用特殊的存储格式以节省内存空间并提高计算效率。 2.文本特征提取 sklearn.feature_extraction.text.CountVectorizer​构造函数关键字参数stop_words值为list表示词的黑名单(不提取的词) fit_transform函数的返回值为稀疏矩阵 2.1英文文本提取 代码如下示例 from sklearn.feature_extraction.text import CountVectorizer import pandas as pd import jieba data[stu is well, stu is great, You like stu] #创建转换器 transfer CountVectorizer() #调用fit_transform方法进行提取 data_new transfer.fit_transform(data) #返回的数组数字代表词频 print(data_new.toarray()) #获取特征名称 print(transfer.get_feature_names_out()) #使用pandas创建字典列表 data pd.DataFrame(data_new.toarray(),columnstransfer.get_feature_names_out(),index[sentence1,sentence2]) print(data)返回结果 [[1 2 0 2 1 0][0 0 1 1 0 1]] [great is like stu well you]great is like stu well you sentence1 1 2 0 2 1 0 sentence2 0 0 1 1 0 12.2中文文本提取jieba分词器 代码如下示例 #中文文本提取 data [小明喜欢小张,小张喜欢小王,小王喜欢小李] #创建中文文本分割函数 def chinese_word_cut(mytext):return .join(jieba.cut(mytext)) data1 [chinese_word_cut(i) for i in data] # print(data1) #创建词频统计对象 transfer CountVectorizer() data_new transfer.fit_transform(data1) print(data_new.toarray()) print(transfer.get_feature_names_out())返回结果 [[1 1 1 0 0][1 1 0 0 1][1 0 0 1 1]] [喜欢 小张 小明 小李 小王]补充jieba是一个工具库可以通过pip下载jieba用于对中文进行自动分词对于自然语言方面一个不错的分词工具 3.TfidfVectorizer TF-IDF文本特征词的重要程度特征提取 词频(Term Frequency, TF), 表示一个词在当前篇文章中的重要性 逆文档频率(Inverse Document Frequency, IDF), 反映了词在整个文档集合中的稀有程度 代码与CountVectorizer的示例基本相同,仅仅把CountVectorizer改为TfidfVectorizer即可代码如下示例 import jieba import numpy as np from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.feature_extraction.text import CountVectorizer from sklearn.preprocessing import normalize def chinese_word_cut(mytext):return .join(jieba.cut(mytext)) data [量子纠缠是物理学中一种奇妙的现象两个粒子即使相隔遥远也能瞬间影响彼此的状态。,今天早上我吃了一个苹果然后去公园散步看到很多人在跳舞。,䴖䴗䴘䴙䴚䴛是一些非常罕见的汉字它们属于 Unicode 扩展字符集。 ] #通过jieba对数据进行分词 data1 [chinese_word_cut(i) for i in data] #创建文字稀有度统计对象 transfer TfidfVectorizer() #调用对象方法转换数据 data_new transfer.fit_transform(data1) print(data_new.toarray()) print(transfer.get_feature_names_out()) data_new MyTfidfVectorizer(data1) print(data_new)提取结果 [[0. 0. 0. 0.25819889 0.25819889 0.0. 0.25819889 0.25819889 0. 0. 0.0.25819889 0.25819889 0. 0. 0. 0.0. 0. 0.25819889 0.25819889 0.25819889 0.258198890. 0.25819889 0.25819889 0.25819889 0. 0.0. 0.25819889 0.25819889 0. ][0. 0.31622777 0. 0. 0. 0.316227770.31622777 0. 0. 0. 0. 0.0. 0. 0.31622777 0. 0.31622777 0.316227770. 0.31622777 0. 0. 0. 0.0.31622777 0. 0. 0. 0. 0.316227770.31622777 0. 0. 0. ][0.33333333 0. 0.33333333 0. 0. 0.0. 0. 0. 0.33333333 0.33333333 0.333333330. 0. 0. 0.33333333 0. 0.0.33333333 0. 0. 0. 0. 0.0. 0. 0. 0. 0.33333333 0.0. 0. 0. 0.33333333]] [unicode 一个 一些 一种 两个 今天 公园 即使 奇妙 字符集 它们 属于 影响彼此 很多 扩展 散步 早上 汉字 然后 物理学 状态 现象 相隔 看到 瞬间 粒子纠缠 罕见 苹果 跳舞 遥远 量子 非常]自己函数实现重要程度特征提取有兴趣的可以看看 def MyTfidfVectorizer(data):#提取词频TFtransfer CountVectorizer()data_new transfer.fit_transform(data)TF data_new.toarray()#提取IDFIDF np.log((len(TF)1)/(np.sum(TF!0,axis0)1))1tf_idf TF*IDF#l2归一化tf_idf normalize(tf_idf,norml2)return tf_idf data_new MyTfidfVectorizer(data1) print(data_new)执行后连着的结果是一样的 三、数据归一化与标准化 通过对原始数据进行变换把数据映射到指定区间(默认为0-1) 归一化公式: 1.MinMaxScaler 归一化Min-Max Scaling适合分布有界的数据 这里的 min 和 max 分别是每种特征中的最小值和最大值而 是当前特征值scaled 是归一化后的特征值。 若要缩放到其他区间可以使用公式xx*(max-min)min; 比如 [-1, 1]的公式为: sklearn.preprocessing.MinMaxScaler(feature_range)参数:feature_range(0,1) 归一化后的值域,可以自己设定 fit_transform函数归一化的原始数据类型可以是list、DataFrame和ndarray, 不可以是稀疏矩阵 fit_transform函数的返回值为ndarray 代码如下示例 #获取数据集 iris load_iris() data iris.data[:5] print(data) #最大最小值归一化MinMaxScaler #创建MinMaxScaler对象 transfer1 MinMaxScaler() #对数据进行规划处理 data_new transfer1.fit_transform(data) print(data_new)这里是以鸢尾花数据为例 初始数据 [[5.1 3.5 1.4 0.2][4.9 3. 1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5. 3.6 1.4 0.2]]归一化后数据 [[1. 0.83333333 0.5 0. ][0.6 0. 0.5 0. ][0.2 0.33333333 0. 0. ][0. 0.16666667 1. 0. ][0.8 1. 0.5 0. ]]2.normalize归一化Normalize Scaling适合分布有界的数据 sklearn.preprocessing.normalize(data, norml2, axis1)norm表述normalize标准化的三种方式 1 L1归一化norml1绝对值相加作为分母,特征值作为分子 2 L2归一化norml2平方相加作为分母,特征值作为分子 3 max归一化normmaxmax作为分母,特征值作为分子 代码如下示例 #不用创建对象直接调用方法 #l1绝对值相加做分母 data_new normalize(data,norml1,axis1) print(data_new) #l2平方和做分母 data_new normalize(data,norml2,axis1) print(data_new) #max最大值做分母 data_new normalize(data,normmax,axis1) print(data_new)归一化效果 l1归一化 [[0.5 0.34313725 0.1372549 0.01960784][0.51578947 0.31578947 0.14736842 0.02105263][0.5 0.34042553 0.13829787 0.0212766 ][0.4893617 0.32978723 0.15957447 0.0212766 ][0.49019608 0.35294118 0.1372549 0.01960784]] l2归一化 [[0.80377277 0.55160877 0.22064351 0.0315205 ][0.82813287 0.50702013 0.23660939 0.03380134][0.80533308 0.54831188 0.2227517 0.03426949][0.80003025 0.53915082 0.26087943 0.03478392][0.790965 0.5694948 0.2214702 0.0316386 ]] max归一化 [[1. 0.68627451 0.2745098 0.03921569][1. 0.6122449 0.28571429 0.04081633][1. 0.68085106 0.27659574 0.04255319][1. 0.67391304 0.32608696 0.04347826][1. 0.72 0.28 0.04 ]]3.标准化Z-Score ScalingStandardScaler适合高斯分布数据 在机器学习中标准化是一种数据预处理技术也称为数据归一化或特征缩放。它的目的是将不同特征的数值范围缩放到统一的标准范围以便更好地适应一些机器学习算法特别是那些对输入数据的尺度敏感的算法。 1标准化公式 最常见的标准化方法是Z-score标准化也称为零均值标准化。它通过对每个特征的值减去其均值再除以其标准差将数据转换为均值为0标准差为1的分布。这可以通过以下公式计算: 其中z是转换后的数值x是原始数据的值μ是该特征的均值σ是该特征的 标准差 2 标准化 API sklearn.preprocessing.StandardScale与MinMaxScaler一样原始数据类型可以是list、DataFrame和ndarray fit_transform函数的返回值为ndarray, 归一化后得到的数据类型都是ndarray 代码示例 from sklearn.datasets import load_iris from sklearn.preprocessing import StandardScaler #获取数据集 iris load_iris() data iris.data[:5] #StandardScaler标准化 #创建标准化转换对象 transfer StandardScaler() #调用fit_transform data_new transfer.fit_transform(data) print(data_new)标准化效果 [[ 1.29399328 0.95025527 0. 0. ][ 0.21566555 -1.2094158 0. 0. ][-0.86266219 -0.34554737 -1.58113883 0. ][-1.40182605 -0.77748158 1.58113883 0. ][ 0.75482941 1.38218948 0. 0. ]]四、特征选择与降维 实际数据中,有时候特征很多,会增加计算量,降维就是去掉一些特征,或者转化多个特征为少量个特征 特征降维其目的:是减少数据集的维度同时尽可能保留数据的重要信息。 特征降维的好处: 减少计算成本在高维空间中处理数据可能非常耗时且计算密集。降维可以简化模型降低训练时间和资源需求。 去除噪声高维数据可能包含许多无关或冗余特征这些特征可能引入噪声并导致过拟合。降维可以帮助去除这些不必要的特征。 特征降维的方式: 特征选择 从原始特征集中挑选出最相关的特征 主成份分析(PCA) 主成分分析就是把之前的特征通过一系列数学计算形成新的特征新的特征数量会小于之前特征数量 1.方差阈值法VarianceThreshold剔除低方差特征 Filter(过滤式): 主要探究特征本身特点 特征与特征、特征与目标 值之间关联 方差选择法: 低方差特征过滤 如果一个特征的方差很小说明这个特征的值在样本中几乎相同或变化不大包含的信息量很少模型很难通过该特征区分不同的对象,比如区分甜瓜子和咸瓜子还是蒜香瓜子,如果有一个特征是长度,这个特征相差不大可以去掉。 计算方差对于每个特征计算其在训练集中的方差(每个样本值与均值之差的平方,在求平均)。设定阈值选择一个方差阈值任何低于这个阈值的特征都将被视为低方差特征。过滤特征移除所有方差低于设定阈值的特征 代码示例 from sklearn.datasets import load_iris from sklearn.feature_selection import VarianceThreshold import numpy as np iris load_iris() X iris.data[:10] y [1,1,1,0,0,0,1,0,1,1] print(X)#低反差过滤特征选择 #创建转换器对象 transfer1 VarianceThreshold(threshold0.01) data_new transfer1.fit_transform(X) print(data_new)特征过滤前 [[5.1 3.5 1.4 0.2][4.9 3. 1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5. 3.6 1.4 0.2][5.4 3.9 1.7 0.4][4.6 3.4 1.4 0.3][5. 3.4 1.5 0.2][4.4 2.9 1.4 0.2][4.9 3.1 1.5 0.1]]经过低方差过滤后 [[5.1 3.5 1.4][4.9 3. 1.4][4.7 3.2 1.3][4.6 3.1 1.5][5. 3.6 1.4][5.4 3.9 1.7][4.6 3.4 1.4][5. 3.4 1.5][4.4 2.9 1.4][4.9 3.1 1.5]]2.皮尔逊相关系数Pearson correlation coefficient) 皮尔逊相关系数Pearson correlation coefficient)是一种度量两个变量之间线性相关性的统计量。它提供了两个变量间关系的方向正相关或负相关和强度的信息。皮尔逊相关系数的取值范围是 [−1,1]其中 ρ1\rho1ρ1 表示完全正相关即随着一个变量的增加另一个变量也线性增加。ρ−1\rho-1ρ−1 表示完全负相关即随着一个变量的增加另一个变量线性减少。ρ0\rho0ρ0 表示两个变量之间不存在线性关系。 相关系数 ρ\rho ρ 的绝对值为0-1之间绝对值越大表示越相关当两特征完全相关时两特征的值表示的向量是 在同一条直线上当两特征的相关系数绝对值很小时两特征值表示的向量接近在同一条直线上。当相关系值为负数时表示负相关皮尔逊相关系数:pearsonr相关系数计算公式, 该公式出自于概率论 对于两组数据 {1,2,…,} 和 {1,2,…,}皮尔逊相关系数可以用以下公式计算 ρCos⁡(x,y)Dx⋅DyE[(x−Ex)(y−Ey)]Dx⋅Dy∑i1n(x−x~)(y−yˉ)/(n−1)∑i1n(x−xˉ)2/(n−1)⋅∑i1n(y−yˉ)2/(n−1)\rho\frac{\operatorname{Cos}(x, y)}{\sqrt{D x} \cdot \sqrt{D y}}\frac{E[(x_-E x)(y-E y)]}{\sqrt{D x} \cdot \sqrt{D y}}\frac{\sum_{i1}^{n}(x-\tilde{x})(y-\bar{y}) /(n-1)}{\sqrt{\sum_{i1}^{n}(x-\bar{x})^{2} /(n-1)} \cdot \sqrt{\sum_{i1}^{n}(y-\bar{y})^{2} /(n-1)}} ρDx​⋅Dy​Cos(x,y)​Dx​⋅Dy​E[(x−​Ex)(y−Ey)]​∑i1n​(x−xˉ)2/(n−1)​⋅∑i1n​(y−yˉ​)2/(n−1)​∑i1n​(x−x~)(y−yˉ​)/(n−1)​ xˉ\bar{x}xˉ和 yˉ\bar{y}yˉ​ 分别是和的平均值 |ρ|0.4为低度相关; 0.4|ρ|0.7为显著相关 0.7|ρ|1为高度相关 scipy.stats.personr(x, y) 计算两特征之间的相关性 返回对象有两个属性: statistic皮尔逊相关系数[-1,1]pvalue零假设(了解),统计上评估两个变量之间的相关性,越小越相关 代码示例 from sklearn.datasets import load_iris from scipy.stats import pearsonr import numpy as np iris load_iris() X iris.data[:10] y [1,1,1,0,0,0,1,0,1,1] #相关系数过滤特征选择 #将数据转为numpy数组提取每一列 del1 np.array(X)[:,0] print(del1) print(y) #pearsonr可以直接计算相关系数 r1 pearsonr(del1,y) #输出相关系数statistic 相关性负数值表示负相关正数表示正相关0表示不相关 print(r1.statistic) #输出相关系数pvalue 程度相关性pvalue的值越小则越相关 print(r1.pvalue)[5.1 4.9 4.7 4.6 5. 5.4 4.6 5. 4.4 4.9] [1, 1, 1, 0, 0, 0, 1, 0, 1, 1] -0.4135573338871735 0.23483566170378163.主成分分析sklearn.decomposition.PCA 用矩阵P对原始数据进行线性变换得到新的数据矩阵Z,每一列就是一个主成分, 如下图就是把10维降成了2维,得到了两个主成分 根据主成分的方差等确定最终保留的主成分个数 方差大的要留下。一个特征的多个样本的值如果都相同则方差为0 则说明该特征值不能区别样本所以该特征没有用。 PCA(n_componentsNone)主成分分析n_components: 实参为小数时表示降维后保留百分之多少的信息实参为整数时表示减少到多少特征 代码示例 from sklearn.decomposition import PCA from sklearn.datasets import load_iris x,y load_iris(return_X_yTrue) data x[0:5] print(data) #创建转化器对象n_components为小数时表示保留原始数据80%的信息 transfer PCA(n_components0.8) #调用转换器方法fit_transform() data_new transfer.fit_transform(data) print(data_new)#n_components为整数时表示保留的维度 transfer PCA(n_components2) data_new transfer.fit_transform(data) print(data_new)执行效果 [[5.1 3.5 1.4 0.2][4.9 3. 1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5. 3.6 1.4 0.2]] [[ 0.31871016][-0.20314124][-0.15458491][-0.30200277][ 0.34101876]] [[ 0.31871016 0.06464364][-0.20314124 0.19680403][-0.15458491 -0.07751201][-0.30200277 -0.10904729][ 0.34101876 -0.07488837]]结语 特征工程是机器学习中的“艺术”需要领域知识、统计思维和编程技巧的结合。本文从 字典特征 到 PCA降维系统介绍了特征工程的核心方法并提供了可直接复用的代码示例。 动手挑战尝试对一份真实数据集如Kaggle的Titanic数据进行完整的特征工程处理观察模型效果的变化 下期预告我们将进入 模型训练与调优 阶段探讨如何选择算法并优化超参数。
http://www.zqtcl.cn/news/864096/

相关文章:

  • 企业网站建设功能模块discover wordpress
  • 网站建设结课做诱导网站
  • 网站开发与设计难嘛青州网站建设推广
  • 网站开发程序员工资谷歌推广网站建设
  • 江门网页建站模板金富通青岛建设工程有限公司网站
  • 网站后台账户如何做会计分录做传奇开服一条龙网站哪个好
  • 天门市网站建设seo平台建设网站公司
  • php网站怎么做302织梦网站有会员系统怎么做
  • 清远建设局网站安阳吧百度贴吧
  • 做什么软件做网站效率最好网站公司建设都招聘那些职位
  • 缙云建设局网站深圳营销型网站设计
  • 企业网站制作价格成都高端网站建设公司哪家好
  • wordpress+做仿站网站建设费用属于业务宣传费吗
  • 昆明企业网站制作wordpress移动端插件menu
  • 长沙网站设计培训学校南宁建设网站哪里好
  • 提高基层治理效能全国seo搜索排名优化公司
  • 如何建设网站简介WordPress集成tipask
  • 青海网站开发公司建筑公司的愿景怎么写
  • 建设银行集团网站首页优化科技
  • dede 汽车网站网站上的彩票走势图是怎么做的
  • 网站内容营销呼市推广网站
  • 南宁网站建设价格医院有关页面设计模板
  • 城乡住房和城乡建设厅网站湖州公司网站建设
  • h5响应式的网站建站空间哪个好
  • 徐州网站建设与推广公众号开发技术风险
  • 男女做差差事的视频网站自己做一个小程序要多少钱
  • 临沂网站建设哪家好重庆建设招标造价信息网站
  • 筑巢网络官方网站深圳网站开发设计公司排名
  • 镇江市网站制作网页的代码实例
  • 吉林省网站制作公司有哪些唐山设计网站公司