100-Days-Of-ML-Code(Day_01)完整理解

最近火爆git的100-Days-Of-ML-Code,内容有易到难,整体来说还是很不错的,可以看得出博主Avik-Jain的用心良苦。本人也参与其中,对于里面一些用到的函数进行了一些总结,方便后来的童鞋方便查询。用到的数据集在这:Data.csv。git地址:100-Days-of-ml

#step1: 导入相应的包
import numpy as np
import pandas as pd

#step2:导入数据集
data = pd.read_csv('./Data.csv', encoding='gb18030')
X = data.iloc[: , :-1].values
Y = data.iloc[: , 3].values
#step3:处理缺失数据 NaN
'''
这里解释一下transform和fit_transform
fit(x,y)传两个参数的是有监督学习的算法,fit(x)传一个参数的是无监督学习的算法,比如降维、特征提取、标准化
fit和transform没有任何关系,仅仅是数据处理的两个不同环节,之所以出来这么个函数名,仅仅是为了写代码方便,
所以会发现transform()和fit_transform()的运行结果是一样的。
注意:运行结果一模一样不代表这两个函数可以互相替换,绝对不可以!!!
transform函数是一定可以替换为fit_transform函数的
fit_transform函数不能替换为transform函数!!!理由解释如下:
 sklearn里的封装好的各种算法都要fit、然后调用各种API方法,transform只是其中一个API方法,
 所以当你调用除transform之外的方法,必须要先fit,为了通用的写代码,还是分开写比较好 
也就是说,这个fit相对于transform而言是没有任何意义的,但是相对于整个代码而言,fit是为
后续的API函数服务的,所以fit_transform不能改写为transform。
'''
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])

#step4:编码解析分类数据
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
 #创建一个虚拟变量
#categorical_features = 'all',这个参数指定了对哪些特征进行编码,默认对所有类别都进行编码。
# 也可以自己指定选择哪些特征,通过索引或者 bool 值来指定
onehotencoder = OneHotEncoder(categorical_features=[0]) #等价于true(第一列特征),表示就对第一列特征进行编码
X = onehotencoder.fit_transform(X).toarray() #或者这里也可以在上一行设置成OneHotEnconder(sparse = False)就不需要.toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)  #疑问,为什么这里不用将Y转换成OneHotEncoder编码形式?

#step5:把数据分为训练集和测试集
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)

#step6:特征缩放
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test= sc_X.fit_transform(X_test)

总结:整得来说,第一篇的还是比较基础性的,关于one-hot编码之前没学过,今晚理解了一晚上终于理解透彻了,改天写篇相关博客。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanaif

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值