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

发布消息做任务的网站徐州网站建设市场

发布消息做任务的网站,徐州网站建设市场,嘉兴做网站seo的,重庆市互联网协会目录 1.特征工程 1.1特征工程概念 1.2特征工程的步骤 1.3特征工程-特征提取 1.3.1字典列表(json)特征提取 1.3.2文本特征提取 英文文本提取 中文文本提取 1.3.3TF-IDF文本特征词的稀有程度特征提取 2.无量纲化 2.1归一化 2.2标准化 2.3fit、fit_transform、transfo…

目录

1.特征工程

1.1特征工程概念

1.2特征工程的步骤

1.3特征工程-特征提取

1.3.1字典列表(json)特征提取

1.3.2文本特征提取

英文文本提取

中文文本提取

 1.3.3TF-IDF文本特征词的稀有程度特征提取

2.无量纲化

2.1归一化

2.2标准化

2.3fit、fit_transform、transform

3.特征降维

3.1特征选择

3.1.1低方差过滤特征选择

3.1.2相关系数特征选择

3.2主成份分析(PCA)


1.特征工程

1.1特征工程概念

对特征进行相关的处理

特征工程是将任意数据转换为可用于机器学习的数字特征,如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。

1.2特征工程的步骤

(1)特征提取, 如果不是像dataframe那样的数据,要进行特征提取,比如字典特征提取,文本特征提取

(2)无量纲化(预处理)

(3)特征降维

1.3特征工程-特征提取

稀疏矩阵

稀疏矩阵是指一个矩阵中大部分元素为零,只有少数元素是非零的矩阵。

三元组表 (Coordinate List, COO):三元组表就是一种稀疏矩阵类型数据,存储非零元素的行索引、列索引和值:

(行,列)   数据

非稀疏矩阵(稠密矩阵)

非稀疏矩阵,或称稠密矩阵,是指矩阵中非零元素的数量与总元素数量相比接近或相等。

1.3.1字典列表(json)特征提取

  • 创建转换器对象

 sklearn.feature_extraction.DictVectorizer(sparse=True)

参数:

sparse=True返回类型为csr_matrix的稀疏矩阵

sparse=False表示返回的是数组,数组可调用.toarray()方法将稀疏矩阵转换为数组

  • 转换器对象:

transfer=fit_transform(data)

转换器对象调用fit_transform(data)函数,返回转化后的矩阵或数组

  • 获取特征名

 transfer.get_feature_names_out()

import numpy as np
from sklearn.feature_extraction import DictVectorizer'''
字典列表特征提取
'''
data = [{'city': '成都', 'age': 30, 'temperature': 20},{'city': '重庆', 'age': 33, 'temperature': 60},{'city': '北京', 'age': 42, 'temperature': 80},{'city': '上海', 'age': 22, 'temperature': 70}, ]# 转为稀疏矩阵
transfer = DictVectorizer(sparse=True)
date_new = transfer.fit_transform(data)
print(date_new,'\n')
# 不转成三元组的形式:toarray()
print(date_new.toarray(),'\n')# 不转成三元组表的形式:sparse=False
transfer = DictVectorizer(sparse=False)
# 特征
print(transfer.get_feature_names_out())
date_new = transfer.fit_transform(data)
print(date_new,'\n')

1.3.2文本特征提取

  • 英文文本提取

from sklearn.feature_extraction.text import CountVectorizer

transfer = CountVectorizer(stop_words=[ ])
data = transfer.fit_transform(documents)

关键字参数stop_words,表示词的黑名单

fit_transform函数的返回值为稀疏矩阵

from sklearn.feature_extraction.text import CountVectorizer
import pandas as pddocuments = ["This is the first document.","This document is the second document.","And this is the third one.","Is this the first document?"
]# 创建转换器对象
transfer = CountVectorizer(stop_words=['is', 'and'])data = transfer.fit_transform(documents)
# print(data)feature_df = pd.DataFrame(data=data.toarray(),columns=transfer.get_feature_names_out()
)
print(feature_df)
  • 中文文本提取

下载jiaba

pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple

API 

jieba.cut(str) 

import jieba
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pddef chinese_cut(text):data = jieba.cut(text)data_lt = list(data)data_str = " ".join(data_lt)return data_strdocuments = ["这是第一份文件","此文档是第二个文档","这是第三个","这是第一份文件吗 "
]data_new = [chinese_cut(i) for i in documents]
transfer = CountVectorizer(stop_words=[])
data_final = transfer.fit_transform(data_new)df = pd.DataFrame(data=data_final.toarray(),columns=transfer.get_feature_names_out())
print(df)

 1.3.3TF-IDF文本特征词的稀有程度特征提取

