(头歌)【挑战】特征筛选:改善模型性能

任务描述

本关任务:优化数据转换方案,筛选重要的特征,或者对数据特征做合理变换,以提高分类器的性能。

相关知识

  • 特征缩放

    最大最小规范化 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

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值