楼主: jpld
738 0

100天搞定机器学习|Day1数据预处理 [推广有奖]

  • 2关注
  • 50粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
1268 个
通用积分
2.1233
学术水平
120 点
热心指数
120 点
信用等级
99 点
经验
1249 点
帖子
192
精华
0
在线时间
271 小时
注册时间
2009-5-29
最后登录
2022-3-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

数据预处理是机器学习中最基础也最麻烦的一部分内容
在我们把精力扑倒各种算法的推导之前,最应该做的就是把数据预处理先搞定
在之后的每个算法实现和案例练手过程中,这一步都必不可少
同学们也不要嫌麻烦,动起手来吧
基础比较好的同学也可以温故知新,再练习一下哈

闲言少叙,下面我们六步完成数据预处理
其实我感觉这里少了一步:观察数据

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

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

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

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

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
  • ['Spain' 27.0 48000.0
  • ['Germany' 30.0 54000.0
  • ['Spain' 38.0 61000.0
  • ['Germany' 40.0 nan
  • ['France' 35.0 58000.0
  • ['Spain' nan 52000.0
  • ['France' 48.0 79000.0
  • ['Germany' 50.0 83000.0
  • ['France' 37.0 67000.0
  • 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])

Imputer类具体用法移步

http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing

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


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


  • from sklearn.preprocessing import LabelEncoder, OneHotEncoder
  • labelencoder_X = LabelEncoder()
  • X[ : , 0 = labelencoder_X.fit_transform(X[ : , 0])
  • onehotencoder = OneHotEncoder(categorical_features = [0])
  • X = onehotencoder.fit_transform(X).toarray()
  • labelencoder_Y = LabelEncoder()
  • Y =  labelencoder_Y.fit_transform(Y)

LabelEncoder用法请移步

http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html

Step 5:将数据集分为训练集和测试集
from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 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)

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

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

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

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

导入sklearn.preprocessing 库中的StandardScala

用法:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据预处理 机器学习 Day 预处理 scikit-learn

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 20:24