词频(Term Frequency, TF),使词数归一化

TF = 该词在文章中出现的次数 / 文章词总数

逆文档频率(Inverse Document Frequency, IDF), 反映了该词在整个文档集合中的稀有程度

IDF = lg( 文档总数 / 包含该词的文档数+1 )

 包含该词的文档数+1:使分母不为0

 TF-IDF=TF*IDF

  •  API

from sklearn.feature_extraction.text import TfidfVectorizer

transfer = TfidfVectorizer(stop_words=[' '])
ti_idf = transfer.fit_transform(data_new)

import jieba
from sklearn.feature_extraction.text import TfidfVectorizerdef chinese_cut(text):data = jieba.cut(text)data_lt = list(data)data_str = " ".join(data_lt)return data_strdocuments = ["这是第一份文件","此文档是第二个文档","这是第三个","这是第一份文件吗 "
]
data_new = [chinese_cut(i) for i in documents]transfer = TfidfVectorizer(stop_words=['这是'])
ti_idf = transfer.fit_transform(data_new)df = pd.DataFrame(data=ti_idf.toarray(),columns=transfer.get_feature_names_out())
print(df)

2.无量纲化

无量纲,即没有单位的数据

2.1归一化

公式

将原始数据映射到指定区间(默认为0-1)

x-xmin / xmax-xmin = y-a / b-a

原始数据的数值范围:[xmin,xmax]

指定区间:[a,b]

将原始数据x映射到指定区间的结果为:y

API

sklearn.preprocessing.MinMaxScaler(feature_range)

参数:feature_range默认=(0,1) 为归一化后的值域,可以自定义

fit_transform函数归一化的原始数据类型可以是list、DataFrame和ndarray, 不可以是稀疏矩阵

fit_transform函数的返回值为ndarray

示例

from sklearn.preprocessing import MinMaxScalerdata = [[2, 5, 4],[6, 1, 9],[3, 0, 7]]transfer = MinMaxScaler(feature_range=(0, 1))scaler_data = transfer.fit_transform(data)
print(scaler_data)

缺点

最大值和最小值易受到异常点影响,所以鲁棒性较差。

2.2标准化

在机器学习中,标准化是一种数据预处理技术,也称为数据归一化或特征缩放。它的目的是将不同特征的数值范围缩放到统一的标准范围,以便更好地适应一些机器学习算法,特别是那些对输入数据的尺度敏感的算法。

公式

最常见的标准化方法是Z-score标准化,也称为零均值标准化。它通过对每个特征的值减去其均值,再除以其标准差,将数据转换为均值为0,标准差为1的分布。

其中,z是转换后的数值,x是原始数据的值,μ是该特征的均值,σ是该特征的标准差

API

sklearn.preprocessing.StandardScale

transfer = StandardScaler()

与MinMaxScaler一样,原始数据类型可以是list、DataFrame和ndarray

fit_transform函数的返回值为ndarray

示例

df = pd.DataFrame(data=[[1, 2, 3, 4],[2, 1, 3, 4],[3, 2, 3, 4],[4, 2, 3, 4]]
)
# 实例化一个转换器
transfer = StandardScaler()# DataFrame进行标准化
standard_data = transfer.fit_transform(data)
print(standard_data, '\n')# 将DF转化为list,进行标准化
df_lt = df.values.tolist()
standard_data = transfer.fit_transform(df_lt)
print(standard_data, '\n')# 将DF转化为ndarray,进行标准化
df_arr = df.values
standard_data = transfer.fit_transform(df_arr)
print(standard_data, '\n')

2.3fitfit_transform、transform

fitfit_transformtransform有不同的作用:

  • fit:

这个方法用来计算数据的统计信息,比如均值和标准差(在StandardScaler的情况下)。

fit仅用训练集上。

  • transform:

这个方法使用已经通过fit方法计算出的统计信息来转换数据。

可以应用于任何数据集,包括训练集、验证集或测试集,

使用的统计信息必须来自于训练集。

  • fit_transform:

这个方法相当于先调用fit再调用transform,但是它在内部执行得更高效。

仅在训练集上使用

一旦scaler对象在x_train使用fit(),就已经得到统计信息对于测试集x_test,只需要使用transform方法,因为我们不希望在测试集上重新计算任何统计信息,也不希望测试集的信息影响到训练过程。如果我们对x_test也使用fit_transform,测试集的信息就可能会影响到训练过程。

