机器学习100天|Day1数据预处理

简介: 机器学习100天|Day1数据预处理

640.jpg

万事开头难,早就想做这一套教程

最近刚出了一趟长差,终于忙一段落


数据预处理是机器学习中最基础也最麻烦的一部分内容

在我们把精力扑倒各种算法的推导之前,最应该做的就是把数据预处理先搞定

在之后的每个算法实现和案例练手过程中,这一步都必不可少

同学们也不要嫌麻烦,动起手来吧

基础比较好的同学也可以温故知新,再练习一下哈


闲言少叙,下面我们六步完成数据预处理

其实我感觉这里少了一步:观察数据



640.png



这是十组国籍、年龄、收入、是否已购买的数据

有分类数据,有数值型数据,还有一些缺失值

看起来是一个分类预测问题

根据国籍、年龄、收入来预测是够会购买

OK,有了大体的认识,开始表演。


Step 1:导入库


import numpy as np
import pandas as pd

Step 2:导入数据集


dataset = pd.read_csv('Data.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 3].values
print("X")
print(X)
print("Y")
print(Y)

这一步的目的是将自变量和因变量拆成一个矩阵和一个向量。

结果如下

X
[['France' 44.0 72000.0 'No']
 ['Spain' 27.0 48000.0 'Yes']
 ['Germany' 30.0 54000.0 'No']
 ['Spain' 38.0 61000.0 'No']
 ['Germany' 40.0 nan 'Yes']
 ['France' 35.0 58000.0 'Yes']
 ['Spain' nan 52000.0 'No']
 ['France' 48.0 79000.0 'Yes']
 ['Germany' 50.0 83000.0 'No']
 ['France' 37.0 67000.0 'Yes']]
Y
['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']

Step 3:处理缺失数据

from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[ : , 1:3])
X[ : , 1:3] = imputer.transform(X[ : , 1:3])
print("---------------------")
print("Step 3: Handling the missing data")
print("step2")
print("X")
print(X)


本例中我们用的是均值替代法填充缺失值

运行结果如下

X
[['France' 44.0 72000.0]
 ['Spain' 27.0 48000.0]
 ['Germany' 30.0 54000.0]
 ['Spain' 38.0 61000.0]
 ['Germany' 40.0 63777.77777777778]
 ['France' 35.0 58000.0]
 ['Spain' 38.77777777777778 52000.0]
 ['France' 48.0 79000.0]
 ['Germany' 50.0 83000.0]
 ['France' 37.0 67000.0]]


Step 4:把分类数据转换为数字


from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])
#Creating a dummy variable
onehotencoder = OneHotEncoder(categorical_features = [0])
X = onehotencoder.fit_transform(X).toarray()
labelencoder_Y = LabelEncoder()
Y =  labelencoder_Y.fit_transform(Y)
print("X")
print(X)
print("Y")
print(Y)

LabelEncoder用法请移步


X
[[1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01
  7.20000000e+04]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01
  4.80000000e+04]
 [0.00000000e+00 1.00000000e+00 0.00000000e+00 3.00000000e+01
  5.40000000e+04]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01
  6.10000000e+04]
 [0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01
  6.37777778e+04]
 [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01
  5.80000000e+04]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01
  5.20000000e+04]
 [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01
  7.90000000e+04]
 [0.00000000e+00 1.00000000e+00 0.00000000e+00 5.00000000e+01
  8.30000000e+04]
 [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01
  6.70000000e+04]]
Y
[0 1 0 0 1 1 0 1 0 1]

Step 5:将数据集分为训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
print("X_train")
print(X_train)
print("X_test")
print(X_test)
print("Y_train")
print(Y_train)
print("Y_test")
print(Y_test)

train_test_split用法移步


结果如下


X_train
[[0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01
  6.37777778e+04]
 [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01
  6.70000000e+04]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01
  4.80000000e+04]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01
  5.20000000e+04]
 [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01
  7.90000000e+04]
 [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01
  6.10000000e+04]
 [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01
  7.20000000e+04]
 [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01
  5.80000000e+04]]
X_test
[[0.0e+00 1.0e+00 0.0e+00 3.0e+01 5.4e+04]
 [0.0e+00 1.0e+00 0.0e+00 5.0e+01 8.3e+04]]
Y_train
[1 1 1 0 1 0 0 1]
Y_test
[0 0]

Step 6:特征缩放

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
print("---------------------")
print("Step 6: Feature Scaling")
print("X_train")
print(X_train)
print("X_test")
print(X_test)

大多数机器学习算法在计算中使用两个数据点之间的欧氏距离

特征在幅度、单位和范围上很大的变化,这引起了问题

高数值特征在距离计算中的权重大于低数值特征

通过特征标准化或Z分数归一化来完成

导入sklearn.preprocessing 库中的StandardScala

用法:

1. [[-1.          2.64575131 -0.77459667  0.26306757  0.12381479]
2.  [ 1.         -0.37796447 -0.77459667 -0.25350148  0.46175632]
3.  [-1.         -0.37796447  1.29099445 -1.97539832 -1.53093341]
4.  [-1.         -0.37796447  1.29099445  0.05261351 -1.11141978]
5.  [ 1.         -0.37796447 -0.77459667  1.64058505  1.7202972 ]
6.  [-1.         -0.37796447  1.29099445 -0.0813118  -0.16751412]
7.  [ 1.         -0.37796447 -0.77459667  0.95182631  0.98614835]
8.  [ 1.         -0.37796447 -0.77459667 -0.59788085 -0.48214934]]
9. X_test
10. [[-1.          2.64575131 -0.77459667 -1.45882927 -0.90166297]
11.  [-1.          2.64575131 -0.77459667  1.98496442  2.13981082]]








