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

网站管理系统安装 -网站建设备案优化之看

网站管理系统安装 -,网站建设备案优化之看,餐饮网站建设方案,电商平台项目运营策划方案机器学习概述 sklearn.datasets特征工程特征提取特征预处理特征降维 sklearn.datasets sklearn.datasets 模块用于获取较为经典的数据集。 sklearn.datasets.load_*() # 获取小规模数据集#xff0c;直接从本地获取sklearn.datasets.fetch_*(data_homeNone, subset“train”… 机器学习概述 sklearn.datasets特征工程特征提取特征预处理特征降维 sklearn.datasets sklearn.datasets 模块用于获取较为经典的数据集。 sklearn.datasets.load_*() # 获取小规模数据集直接从本地获取sklearn.datasets.fetch_*(data_homeNone, subset“train”, shuffleTrue, random_state42) # 获取大规模数据集需要从网络上下载data_home 表示用于存储数据集的路径默认存储在 ~/scikit_learn_data/ 目录下subset 表示要下载的数据集可选 “train”、“test”、“all”sklearn.datasets.load_iris() # 从本地获取鸢尾花数据集 sklearn.datasets.fetch_20newsgroups(data_homeNone) # 从网络上下载 20newsgroups 数据集的训练集 load_*() 和 fetch_*() 返回的数据类型为 sklearn.utils.Bunch是一种字典格式。其中几个主要的键值对如下 data: array([···])特征数据数组形如 (n_samples, n_features)target: array([···])标签数据数组形如 (n_samples,)feature_names: array([···])特征名称target_names: array([···])标签名称DESCR: str()数据集描述 Bunch 类型可以通过 iris[‘data’] 或 iris.data 获取对应的值。 from sklearn.datasets import load_irisiris load_iris() print(iris[data]) print(iris.data)一个数据集通常会被划分为训练集和测试集划分比例通常为 8:2 或 7:3可以通过 sklearn.model_selection.train_test_split(arrays, *options) 进行划分。 x数据集的特征值可以以 ndarray、list 等类型结构传入y数据集的标签值可以以 ndarray、list 等类型结构传入test_size测试集的大小float默认为 0.25train_size训练集的大小floatrandom_state随机数种子不同的种子会产生不同的随机采样结果默认为 None返回训练集的特征数据、测试集的特征数据、训练集的标签数据、测试集的标签数据传入的是 ndarray返回的也是 ndarray传入的是 list返回的也是 list from sklearn.datasets import load_iris from sklearn.model_selection import train_test_splitiris load_iris() x_train, x_test, y_train, y_test train_test_split(iris.data, list(iris.target), test_size0.2)print(type(x_train)) # class numpy.ndarray print(type(x_test)) # class numpy.ndarray print(type(y_train)) # class list print(type(y_test)) # class list print(x_train.shape) # (120, 4) print(x_test.shape) # (30, 4)特征工程 数据和特征决定了机器学习的上限而模型和算法只是逼近这个上限。 特征工程旨在将原始特征转换为更能表示预测模型潜在问题的特征从而提高对未知数据预测的准确性。 特征工程包括特征提取、特征预处理、特征降维等。 特征提取 特征提取旨在将任意类型的数据如文本或图像转换为可用于机器学习的数值型数据这一转换过程也叫做特征值化。 可以通过 sklearn.feature_extraction.DictVectorizer(sparseTrue, …) 对字典数据进行特征值化 DictVectorizer.fit_transform(X)X 为一个字典或一个包含字典的迭代器返回 sparse 矩阵DictVectorizer.inverse_transform(X)X 为一个 sparse 矩阵返回转换之前的数据格式DictVectorizer.get_feature_names()返回一个列表包含所有类别 from sklearn.feature_extraction import DictVectorizer# 创建一个字典列表作为示例数据 data [{city: 北京, temperature: 100},{city: 上海, temperature: 60},{city: 深圳, temperature: 30}]# 创建一个 DictVectorizer 实例 vec DictVectorizer(sparseTrue) # sparseTrue 表示输出稀疏矩阵# 对示例数据进行向量化 X vec.fit_transform(data)# 将 sparse 矩阵转换回之前的格式 y vec.inverse_transform(X)# 输出转换后的特征矩阵 print(X) print(y) print(vec.get_feature_names()) --------- (0, 1) 1.0 (0, 3) 100.0 (1, 0) 1.0 (1, 3) 60.0 (2, 2) 1.0 (2, 3) 30.0 [{city北京: 1.0, temperature: 100.0}, {city上海: 1.0, temperature: 60.0}, {city深圳: 1.0, temperature: 30.0}] [city上海, city北京, city深圳, temperature] vec.fit_transform(data) 会先分析字典的所有类别[city上海, city北京, city深圳, temperature] 分别表示为 [0, 1, 2, 3] 因此在上述结果中的小括号内第一个值表示第几个样本第二个值表示类别这两个值就构成了 sparse 矩阵的行列坐标并使用独热编码对其进行特征值化。 vec DictVectorizer(sparseFalse) # sparseFalse 表示输出稀疏矩阵的二维数组 X vec.fit_transform(data) print(X) --------- [[ 0. 1. 0. 100.][ 1. 0. 0. 60.][ 0. 0. 1. 30.]]可以通过 sklearn.feature_extraction.text.CountVectorizer(stop_wordsNone) 对文本数据进行特征值化 CountVectorizer.fit_transform(X)X 为一个字典或一个包含字典的迭代器返回 sparse 矩阵词频矩阵CountVectorizer.inverse_transform(X)X 为一个 sparse 矩阵返回转换之前的数据格式CountVectorizer.get_feature_names()返回一个列表包含所有单词 from sklearn.feature_extraction.text import CountVectorizer# 创建一个字符串列表作为示例数据 data [life is short, i like like like python,life is too long, i dislike python]# 创建一个 CountVectorizer 实例 vec CountVectorizer() # 输出词频稀疏矩阵# 对示例数据进行向量化 X vec.fit_transform(data)# 将 sparse 矩阵转换回之前的格式 y vec.inverse_transform(X)# 输出转换后的特征矩阵 print(X) print(y) print(vec.get_feature_names()) # 获取单词特征列表标点符号与单个字母不计入列表 print(type(X)) print(X.toarray()) --------- (0, 2) 1 (0, 1) 1 (0, 6) 1 (0, 3) 3 (0, 5) 1 (1, 2) 1 (1, 1) 1 (1, 5) 1 (1, 7) 1 (1, 4) 1 (1, 0) 1 [array([life, is, short, like, python], dtypeU7), array([life, is, python, too, long, dislike], dtypeU7)] [dislike, is, life, like, long, python, short, too] class scipy.sparse.csr.csr_matrix [[0 1 1 3 0 1 1 0][1 1 1 0 1 1 0 1]] vec.fit_transform(data) 会先分析文本的所有单词[dislike, is, life, like, long, python, short, too] 分别表示为 [0, 1, 2, 3, 4, 5, 6, 7] 因此在上述结果中的小括号内第一个值表示第几个样本第二个值表示不同单词这两个值就构成了 sparse 矩阵的行列坐标并使用独热编码对其进行特征值化。 vec CountVectorizer(stop_words[is, too]) # 停用参数其中的单词将不计入单词特征列表 X vec.fit_transform(data) print(X.toarray()) print(vec.get_feature_names()) --------- [[0 1 1 0 1 1][1 1 0 1 1 0]] [dislike, life, like, long, python, short]data [我 爱 北京 天安门,天安门 上 太阳 升]vec CountVectorizer() # 输出词频稀疏矩阵X vec.fit_transform(data)print(X) print(vec.get_feature_names()) print(X.toarray()) --------- (0, 0) 1 (0, 1) 1 (1, 1) 1 (1, 2) 1 [北京, 天安门, 太阳] [[1 1 0][0 1 1]]TF-IDF 的主要思想是如果某个词语或短语在一篇文章中出现的频率很高而在其他文章中很少出现则认为该词语或短语具有很好的类别区分能力适合用于分类。因此TF-IDF 的主要作用是用于评估一个词语对于一个文件集或语料库中一份文件的重要程度。 词频term frequencytf指的是某一个词语在该文件中出现的频率。 逆向文档频率inverse document frequencyidf是对某一个词语普遍重要性的度量。某一词语的 idf 可由总文件数除以包含该词语的文件数再对其取以十为底的对数得到。 t f i d f t f ∗ i d f tfidf tf * idf tfidftf∗idf 假设语料库中有 1000 篇文章其中有 100 篇文章包含”经济“一词现在有一篇新的文章该文章总共有 100 个词语其中”经济“一词出现了 10次tfidf 的计算如下 t f 10 / 100 0.1 tf 10 / 100 0.1 tf10/1000.1 i d f l o g 10 1000 / 100 1 idf log_{10}1000 / 100 1 idflog10​1000/1001 t f i d f 0.1 ∗ 1 0.1 tfidf 0.1 * 1 0.1 tfidf0.1∗10.1 也就是说”经济“这个词对于该文章的重要程度为 0.1。 可以通过 sklearn.feature_extraction.text.TfidfVectorizer(stop_wordsNone) 对文本数据进行特征值化 TfidfVectorizer.fit_transform(X)X 为一个字典或一个包含字典的迭代器返回 sparse 矩阵权值矩阵TfidfVectorizer.inverse_transform(X)X 为一个 sparse 矩阵返回转换之前的数据格式TfidfVectorizer.get_feature_names()返回一个列表包含所有单词 特征预处理 特征预处理旨在通过一些转换函数将特征数据转换成更加适合算法模型的特征数据。 数值型数据的无量纲化是指将不同维度的数值型数据统一到同一标准的过程使得不同维度的特征具有相同的量纲。这个过程可以消除不同维度特征之间的量纲和单位差异有助于提高模型训练的收敛速度避免某些特征对模型产生过大影响。 常见的数值型数据的无量纲化方法有 归一化 最小-最大缩放Min-Max Scaling将数据线性地缩放到一个固定范围内通常是 [0, 1] 或 [-1, 1]公式如下 x ′ x − m i n ( x ) m a x ( x ) − m i n ( x ) x \frac{x - min(x)}{max(x) - min(x)} x′max(x)−min(x)x−min(x)​ 如果需要将数据映射到指定范围映射到 [0, 1] 时不需要还需要进行如下计算 x ′ ′ x ′ ∗ ( u p p e r − l o w e r ) l o w e r x x * (upper - lower) lower x′′x′∗(upper−lower)lower 其中 u p p e r upper upper 表示区间的上限 l o w e r lower lower 表示区间的下限例如我想将数据映射到 [-1, 1] 范围那么 1 就是区间上限-1 就是区间下限。 标准化 Z-Score 标准化Z-Score Normalization通过减去均值并除以标准差将数据转换为均值为 0 标准差为 1 的标准正态分布数据公式如下 x ′ x − μ σ x \frac{x - \mu}{\sigma} x′σx−μ​ 无量纲化可以使不同特征之间的数值范围相近有利于加快模型训练时的收敛速度提高模型的精确度和稳定性。 Min-Max Scaling 和 Z-Score Normalization 都属于归一化操作如果不对数据进行归一化处理会导致什么问题 特征尺度不一致不同特征的数值范围可能相差很大比如一个特征的取值范围在 0-1 之间而另一个特征的取值范围在 100-1000 之间这种情况下模型可能会更关注数值范围较大的特征而忽略数值范围较小的特征归一化处理可以将所有特征的数值范围缩放到相同的区间以避免此问题发生。梯度下降速度不均衡在训练过程中模型通过梯度下降来更新参数如果不进行归一化处理不同特征的梯度大小可能会相差很大从而导致梯度下降的速度不均衡这可能会导致训练过程收敛缓慢或不稳定归一化处理可以使不同特征的梯度大小更加均衡有助于提高训练的效率和稳定性。模型对异常值敏感如果某个特征包含异常值比如极大或极小的离群值而其他特征没有异常值那么模型可能会过度依赖这个特征导致模型的泛化能力下降归一化处理可以减小异常值对模型的影响提高模型的鲁棒性。模型解释性差在某些模型中特征的数值范围会影响模型参数的解释性如果不进行归一化处理模型参数的大小和解释性可能会受到特征数值范围的影响使得模型的解释性变得困难归一化处理可以消除这种影响使得模型参数更容易解释。 最小-最大缩放的优缺点 优点 能够保留原始数据的分布形状不会改变数据的相对大小关系公式简单易于理解和实现适用性广泛在数据范围已知的情况下能够应用于各种类型的数值型数据 缺点 对异常值敏感非常容易受到异常点的影响当最小值或最大值是异常值或离群值时该特征列必定受影响异常值可能会导致归一化后的数据失去一部分区分度数据范围受限归一化后的数据范围受到原始数据最大值和最小值的限制当新数据超出原始数据范围时可能需要重新计算最大值和最小值以确保新数据也在 [0, 1] 或 [-1, 1] 的范围内 综上来看最小最大缩放这种归一化方法的鲁棒性相对较差适用于范围已知且数据分布相对均匀的数据集。如果数据的分布非常不均匀或者范围未知使用最小-最大缩放进行归一化可能会导致数据失真不利于模型的训练和预测。在这种情况下使用其他归一化方法如标准化Z-score normalization更为合适。 Z-Score Normalization 的优缺点 优点 Z-score normalization 不受异常值的影响因为它是基于数据的均值和标准差进行归一化而不是最大值和最小值Z-score normalization 适用于各种类型的数值型数据而且不需要知道数据的范围Z-score normalization 保留了原始数据的分布形状不会改变数据的相对大小关系 缺点 Z-score normalization 可能导致数据密度变化使得数据分布变得更加集中或分散 Z-score normalization 方法相较于最小-最大缩放方法而言在处理异常值时更具鲁棒性归一化后的数据相对更稳定。Z-score normalization 基于样本统计量均值和标准差进行计算而不是依赖于固定范围因此能更好地适应数据集的变化。Z-score normalization 适用于符合正态分布假设的数据集。 可以通过 sklearn.preprocessing.MinMaxScaler(feature_range(0, 1)) 对数据进行最小-最大缩放 MinMaxScaler.fit_transform(X)X 需为一个形如 (n_samples, n_features) 的 ndarray 或 list返回一个各特征列经过最小-最大缩放的与输入具有相同形状的 ndarray不论输入是 ndarray 还是 list都返回 ndarray from sklearn.preprocessing import MinMaxScalerdata [[90, 5, 145],[85, 30, 189],[53, 8, 159],[98, 15, 110]]scale MinMaxScaler(feature_range(0, 1)) # 实例化 MinMaxScaler 类对象映射范围为 [0, 1] X scale.fit_transform(np.array(data)) # 进行最小-最大缩放计算print(X) print(type(X)) --------- [[0.82222222 0. 0.44303797][0.71111111 1. 1. ][0. 0.12 0.62025316][1. 0.4 0. ]] class numpy.ndarray可以通过 sklearn.preprocessing.StandardScaler() 对数据进行 Z-score normalization StandardScaler.fit_transform(X)X 需为一个形如 (n_samples, n_features) 的 ndarray 或 list返回一个各特征列经过 Z-score normalization 的与输入具有相同形状的 ndarray不论输入是 ndarray 还是 list都返回 ndarray from sklearn.preprocessing import StandardScalerdata [[90, 5, 145],[85, 30, 189],[53, 8, 159],[98, 15, 110]]scale StandardScaler() # 实例化 StandardScaler 类对象均值为 0标准差为 1 X scale.fit_transform(data) # 进行 Z-score normalization 计算print(X) print(type(X)) --------- [[ 0.49721207 -0.98378271 -0.20251156][ 0.20473438 1.60511916 1.3471421 ][-1.66712283 -0.67311449 0.29056006][ 0.96517638 0.05177804 -1.43519061]] class numpy.ndarray特征降维 特征降维是指在某些限定条件下降低随机变量特征个数以得到一组不相关主变量的过程。 特征降维的方式主要有 特征选择主成分分析可以理解成一种特征提取的方式 数据集中往往包含冗余特征或相关性较强的特征特征选择旨在从原有特征中找出主要特征。 特征选择的方法主要有 Filter过滤式主要探究特征本身的特点、特征与特征及特征与目标之间的关联 方差选择法将低方差特征过滤掉 特征方差小说明多数样本在该特征上的值较为相近集中程度较高特征方差大说明多数样本在该特征上的值较为疏远离散程度较高 相关系数法衡量特征与特征之间的相关程度 如果特征与特征之间的相关性很高可以选取其中一个或者加权求和或者进行主成分分析 Embedded嵌入式算法自动选择特征特征与目标之间的关联 决策树信息熵、信息增益正则化L1、L2深度学习卷积等 方差选择法可以通过 sklearn.feature_selection.VarianceThreshold(threshold0.0) 实现 threshold0.0 表示删除所有方差小于等于 0.0 的特征列方差为非负值因此会删除所有方差等于 0.0 的特征也就是删除全部值都相同的特征列Variance.fit_transform(X)X 需为一个形如 (n_samples, n_features) 的 ndarray 或 list返回一个各特征列经过方差计算并删除了方差小于等于阈值的特征列的与输入具有相同形状的 ndarray不论输入是 ndarray 还是 list都返回 ndarray from sklearn.feature_selection import VarianceThresholddata [[50, 1, 3],[40, 1, 2],[30, 1, 1]]var VarianceThreshold() # 实例化 VarianceThreshold 类对象threshold 默认为 0.0 X var.fit_transform(data) # 进行方差计算并根据阈值选择特征print(X) print(type(X)) --------- [[50 3][40 2][30 1]] class numpy.ndarray常用的相关系数计算方法有 皮尔逊相关系数 pearson correlation coefficient衡量了两个变量特征之间的线性相关程度取值范围为 [-1, 1]-1 表示完全负相关1 表示完全正相关0 表示无相关性。 皮尔逊相关系数只能衡量线性关系对于非线性关系无法准确刻画。此外它对异常值敏感当数据中存在异常值时相关系数的计算结果可能会受到影响。 假设有两个变量 X X X 和 Y Y Y它们的观测值分别为 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1​,x2​,...,xn​ 和 y 1 , y 2 , . . . , y n y_1, y_2, ..., y_n y1​,y2​,...,yn​则它们的皮尔逊相关系数计算过程如下 计算 X X X 和 Y Y Y 的均值 x _ m e a n ∑ i 1 n x i n x\_mean \frac{\displaystyle\sum_{i1}^{n}x_i}{n} x_meanni1∑n​xi​​ y _ m e a n ∑ i 1 n y i n y\_mean \frac{\displaystyle\sum_{i1}^{n}y_i}{n} y_meanni1∑n​yi​​计算 X X X 和 Y Y Y 的协方差 c o v ( X , Y ) ∑ i 1 n ( ( x i − x _ m e a n ) ⋅ ( y i − y _ m e a n ) ) n cov(X, Y) \frac{\displaystyle\sum_{i1}^{n}((x_i - x\_mean)·(y_i - y\_mean))}{n} cov(X,Y)ni1∑n​((xi​−x_mean)⋅(yi​−y_mean))​计算 X X X 和 Y Y Y 的标准差 x _ s t d ∑ i 1 n ( x i − x _ m e a n ) 2 n x\_std \sqrt \frac{\displaystyle\sum_{i1}^{n}(x_i - x\_mean)^2}{n} x_stdni1∑n​(xi​−x_mean)2​ ​ y _ s t d ∑ i 1 n ( y i − y _ m e a n ) 2 n y\_std \sqrt \frac{\displaystyle\sum_{i1}^{n}(y_i - y\_mean)^2}{n} y_stdni1∑n​(yi​−y_mean)2​ ​计算皮尔逊相关系数 r c o v ( X , V ) x _ s t d ⋅ y _ s t d r \frac{cov(X, V)}{x\_std·y\_std} rx_std⋅y_stdcov(X,V)​ 斯皮尔曼相关系数spearman correlation coefficient衡量两个变量之间的单调关系强度的非参数统计指标取值范围为 [-1, 1]-1 表示完全负相关1 表示完全正相关0 表示无相关性。 与皮尔逊相关系数不同斯皮尔曼相关系数不需要假设数据服从正态分布并且对非线性关系也能够比较好地描述。此外当数据中存在异常值时斯皮尔曼相关系数的计算结果会更加稳健。但是当数据中存在重复值时斯皮尔曼相关系数的计算结果可能会失真因此需要对数据进行去重处理。 斯皮尔曼相关系数的计算方法如下 对每个变量的观测值按照大小排序得到排名rank。如果有多个值相同则它们的排名取平均值计算每个观测值的排名差rank difference即 x i x_i xi​ 的排名减去 y i y_i yi​ 的排名记为 d i d_i di​计算排名差的平方和sum of squared rank differences记为 S S S S Σ ( d i ) 2 S Σ(d_i)^2 SΣ(di​)2使用公式 ρ 1 − ( 6 S / n ( n 2 − 1 ) ) ρ 1 - (6S / n(n^2-1)) ρ1−(6S/n(n2−1))其中 n n n 是观测值的个数 皮尔逊相关系数法可以通过 scipy.stats.pearsonr(x, y) 实现 x、y 需为 array 或 list它们的维度需相同返回一个类型为 numpy.float64 的皮尔逊相关系数不论输入是 array 还是 list都返回 numpy.float64 from scipy.stats import pearsonrdata [[1, 2, 3, 4, 5],[10, 23, 32, 48, 54]]r, _ pearsonr(data[0], data[1]) # 计算皮尔逊相关系数print(r) print(type(r)) --------- 0.9929103222184174 class numpy.float64主成分分析可以把具有相关性的高维变量转换为线性无关的低维变量称为主成分。主成分能够尽可能保留原始数据的信息。 可以通过 sklearn.decomposition.PCA(n_componentsNone) 实现主成分分析 n_components 为小数表示保留百分之多少的信息n_components 为整数表示减少到多少个特征PCA.fit_transform(X)X 需为一个形如 (n_samples, n_features) 的 ndarray 或 list返回一个形如 (n_samples, n_components) 的 ndarray不论输入是 ndarray 还是 list都返回 ndarray from sklearn.decomposition import PCAdata [[1, 2, 3, 4, 5],[10, 23, 32, 48, 54],[4, 56, 78, 23, 17]]pca PCA(n_components2) X pca.fit_transform(data)print(X) print(type(X)) --------- [[ 49.07977129 -16.9822929 ][ -3.07160134 37.60922964][-46.00816996 -20.62693674]] class numpy.ndarray
http://www.pierceye.com/news/479998/

