特征值提取
字典
from sklearn.extaction import DictVectorizer
m=DictVectorizer(sparse=False)#sparse是否转换成三元组形式
data=[], #传入字典数据
data1=model.fit_transform(data) #使用API
英文特征值提取
from sklearn.feature_extraction.text import CountVectorizer
data=[]
transfer=CountVectorizer(stop_words=])#创建词频提取对象
x=transfer.fit_transform(data)# 提取词频
中文特征值提取
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer
import jieba # 导入jieba用于断词中文字符串
import pandas as pd
def text_cut(text):
return "-".join(jieba.cut(text)) # 函数断词
data=[]
data1=(text_cut(i) for i in data) # 推导式
transfer=TfidfVectorizer(stop_words=[])
re=transfer.fit_transform(data1)
data2=pd.DataFrame(data=re.toarray(),columns=transfer.get_feature_names_out())
无量纲化-预处理
归一化
通过对原始数据进行变换把数据映射到指定区间(默认为0-1)
这里的 Xmin 和 Xmax 分别是每种特征中的最小值和最大值,而 ��是当前特征值,Xscaled 是归一化后的特征值。
标准化
标准化是一种数据预处理技术,也称为数据归一化或特征缩放。它的目的是将不同特征的数值范围缩放到统一的标准范围,以便更好地适应一些机器学习算法,特别是那些对输入数据的尺度敏感的算法。
注意点
在数据预处理中,特别是使用如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)
特征降维
实际数据中,有时候特征很多,会增加计算量,降维就是去掉一些特征,或者转化多个特征为少量个特征
特征降维其目的:是减少数据集的维度,同时尽可能保留数据的重要信息。
特征降维的好处:
减少计算成本:在高维空间中处理数据可能非常耗时且计算密集。降维可以简化模型,降低训练时间和资源需求。
去除噪声:高维数据可能包含许多无关或冗余特征,这些特征可能引入噪声并导致过拟合。降维可以帮助去除这些不必要的特征。
特征降维的方式:
特征选择
从原始特征集中挑选出最相关的特征
主成份分析(PCA)
主成分分析就是把之前的特征通过一系列数学计算,形成新的特征,新的特征数量会小于之前特征数量