【数据分析/挖掘】【数据预处理&特征工程&数据处理】快速入门+案例+代码+GIF实操

本文介绍了数据预处理的重要性,包括无量纲化和数据编码,如最大最小值无量纲化和标准归一化。特征工程方面,涉及过滤法(如方差过滤、卡方过滤、F检验和互信息法),以及嵌入法和包装法。此外,还讨论了数据处理中的正则化和升维在防止过拟合和提升分类效果中的作用。
摘要由CSDN通过智能技术生成

前言:在我的上一份文章中,介绍到了数据清洗的常用方法及其Python实现。这篇文章主要是在数据清洗后的特征工程的实现,特征工程包含三个方面,分别为特征提取、特征创造、特征选择。

特征提取 特征创造 特征选择
从文字、图像、声音等其他非结构化数据中提取新信息作为特征。比如说,从地址中提取国家、省、市等信息。 将现有的特征进行组合,或者进行某种计算得到新的特征。例如我们的多元多次线性回归就可以借助已有的特征创造新的特征。 从所有的特征中,选择出有意义的,对模型有帮助的特征,避免特征量过多,训练时间长。

作为入门篇,我们主要的重点放在特征的选择上,其余两种会略有提及。

一:数据预处理

我们对数据的处理除了上一份文章提及到的消除缺失值、异常值、重复值的影响之外,还包括我们的数据预处理。这一部分都不改变数据原有的结构。

1.1 无量纲化

1.1.1 为什么要无量纲化

让我们思考这样一个问题,当我们使用梯度下降法进行近似求解的时候,如果各个特征量的量纲不统一会如何?可以参考下方的gif动图。实现代码如下:

import numpy as np
from ipywidgets import FloatSlider,VBox
from bqplot import pyplot as plt

# 创建数据集
X = np.random.rand(100, 1)
y = (4 + 3 * X) + np.random.randn(100, 1)
X_b = np.c_[np.ones((100, 1)), X]

# 创建超参数
learning_rate = 0.001
n_interation = 1000

# 初始化θ
thetas = np.empty((n_interation,2))
theta = np.random.randn(2, 1)

# 判断是否收敛,一般不会设定阈值,而是直接采用设置相对大的迭代次数保证可以收敛
for iteration in range(n_interation):

    # 求梯度
    gradient = X_b.T.dot(X_b.dot(theta) - y)
    # 应用梯度下降法调整θ值
    theta = theta - learning_rate * gradient
    thetas[iteration] = theta.reshape(1,2)

title_tmpl = 'θ的10的{}次方量级下的图形'
line_fig = plt.figure(title=title_tmpl.format(0))
line = plt.plot(np.array(range(n_interation)),thetas[0],'m',stroke_width=3)
line_2 = plt.plot(np.array(range(n_interation)),thetas[1],colors=['green'])

i_slider = FloatSlider(description='i',value=0,min=0,max=5,step=1)

def update_y(change):
    new_i = i_slider.value
  
    # 创建数据集
    X = np.random.rand(100, 1)*(10**new_i)
    y = (4 + 3 * X)/(10**new_i) + np.random.randn(100, 1)
    X_b = np.c_[np.ones((100, 1)), X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值