摘要:导入库导入数据集这一步的目的是将自变量和因变量拆成一个矩阵和一个向量。
数据预处理是机器学习中最基础也最麻烦的一部分内容
在我们把精力扑倒各种算法的推导之前,最应该做的就是把数据预处理先搞定
在之后的每个算法实现和案例练手过程中,这一步都必不可少
同学们也不要嫌麻烦,动起手来吧
基础比较好的同学也可以温故知新,再练习一下哈
闲言少叙,下面我们六步完成数据预处理
其实我感觉这里少了一步:观察数据
此处输入图片的描述
这是十组国籍、年龄、收入、是否已购买的数据
有分类数据,有数值型数据,还有一些缺失值
看起来是一个分类预测问题
根据国籍、年龄、收入来预测是够会购买
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/stabl...
本例中我们用的是均值替代法填充缺失值
运行结果如下
Step 3: Handling the missing data step2 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]) 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用法请移步
http://scikit-learn.org/stabl...
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.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)
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]] step2 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)
大多数机器学习算法在计算中使用两个数据点之间的欧氏距离
特征在幅度、单位和范围上很大的变化,这引起了问题
高数值特征在距离计算中的权重大于低数值特征
通过特征标准化或Z分数归一化来完成
导入sklearn.preprocessing 库中的StandardScala
用法:http://scikit-learn.org/stabl...
X_train [[-1. 2.64575131 -0.77459667 0.26306757 0.12381479] [ 1. -0.37796447 -0.77459667 -0.25350148 0.46175632] [-1. -0.37796447 1.29099445 -1.97539832 -1.53093341] [-1. -0.37796447 1.29099445 0.05261351 -1.11141978] [ 1. -0.37796447 -0.77459667 1.64058505 1.7202972 ] [-1. -0.37796447 1.29099445 -0.0813118 -0.16751412] [ 1. -0.37796447 -0.77459667 0.95182631 0.98614835] [ 1. -0.37796447 -0.77459667 -0.59788085 -0.48214934]] X_test [[-1. 2.64575131 -0.77459667 -1.45882927 -0.90166297] [-1. 2.64575131 -0.77459667 1.98496442 2.13981082]]
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/45242.html
摘要:第一天下来的感觉就是高大上,组织者高大上,赞助商们谷歌,,微软,,,,,等高大上,更高大上就是会议地点旧金山,美的让人乐不思京霾了。强力推荐来自的,原因是在旧金山听了场精彩绝伦的相声,由和共同完成,不分捧逗。 SRECon17 第一天下来的感觉就是高大上, 组织者 USENIX ( Advanced Computing Systems Association )高大上,赞助商们(谷歌,...
摘要:第一天下来的感觉就是高大上,组织者高大上,赞助商们谷歌,,微软,,,,,等高大上,更高大上就是会议地点旧金山,美的让人乐不思京霾了。强力推荐来自的,原因是在旧金山听了场精彩绝伦的相声,由和共同完成,不分捧逗。 SRECon17 第一天下来的感觉就是高大上, 组织者 USENIX ( Advanced Computing Systems Association )高大上,赞助商们(谷歌,...
摘要:而逻辑回归对于这样的问题会更加合适。也就是说,逻辑回归是用来得到样本属于某个分类的概率。这样构造的损失函数是合理的,并且它还是一个凸函数,十分方便求得参数,使得损失函数达到最小。然后导入逻辑回归类。 逻辑回归avik-jain介绍的不是特别详细,下面再唠叨一遍这个算法。 1.模型 在分类问题中,比如判断邮件是否为垃圾邮件,判断肿瘤是否为阳性,目标变量是离散的,只有两种取值,通常会编码为...
摘要:但是在这个过程中,遇到了一个请求无法获取到的问题。解决办法安装包再次打印三接下来几天需要完成的工作大概看一下的并各写一篇博客登录和注册应该使用有关的知识了解一下并写一篇博客。 vue nuxt koa2 mongodb 写博客(Day1) 一.利用nuxt初始化项目 初始化项目有两种方法: 1.vue init nuxt-community/koa-template 此种方法...
摘要:生成随机生成一个唯一的这个方法用于生成一个随机,可以将生成的视为全局唯一的生成两个相同的情况很少。似乎在前端用的比较少,目前项目用到就是在每次请求后端接口时调用此方法,生成一个传过去。 前言 以下代码来自:自己写的、工作项目框架上用到的、其他框架源码上的、网上看到的。 主要是作为工具函数,服务于框架业务,自身不依赖于其他框架类库,部分使用到es6/es7的语法使用时要注意转码 虽然尽...
阅读 2071·2021-11-11 16:55
阅读 3136·2021-10-11 10:58
阅读 3000·2021-09-13 10:28
阅读 3908·2021-07-26 23:57
阅读 967·2019-08-30 15:56
阅读 1303·2019-08-29 13:15
阅读 1232·2019-08-26 18:18
阅读 1225·2019-08-26 13:44