任务描述
本关任务:优化数据转换方案,筛选重要的特征,或者对数据特征做合理变换,以提高分类器的性能。
相关知识
- 特征缩放
最大最小规范化 Z-Score规范化 归一化 映射到正态分布 稀疏数据缩放 带离群点的缩放
- 特征筛选, 可以考虑以下策略:
删除低方差特征; 基于特征重要性,筛选特征 降维,例如主成分分析PCA,线性判别分析LDA,SVD分解等; 其他方法。
编程要求
根据提示,在右侧编辑器补充代码,优化数据预处理方案。
测试说明
平台将对模型进行自动测试:
如果模型性能高于预设的值,则 输出: 准确率为:0.xxxxxx
准确率高于0.83!
否则,输出: 准确率为:0.xxxxxx
请继续努力!
实验结果
import warnings
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from load_data import load_data
def data_preprocess(data):
X = data.iloc[:,:-1] #拟输入模型的数据
y = data.iloc[:,-1] #分类标签
#---------Begin-----------#
#请对 X 进行合理的预处理
# 可尝试使用以下方法任意一种进行 特征缩放
from sklearn.preprocessing import MinMaxScaler, StandardScaler, Normalizer, PowerTransformer, RobustScaler, QuantileTransformer
scaler = MinMaxScaler() # 最大最小规范化
scaler = StandardScaler() # Z-Score规范化
scaler = Normalizer() # 归一化
scaler = PowerTransformer() # 映射到正态分布
scaler = RobustScaler() # 稀疏数据缩放
scaler = QuantileTransformer() # 代离群点的缩放
X_scaled = scaler.fit_transform(X)
# 可以尝试使用以下方法任意一种进行 特征筛选
from sklearn.feature_selection import VarianceThreshold
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.decomposition import PCA
# 删除低方差特征
selector = VarianceThreshold()
X_selected = selector.fit_transform(X_scaled)
# 基于L1正则化的特征选择
lgc = LogisticRegression(penalty='l1', solver='liblinear', random_state=1)
sfm = SelectFromModel(lgc)
X_selected = sfm.fit_transform(X_selected, y)
# PCA
pca = PCA(n_components=10)
X_pca = pca.fit_transform(X_selected)
#---------End-------------#
return X,y
def train_model():
"""训练一个逻辑回归分类器"""
data_frame = load_data()
X_train, y_train = data_preprocess(data_frame)
lgc = LogisticRegression(random_state=1)
lgc.fit(X_train,y_train)
return lgc