机器学习系列文章——特征的处理与选择(归一化、标准化、降维、PCA)

一、特征处理

特征处理是通过特定的统计方法,将数据转化成算法要求的数据。其API为sklearn.preprocessing。先来看一组数据:
在这里插入图片描述
第一组中的特征1 相比于特征2而言大了几十倍,在正常处理时这些点即可视为异常点,影响统计结果分析。采用特征处理后转变为右侧的数据,可以更加方便的处理而不会产生异常值。
常见的处理方法如下:

数据类型 处理方法
数值型数据 归一化、标准化、缺失值
类别型数据 one hot编码
时间型数据 时间的切分

( 一)归一化

归一化是通过对原始数据进行变换把数据映射到一定范围(默认0-1)之间。其公式为:
在这里插入图片描述
归一化实例:
在这里插入图片描述

# 导入特征处理api及其子库
from sklearn.preprocessing import MinMaxScaler,StandardScaler,Imputer
# 定义一个归一化处理函数
def mm(data):
    """归一化处理"""
    # 实例化mm
    mm=MinMaxScaler(feature_range=(2,3))
    # 调用fit_transform来处理数据
    data=mm.fit_transform(data)
    print("归一化处理后的数据为:")
    print(data)
    return None

data=[[90, 2, 10, 40], [60, 4, 15, 45
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先我们需要导入数据,并进行数据预处理,包括标准化归一化。 ```python import pandas as pd from sklearn.preprocessing import StandardScaler, MinMaxScaler from sklearn.feature_selection import SelectKBest, f_classif from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score # 导入数据 data = pd.read_csv('Breast_Cancer.csv') # 特征和标签 X = data.iloc[:, :-1] y = data.iloc[:, -1] # 标准化归一化 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) minmax_scaler = MinMaxScaler() X_normalized = minmax_scaler.fit_transform(X_scaled) ``` 接着,我们可以利用逻辑回归或随机森林选择其中的top n特征。 ```python # 特征选择 selector = SelectKBest(f_classif, k=10) X_top_n = selector.fit_transform(X_normalized, y) # 输出被选中的特征 mask = selector.get_support() selected_features = X.columns[mask] print(selected_features) ``` 最后,我们可以利用PCA特征降至m维,并进行机器学习模型的训练和评估。 ```python # PCA降维 pca = PCA(n_components=5) X_pca = pca.fit_transform(X_top_n) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X_pca, y, test_size=0.2, random_state=42) # 逻辑回归 lr = LogisticRegression() lr.fit(X_train, y_train) y_pred_lr = lr.predict(X_test) accuracy_lr = accuracy_score(y_test, y_pred_lr) print('Logistic Regression Accuracy:', accuracy_lr) # 随机森林 rf = RandomForestClassifier() rf.fit(X_train, y_train) y_pred_rf = rf.predict(X_test) accuracy_rf = accuracy_score(y_test, y_pred_rf) print('Random Forest Accuracy:', accuracy_rf) ``` 通过对比处理前后的机器学习模型性能差异,我们可以得出结论。 ### 回答2: 在针对Breast_Cancer.csv数据集的特征处理中,我们首先需要对数据进行标准化归一化处理标准化可以将数据的平均值调整为0,标准差调整为1,而归一化可以将数据压缩到[0, 1]的范围内。 接下来,我们可以利用逻辑回归或随机森林算法选择数据集中的top n个特征。逻辑回归可以通过对数据集进行训练,选择重要性的特征。随机森林可以通过计算特征的重要性来选择top n个特征。 在特征选择完成后,我们可以利用主成分分析(PCA)算法将数据降至m维。PCA可以通过线性变换将原始特征转化为一组新的互不相关的变量,称为主成分,其中第一个主成分包含了最多的信息量,第二个主成分包含次多的信息量,以此类推。 最后,我们可以比较特征处理前后机器学习分类模型的性能差异。理论上,特征处理可以改善模型的性能。标准化归一化可以确保所有特征具有相似的尺度,避免某些特征对模型的影响过大。特征选择可以减少维度、降低噪声,并排除冗余特征,可以提高模型的简洁性和泛化性能。最后,PCA可以减少数据集的维度,从而加快训练时间,并去除特征间的相关性,进一步提高模型的性能。 通过比较处理前后的模型性能差异,可以确定特征处理的效果。如果处理后的模型表现更好,那么我们可以得出特征处理对模型性能的提升。如果特征处理导致性能下降,可能是由于处理方法不适用于该数据集。因此,在实际应用中,需要根据具体情况选择合适的特征处理方法。 ### 回答3: 针对Breast_Cancer.csv中的数据,我们可以进行一系列特征处理来提升机器学习分类模型的性能。 首先,我们需要对数据进行标准化归一化操作。标准化可以使得不同特征的数据具有相似的尺度,避免某些特征对模型的影响过大;而归一化可以将数据映射到0-1的范围,使得数据更易于处理。这样能够提高模型的收敛速度和稳定性。 接下来,可以利用逻辑回归或随机森林等算法选择其中的top n特征。这些算法可以根据特征的重要性进行排序,选择对目标变量有较大影响的特征选择top n特征的目的是减少数据的维度,降低模型的复杂度,提高模型的泛化能力。 最后,我们可以利用主成分分析(PCA)将数据降维至m维。PCA是一种常用的降维方法,可以通过线性变换将原始特征空间映射到新的低维度特征空间。降维后的数据保留了原始数据的主要特征,可以更好地表示数据的结构,减少噪声和冗余信息。 比较处理前后机器学习分类模型的性能差异可以通过以下步骤进行: 1. 将原始数据分为训练集和测试集; 2. 在处理前的数据上训练和测试机器学习分类模型,并记录性能指标(如准确率、召回率、F1值等); 3. 对处理后的数据进行相同的训练和测试,并记录性能指标; 4. 对比处理前后的性能指标差异,评估特征处理对模型性能的影响。 通常情况下,经过标准化归一化特征选择降维处理后,机器学习分类模型的性能会有所提升。处理后的数据更加规范,维度更低且包含了主要信息,使得模型更容易学习到数据的规律,进而提高分类准确度和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值