这篇文章主要讲解使用Sklearn进行数据预处理,我们使用Kaggle中泰坦尼克号事件的数据作为样本。

读取数据并创建数据表格,查看数据相关信息

import pandas as pd
import numpy as np
from pandas import Series,DataFrame
data = pd.read_csv('tanic_train.csv')#导入进来的是dataframe格式
#data 可以打开data的具体信息,是dataframe的格式
#data.info() #显示了基本信息的总和,包括有多少行,多少列,每列包含多少的数据,可以看出是否具有缺失值
#data.describe() #可以得到一些方差均值等统计信息,当然这是针对于数据,对于文本信息这里是没有显示的
#data['Sex'].unique()#可以判断出函数值取值范围 data.head(5) #显示数据集合前五行的内容

表格内容如下所示

填充缺失值(数据预处理的第一步就是处理缺失值)

  • 对于缺失值不多不少的数据特征,我们可以使用机器学习模型进行缺失值得填充,例如随机森林,逻辑回归,线性回归
# 把已有的数值型特征取出来形成一个新的数据框
from sklearn.ensemble import RandomForestRegressor
age_df = data[['Age','Fare','Parch','SibSp','Pclass']]
# 乘客分成已知年龄和未知年龄两部分
known_age = age_df[age_df.Age.notnull()].as_matrix()# as_matrix()是为了将dataframe格式转为数组的格式,方便用于机器学习模型
#known_age
unknown_age = age_df[age_df.Age.isnull()].as_matrix()
#unknown_age #y 即目标年龄
y = known_age[:,0] # x即特征属性值
x = known_age[:,1:]## #fit到随机森林回归算法中去
rfr = RandomForestRegressor(random_state = 0,n_estimators = 2000, n_jobs = -1)
rfr.fit(x,y) # 用得到的模型进行位置年龄的结果预测
predictedAges = rfr.predict(unknown_age[:,1:]) #看一下里面是啥 #用得到的预测结果填补原缺失数据
data.loc[data.Age.isnull(),'Age'] = predictedAges ##去掉括号试试
  • 对于缺失值太多的特征,我们可以直接删去,或者采取让不是缺失值的为1,缺失值为0
data.loc[data_train.Cabin.notnull(),'Cabin'] = 0
data.loc[data_train.Cabin.isnull(),'Cabin'] = 1
  • 对于数据缺失值很少的我们可以采用均值或者中位数替代的方法
data["Age"] = data["Age"].fillna(data["Age"].median()/mean())

处理类目型数据

data['Embarked'].unique()
data['Embarked'] = data['Embarked'].fillna('S')
data.loc[data["Embarked"] == "S", "Embarked"] = 0
data.loc[data["Embarked"] == "C", "Embarked"] = 1
data.loc[data["Embarked"] == "Q", "Embarked"] =2 data.loc[data.Cabin.notnull(),'Cabin'] = 0
data.loc[data.Cabin.isnull(),'Cabin'] = 1 data.loc[data['Sex']=='male','Sex'] = 1
data.loc[data['Sex']=='female','Sex'] = 0

从dataframe中挑选我们需要的特征值

data=data[['Age','Survived','Fare','Pclass','Parch','Sex','SibSp','Cabin','Embarked']]

数据标准化(标准差标准化,经过处理的数据符合均值为0,标准差为1的标准正态分布)

st=np.array(X[['Age']])
scaler = preprocessing.StandardScaler().fit(st)
#在fit函数中,如果特征值只是一列的话,一定要注意在从数据集合挑选这一列特征的时候要使用X[['someting']],这样在使用np.array()之后才是可以被使用的 X['Age']=scaler.transform(st) st2=np.array(X[['Fare']])
scaler = preprocessing.StandardScaler().fit(st2)
X['Fare']=scaler.transform(st2)

