基于github上的一个学习项目进行https://github.com/Avik-Jain/100-Days-Of-ML-Code
由浅入深,省去前期手工推导,练习中引入库来完成。
一般一天更新一次练习,我会将里面的英文引导翻译成中文。
完整代码:https://github.com/jwc19890114/-02-learning-file-100days/blob/master/01.ipynb
原文的英文说明
第一步:引入需要的库
练习主要使用的是numpy、pandas、sklearn这几个库,在之后我会进一步增加。
第二步:引入数据集
使用pandas中的read函数读取数据集。 在本例中使用的是excel数据集,也可以使用csv等。
import pandas as pd
data=pd.read_excel(r'地址')
data=pd.read_csv(r'地址')
之后我们会从dataframe中获取矩阵(Matrix)和向量(vector)的相关和不相关性
第三步:处理丢失数据
每一个数据集中都会出现丢失的数据,在这里使用sklearn.preprocessing中的Imputer进行处理,使用的是取平均值的方式(strategy=mean)。
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])
第四步:对数据进行编码
分类数据是变量(variables),它们包含标签值而非数字。可能的数值经常被限定在了一个固定集中,比如数据Yes和No就不能被引入到模型中,需要对这样的数据进行编码。在这里使用labelEncoder进行处理
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X=LabelEncoder()
labelencoder_Y=LabelEncoder()
X[:,0]=labelencoder_X.fit_transform(X[:,0])
onehotencoder=OneHotEncoder(categorical_features=[0])
X=onehotencoder.fit_transform(X).toarray()
Y=labelencoder_Y.fit_transform(Y)
第五步:将数据集划分为测试集和训练集
0.8和0.2的比例进行划分,使用train_test_split()
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)
第六步:特征缩放
大多数机器学习算法使用两个数据点之间的欧几里得距离Euclidean distance进行计算,巨大的特征在距离计算中会有更高的权重,这样是不好的,需要进行特征缩放。使用特征标准化或是Z-score归一。调用sklearn.preprocessing.StandardScalar进行处理
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.fit_transform(X_test)
领取专属 10元无门槛券
私享最新 技术干货