相关文章
|
27天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
在机器学习的实践中,构建一个高效的模型并非一蹴而就。本文将深入探讨如何通过精确的数据预处理、合理的特征选择、适当的模型构建以及细致的参数调优来提升模型的性能。我们将讨论数据清洗的重要性,探索特征工程的策略,分析不同算法的适用场景,并分享模型调参的实用技巧。目标是为读者提供一套系统的方法论,以指导他们在构建机器学习模型时能够更加高效和目标明确。
32 3
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
构建高效机器学习模型:从数据预处理到模型优化
【2月更文挑战第23天】 在机器学习领域,构建一个高效的模型并非易事。它涉及从数据预处理到特征工程,再到模型选择和调优的一系列复杂步骤。本文将引导读者通过实际案例理解这一过程,展示如何通过细致的数据清洗、智能的特征选择、合理的模型架构设计以及精确的超参数调整来提升模型性能。我们将探讨处理不平衡数据集的策略,采用交叉验证来减少过拟合风险,并使用网格搜索等技术找到最优超参数。文章还将分享一些实用的技巧和常见问题的解决方案,以帮助实践者在构建机器学习模型时避免常见的陷阱。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型调优
【2月更文挑战第23天】 在数据驱动的时代,构建一个高效的机器学习模型是解决复杂问题的关键。本文将深入探讨如何通过有效的数据预处理、特征工程、选择合适的算法以及细致的模型调优来提升模型的性能。我们将摒弃传统摘要的束缚,直接深入讨论各个环节对模型性能的影响,并分享实践中的经验教训。
|
7月前
|
数据采集 机器学习/深度学习 数据挖掘
【机器学习4】构建良好的训练数据集——数据预处理(一)处理缺失值及异常值
【机器学习4】构建良好的训练数据集——数据预处理(一)处理缺失值及异常值
258 0
|
27天前
|
机器学习/深度学习 数据采集 自然语言处理
构建高效机器学习模型:从数据预处理到模型优化
在机器学习的实践中,一个精确且高效的模型是成功解决问题的关键。本文将深入探讨如何从原始数据的收集与处理开始,通过选择合适的算法,再到模型的训练与优化,最终构建出一个高性能的机器学习模型。我们将讨论数据预处理的重要性、特征工程的策略、常用机器学习算法的选择标准以及超参数调整的最佳实践。通过案例分析和技术讲解,本文旨在为读者提供一个清晰的构建高效机器学习模型的蓝图。
|
1月前
|
机器学习/深度学习 数据采集 大数据
构建高效机器学习模型:从数据预处理到模型优化
【2月更文挑战第25天】 在当今数据驱动的时代,构建一个高效的机器学习模型对于解决实际问题至关重要。本文将详细介绍如何从数据预处理开始,逐步构建并优化一个机器学习模型。我们将讨论数据清洗、特征工程、模型选择、超参数调优等关键步骤,并通过实例演示如何应用这些技术。通过阅读本文,您将掌握构建高性能机器学习模型的方法和技巧。
|
14天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【4月更文挑战第5天】 在机器学习领域,构建一个高效的模型并非易事。它涉及多个阶段,包括数据预处理、特征工程、模型选择、训练以及最终的评估和优化。本文深入探讨了如何通过精确的数据预处理技巧和细致的特征工程来提升模型性能,同时介绍了几种常见的模型优化策略。我们的目标是为读者提供一套实用的指导方案,帮助他们在面对复杂数据集时能够有效地构建和调整机器学习模型。
|
29天前
|
机器学习/深度学习 数据采集 算法
构建高效的机器学习模型:从数据预处理到模型优化
【2月更文挑战第30天】 在机器学习的实践中,构建一个高效且准确的预测模型是每个数据科学家的核心任务。本文将深入探讨如何通过一系列策略性步骤来提升模型的性能,包括数据预处理、特征选择、模型训练以及超参数调优。我们将讨论各种技术方法,并通过实例展示这些策略是如何在实际问题中应用的。目标是为读者提供一套实用的工具和思路,以应对机器学习项目中遇到的挑战。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型优化
【2月更文挑战第26天】 在当今数据驱动的时代,构建一个高效的机器学习模型对于解决复杂问题至关重要。本文将深入探讨机器学习模型的构建过程,包括数据预处理、特征选择、模型训练和优化等方面。通过实例分析和技巧分享,读者将学会如何提高模型的性能和泛化能力,从而更好地应对各种实际问题。
|
1月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据预处理到模型调优
【2月更文挑战第24天】 在机器学习领域,构建一个高效的模型并非易事。它不仅要求算法的选择得当,更在于数据处理与模型优化的精细操作。本文将深入探讨机器学习模型构建的关键步骤,包括数据预处理的重要性、特征工程的策略、选择合适的学习算法、以及模型评估与调优的技巧。通过实例分析与经验分享,我们旨在为读者提供一个清晰、系统的构建高效机器学习模型的指南。
9 0

热门文章

最新文章