机器学习day2-特征工程

四.特征工程

1.概念

一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程

将任意数据(文本或图像等)转换为数字特征,对特征进行相关的处理

步骤:1.特征提取;2.无量纲化(预处理):归一化、标准化;3.降维:底方差过滤特征选择,主成分分析-PCA降维

2.特征工程API

①.实例化转换器对象

DictVectorizer      字典特征提取
CountVectorizer     文本特征提取
TfidfVectorizer     TF-IDF文本特征词的重要程度特征提取 
MinMaxScaler        归一化
StandardScaler      标准化
VarianceThreshold   底方差过滤降维
PCA                 主成分分析降维

②.fit,transform和fit_transform

fit:用于计算数据的统计信息,比如均值和标准差(在StandardScaler的情况下),这些统计信息随后会被用于预测出来的数据

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

fit_transform:两者结合,更高效

一旦scaler对象在X_train上被fit,它就已经知道了如何将数据标准化。

先fit_transform(x_train)然后再transform(x_text)

fit只用一次

# fit 和 transform 和fittransform 区别
from sklearn.preprocessing import StandardScaler,MinMaxScaler
import numpy as np
transfer=StandardScaler()
x=np.random.randint(100,size=(3,4))
print(x)
transfer.fit(x)#计算出均值和标准差
x=transfer.transform(x)
# x=transfer.fit_transform(x)
print(x)
x2=np.array([[10,20,30,40]])
x2=transfer.transform(x2)
​
print(x2)

3.DictVectorizer 字典列表特征提取

1.稀疏矩阵

一个矩阵中大部分元素为0,常见于大规模数据分析、图形学、自然语言处理、机器学习等领域

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

(行,列) 数据

(0,0) 10

(0,1) 20

(2,0) 90

(2,20) 8

(8,0) 70

表示除了列出的有值, 其余全是0

②.压缩稀疏行 (CSR - Compressed Sparse Row):

  • CSR 格式将稀疏矩阵中的非零元素按行优先的方式存储。它使用了三个数组:

    • data:存储非零元素的值。

    • indices:存储data中每个元素的列索引。

    • indptr:存储每一行在dataindices数组中的起始位置。

  • CSR 格式非常适合快速地进行行访问和矩阵向量乘法。

③.压缩稀疏列 (CSC - Compressed Sparse Column):

  • CSC 格式类似于 CSR,但它是按列优先的方式来存储稀疏矩阵。同样也使用了三个数组:

    • data:存储非零元素的值。

    • indices:存储data中每个元素的行索引。

    • indptr:存储每一列在dataindices数组中的起始位置。

  • CSC 格式对于快速地进

### 特征工程中的特征提取方法 特征提取特征工程的重要组成部分,它涉及从原始数据中生成有意义的新特征。这些新特征通常能够提高模型性能并增强其解释能力。以下是几种常见的特征提取方法及其应用: #### 1. 数学变换 数学变换是一种简单有效的特征提取方式,通过对现有特征进行加减乘除或其他运算来创建新的特征。例如,在房地产价格预测场景下,可以通过计算房屋面积与房间数的比例来生成一个新的特征[^5]。 ```python import pandas as pd data = pd.DataFrame({ 'house_area': [100, 200, 300], 'room_count': [2, 4, 6] }) # 新特征:每间房的平均面积 data['avg_room_size'] = data['house_area'] / data['room_count'] print(data) ``` #### 2. 时间序列特征提取 对于时间序列数据,可以从日期或时间戳中提取多种特征,如年份、月份、星期几等。这有助于捕捉周期性和趋势模式。 ```python from datetime import datetime dates = ['2023-01-01', '2023-02-15', '2023-03-28'] df = pd.DataFrame({'date': pd.to_datetime(dates)}) # 提取时间特征 df['year'] = df['date'].dt.year df['month'] = df['date'].dt.month df['day_of_week'] = df['date'].dt.dayofweek print(df) ``` #### 3. 文本向量化 在自然语言处理领域,文本数据需要转化为数值形式才能被机器学习算法使用。常用的技术包括词袋模型(Bag of Words)、TF-IDF 和嵌入表示(Embedding)。其中,《Deep Learning on Keras》一书中提供了详细的神经网络数据预处理和向量化的实现案例[^4]。 ```python from sklearn.feature_extraction.text import TfidfVectorizer corpus = [ 'This is the first document.', 'This document is the second document.' ] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(corpus) print(vectorizer.get_feature_names_out()) print(X.toarray()) ``` #### 4. 包装法(Wrapper Method) 包装法通过训练评估器逐步选择最优子集的特征组合。这种方法依赖于特定的学习算法,并基于交叉验证的结果挑选最佳特征集合[^3]。 ```python from sklearn.datasets import make_classification from sklearn.feature_selection import RFE from sklearn.tree import DecisionTreeClassifier X, y = make_classification(n_samples=100, n_features=10, n_informative=5, random_state=42) model = DecisionTreeClassifier(random_state=42) rfe = RFE(estimator=model, n_features_to_select=5) rfe.fit(X, y) print(rfe.support_) print(rfe.ranking_) ``` #### 5. 基于业务逻辑的特征构建 根据具体应用场景设计定制化特征也是常见做法之一。比如金融风控建模时可能引入逾期率指标;电商推荐系统则会考虑用户的购买频率及时长等因素。 --- ### 总结 以上介绍了五种主要的特征提取技术——数学变换、时间序列分析、文本向量化、包装法以及基于业务需求的手动构造特性。实际项目开发过程中往往综合运用上述手段完成高质量的数据准备阶段工作[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值