总结来说:常常是先fit(x_train)然后再transform(x_test,y_test)

3.特征降维

目的:降低数据集的维度,保留重要信息。

特征降维的好处:

减少计算成本:在高维空间中处理数据可能非常耗时且计算密集。降维可以简化模型,降低训练时间和资源需求。

去除噪声:高维数据可能包含许多无关或冗余特征,这些特征可能引入噪声并导致过拟合。降维可以帮助去除这些不必要的特征。

特征降维的方式:

  • 特征选择

    • 从原始特征集中挑选出最相关的特征

  • 主成份分析(PCA)

    • 主成分分析就是把之前的特征通过一系列数学计算,形成新的特征,新的特征数量会小于之前特征数量

3.1特征选择

3.1.1低方差过滤特征选择

from sklearn.feature_selection import VarianceThreshold

transfer = VarianceThreshold(threshold)

from sklearn.feature_selection import VarianceThresholddf = pd.DataFrame(data=[[1, 2, 5, 4],[2, 1, 3, 6],[3, 2, 3, 4],[4, 2, 3, 4]],columns=['f1', 'f2', 'f3', 'f4'])# 定义一个低方差过滤器
transfer = VarianceThreshold(threshold=0.6)
vt_data = transfer.fit_transform(df)
print(vt_data)

3.1.2相关系数特征选择

from scipy.stats import pearsonr

statistic,pvalue=pearsonr(data[" "], data[" "])

from scipy.stats import pearsonrdf = pd.DataFrame(data=[[1, -2, 5, 4],[2, -1, 3, 6],[3, -2, 3, 4],[4, -2, 3, 4]],columns =['f1','f2','f3','f4'])r1 = pearsonr(df['f1'],df['f2'])# 相关性
print(r1.statistic)#皮尔逊相关系数
print(r1.pvalue)#零假设,为非负数,越小越相关

3.2主成份分析(PCA)

PCA的核心目标是从原始特征空间中找到一个新的坐标系统,使得数据在新坐标轴上的投影能够最大程度地保留数据的方差,同时减少数据的维度。

API

from sklearn.decomposition import PCA

transfer=PCA(n_components=None)

参数:

n_components:

        实参为小数:表示降维后保留百分之多少的信息

        实参为整数:表示减少到多少特征

from sklearn.decomposition import PCA
import numpy as npdata =np.random.rand(3,4)
# print(data)transfer = PCA(n_components=2)
data_new = transfer.fit_transform(data)
print(data_new)
from sklearn.decomposition import PCA
import numpy as npdata =np.random.rand(3,4)
# print(data)transfer = PCA(n_components=0.8)
data_new = transfer.fit_transform(data)
print(data_new)

http://www.yayakq.cn/news/237075/

相关文章:

  • 广州官网建站世界室内设计公司排名
  • 小说类网站程序wordpress分类模板制作
  • 可信网站验证服务中心网站开发类投标文件
  • 沈阳网站制作公司排名大同网站建设推广
  • 为什么建设网站要年年交钱wordpress 作者函数
  • app和网站哪个难做岳阳网
  • 南京做网站公司哪家好网站建设 推广薪资
  • 在wordpress官网建站账号注册平台
  • 佛山网站建设佛山网站制作国家商标注册查询网
  • 郑州专业网站制作的公司慧谷网站开发文档
  • wordpress整站搬家教程用wordpress做企业网站
  • 手机 网站 分辨率外贸网站免费模板
  • 网站建设包括哪些流程网站中文名
  • 有没有什么做统计的网站什么是电商怎么做电商
  • 茂名整站优化做ppt用什么软件最好
  • 北京微信网站建设电话咨询个人引流推广怎么做
  • 做企业网站的网页设计的岗位叫什么
  • 网站后台管理模板html软件技术论文题目
  • 2014中文网站seo排名名单网页制作网站受众群体分析
  • 如何在720云网站做全景视频天河网站设计
  • 企业网站和展板建设南宁网站建设nnxun
  • 网站上线 flashlogo设计在线生成免费u钙
  • 柳市最好的网站建设公司求个企业邮箱号
  • 网站策划要遵循的原则怎么查看网站有没有做推广
  • 东凤网站建设如何用电子邮箱做网站
  • 岳阳网站平台设计网络有限公司名字大全
  • 建站优化办事效率高阿里巴巴官网app
  • 医院网站建设规划哪里有好看的网站
  • 做网站用什么开发工具百度生成手机网站
  • 虚拟交易网站开发天津网站建设方案咨询