【Sklearn系列】使用Sklearn进行数据预处理的更多相关文章

  1. 【深度学习系列】PaddlePaddle之数据预处理

    上篇文章讲了卷积神经网络的基本知识,本来这篇文章准备继续深入讲CNN的相关知识和手写CNN,但是有很多同学跟我发邮件或私信问我关于PaddlePaddle如何读取数据.做数据预处理相关的内容.网上看的 ...

  2. sklearn系列之 sklearn.svm.SVC详解

    首先我们应该对SVM的参数有一个详细的认知: sklearn.svm.SVC 参数说明: 本身这个函数也是基于libsvm实现的,所以在参数设置上有很多相似的地方.(PS: libsvm中的二次规划问 ...

  3. 吴裕雄 python 机器学习——数据预处理过滤式特征选取SelectPercentile模型

    from sklearn.feature_selection import SelectPercentile,f_classif #数据预处理过滤式特征选取SelectPercentile模型 def ...

  4. 吴裕雄 python 机器学习——数据预处理嵌入式特征选择

    import numpy as np import matplotlib.pyplot as plt from sklearn.svm import LinearSVC from sklearn.li ...

  5. 使用sklearn进行数据挖掘-房价预测(4)—数据预处理

    在使用机器算法之前,我们先把数据做下预处理,先把特征和标签拆分出来 housing = strat_train_set.drop("median_house_value",axis ...

  6. sklearn数据预处理-scale

    对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...

  7. 【sklearn】数据预处理 sklearn.preprocessing

    数据预处理 标准化 (Standardization) 规范化(Normalization) 二值化 分类特征编码 推定缺失数据 生成多项式特征 定制转换器 1. 标准化Standardization ...

  8. sklearn数据预处理

    一.standardization 之所以标准化的原因是,如果数据集中的某个特征的取值不服从标准的正太分布,则性能就会变得很差 ①函数scale提供了快速和简单的方法在单个数组形式的数据集上来执行标准 ...

  9. sklearn学习笔记(一)——数据预处理 sklearn.preprocessing

    https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...

随机推荐

  1. BZOJ1563: [NOI2009]诗人小G(决策单调性 前缀和 dp)

    题意 题目链接 Sol 很显然的一个dp方程 \(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\) 其中\(sum_i = \sum_{j = 1}^i len ...

  2. 前端防御XSS

    下面是前端过滤XSS的代码,取自于百度FEX前端团队的Ueditor在线编辑器: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function xssCheck(str,r ...

  3. Dojo 学习笔记 之 Dojo hitch&partial

    原文: http://dojotoolkit.org/documentation/tutorials/1.10/hitch/index.html 版本: Dojo 1.10 为了更好地使用JavaSc ...

  4. 夜色的 cocos2d-x 开发笔记 04

    本章会把游戏的基本功能结束,前面实现了子弹发射,产生敌人. 接下来我们要,检测子弹与敌人碰撞,让玩家移动,实现这个游戏的基本功能. 于是多出了这几个方法,当然还是写在.h文件里 首先实现触摸监听的方法 ...

  5. PHP:__get()、__set()、__isset()、__unset()、__call()、__callStatic()六个魔术方法

    哎呀呀,今天小仓鼠学到了魔术方法,简称魔法,哈哈哈哈,神经病啊~ 平时在面试的时候,也会遇到问魔术方法有哪些的问题哦!今天我们来了解一下下~ 1.__get() 形式: __get($objName) ...

  6. Torch.no_grad()影响MSE损失

    相关描述 https://discuss.pytorch.org/t/torch-no-grad-affecting-outputs-loss/28595/3 今天在训练网络的时候,发现mseloss ...

  7. Selenium入门20 等待时间

    自动化过程中有的页面元素加载慢或者需要等待特定条件执行后续步骤,此时需添加等待时间: 1 time.sleep()  固定等待时间,需import time 2 webdriver隐式等待 无需引入包 ...

  8. IOS 制作动画代码和 设置控件透明度

    方式1: //animateWithDuration用1秒钟的时间,执行代码 [UIView animateWithDuration:1.0 animations:^{ //存放需要执行的动画代码 s ...

  9. vuejs中v-if的深层用法v-else,v-else-if,key

    <div id='root'> <div v-if='show'>helle world</div> <button @click='handleClick' ...

  10. Netbackup:nbu常见错误及故障解决

    Veritas Netbackup 提供了强大的故障响应功能, 能够有效及时的处理 各种备份故障.主要有备份状态码(status) .错误信息.报告信息及调试日志.下面我们主要针对备份状态码讲解下各种 ...