特征工程代码实现:数据预处理、特征提取、转换和选择
特征工程是数据科学和机器学习中非常重要的一个步骤,它涉及到数据的预处理和提取,以及构建特征集合。
在本文中,我们将介绍特征工程的代码实现,主要包括以下步骤:
- 数据清洗:处理缺失值、异常值等问题。
- 特征提取:从原始数据中提取有用的特征。
- 特征转换:将特征转换为算法可用的格式。
- 特征选择:选择最有用的特征。
下面我们将分别介绍这些步骤的代码实现。
- 数据清洗
数据清洗是特征工程的第一步,它包括处理缺失值、异常值等问题。以下是一些常用的数据清洗方法:
处理缺失值:
import pandas as pd
import numpy as np
data = pd.read_csv('data.csv')
data = data.fillna(0) # 将缺失值填充为0
data = data.dropna() # 删除有缺失值的行
处理异常值:
def remove_outlier(df, col_name):
Q1 = df[col_name].quantile(0.25)
Q3 = df[col_name].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df = df[(df[col_name] > lower_bound) & (df[col_name] < upper_bound)]
return df
data = remove_outlier(data, 'age')
- 特征提取
特征提取是从原始数据中提取有用的特征。以下是一些常用的特征提取方法:
计数特征:
data['word_count'] = data['text'].apply(lambda x: len(str(x).split(' ')))
TF-IDF特征:
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(max_df=0.8, max_features=10000)
tfidf = tfidf_vectorizer.fit_transform(data['text'])
词袋模型:
from sklearn.feature_extraction.text import CountVectorizer
count_vectorizer = CountVectorizer(max_df=0.8, max_features=10000)
bag_of_words = count_vectorizer.fit_transform(data['text'])
- 特征转换
特征转换是将特征转换为算法可用的格式。以下是一些常用的特征转换方法:
标签编码:
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
data['label'] = label_encoder.fit_transform(data['label'])
独热编码:
from sklearn.preprocessing import OneHotEncoder
one_hot_encoder = OneHotEncoder()
enc_label = one_hot_encoder.fit_transform(data['label'])
标准化:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data[['feature1', 'feature2']])
- 特征选择
特征选择是选择最有用的特征。以下是一些常用的特征选择方法:
卡方检验:
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
X = data.iloc[:, :-1]
y = data.iloc[:, -1]
# 选择前10个最有用的特征
selector = SelectKBest(chi2, k=10)
X_new = selector.fit_transform(X, y)
递归特征消除:
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
rfe = RFE(model, 10)
X_new = rfe.fit_transform(X, y)
以上是特征工程的代码实现,希望能对你有所帮助。
原文地址: https://www.cveoy.top/t/topic/lyJb 著作权归作者所有。请勿转载和采集!