相关文章:

  • 徐州双语网站制作响应式网站开发pdf
  • 怎么做建设网站公司创建一个网站多少钱
  • 好看的扁平化网站wordpress插件编写
  • 深圳网站设计模板ps可以做网站动态图
  • 微信网站制作入门网站开发实施方案进度
  • 网站用户界面设计国内网站建设最好公司
  • 运城做网站费用高吗高端模板建站
  • 凡客诚品网站设计合肥网红打卡地
  • 淘宝网站代理怎么做的广西送变电建设公司铁塔厂网站
  • 自媒体网站开发网站的推广方式包括
  • 教育做的比较好的网站有哪些网站的建设及维护
  • dw设计做网站案例建设网站杭州
  • 做网站认证对网站有什么好处广西网站建设开发团队
  • 建一个网站需要哪些知识无锡大型互联网公司
  • 餐饮公司 网站建设做网站一年大概的盈利
  • 做金融怎么进基金公司网站免费行情软件网站游戏
  • 网站推广解释创立一个网站要多少钱
  • 绍兴专业网站建设公司大型网站建设哪家好
  • 天河网站设计响应式视频网站模板
  • 网站制作老了手机网站模板开发
  • 哪家网站建设比较好海拉尔建网站
  • 丹东网站推广海南行指专业网站开发
  • 网站如何调用手机淘宝做淘宝客中国企业网站查询
  • 淄博建设工程学校官方网站专门做商标的网站有哪些
  • 私人免费网站怎么下载企业网站设计方案
  • 做阿里巴巴网站找谁互联网推广公司
  • 网站如何做微信支付宝支付宝支付网页传奇发布网
  • 网站建设语录谷歌浏览器官网下载
  • 互动营销网站免费学高中课程的软件
  • 沈阳网站建设活动方案公司网站建设攻略