机器学习笔记一-数据预处理

数据预处理是数据分析、机器学习和深度学习等领域中的重要步骤。它包括清洗、转换、归一化、编码等操作,旨在使数据适合于建模和分析。数据预处理的质量直接影响模型的性能和准确性。下面详细介绍数据预处理的常见步骤和技术。

1. 数据清洗

  • 处理缺失值:
    • 删除缺失数据: 如果缺失值的数量较少,或者缺失的样本对分析无关紧要,可以直接删除。
    • 插值填补: 使用均值、中位数、众数、或插值等方法填补缺失值。
    import pandas as pd
    
    # 删除包含缺失值的行
    df.dropna(inplace=True)
    
    # 用均值填补缺失值
    df.fillna(df.mean(), inplace=True)
    
    • 预测填补: 使用其他变量预测缺失值,例如使用回归模型填补。
      你可以使用回归模型来填补缺失值。以下是使用 scikit-learn 中的回归模型来填补缺失值的代码示例。假设我们有一个数据集,其中某一列有缺失值,其他列将用于预测该列的缺失值。

步骤

  1. 数据准备:我们会将数据分为两部分——缺失值部分和非缺失值部分。
  2. 训练模型:在非缺失值部分使用回归模型来训练。
  3. 预测缺失值:使用模型对缺失值部分进行预测。

以下是代码示例:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.impute import SimpleImputer

# 示例数据集
data = {
   
   
    'feature1': [1, 2, 3, 4, 5],
    'feature2': [2, 4, np.nan, 8, 10],
    'target': [5, 10, 15, np.nan, 25]
}

df = pd.DataFrame(data)

# 1. 将有缺失值的部分和没有缺失值的部分分开
# 找到 target 列中没有缺失值的行
df_no_missing = df[df['target'].notna()]
df_missing = df[df['target'].isna()]

# 2. 使用 feature1 和 feature2 作为预测特征,target 作为标签
X_train = df_no_missing[['feature1', 'feature2']]
y_train = df_no_missing['target']

# 填补 feature2 中的缺失值(假设 feature2 中也有缺失值)
imputer = SimpleImputer(strategy='mean')
X_train = imputer.fit_transform(X_train)

# 3. 使用回归模型进行训练
regressor = LinearRegression()
regressor.fit(X_train, y_train)

# 4. 对缺失值部分进行预测
X_missing = df_missing[['feature1', 'feature2']]
X_missing = imputer.transform(X_missing)
df_missing['target'] = regressor.predict(X_missing)

# 5. 填补原始数据中的缺失值
df.loc[df['target'].isna(), 'target'] = df_missing['target']

print(df)
  • 处理异常值:

    • 检测异常值: 可以使用箱线图、标准差、Z-score 等方法检测异常值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carrie_Lei

接咨询接亲自带

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值