对于刚接触机器学习或者数据分析的同学来说,看大佬们比赛的代码是很难的,一头雾水,都是看不懂的,心里很慌。所以对于初学者来说,还是需要回归简单,只有掌握基础,才能不断深入,我是深有体会的,不知道你感觉如何?接下来我将梳理一套针对初学者的代码系列,希望可以帮助大家也受益自己。

1.导入需要的库

import numpy as np
import pandas as pd

2.导入数据集

data=pd.read_csv("E:/data/data.csv")

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])  #需要在array 数组情况下使用,即X.values

4.解析分类数据

from sklearn.preprocessing import LabelEncoder
labelencoder_X=LabelEncoder()
X[:,0]=labelencoder_X.fit_transform(X[:,0])
from sklearn.preprocessing import OneHotEncoder
onehotencoder=OneHotEncoder(categorical_features=[0])
X=onehotencoder.fit_transform(X).toarray()
labelencoder_y=LabelEncoder()
y=labelencoder_y.fit_transform(y)  #将标签转化为
OneHotEncoder(n_values='auto', categorical_features='all', dtype=<class 'numpy.float64'>, sparse=True, handle_unknown='error')

n_values:'auto',int或int数组,数是每个特征的种类。如male,female是两类。

①若为auto时,从训练集中获取特征的取值范围即个数

②若为整数时,则特征的取值必须在range(n_values)范围内

③若为整数数组,则X[:,i]对应的分类特征有n_values[i]个取值,特征的取值在range(n_values[i])内

categorical_features:可能取值为all、indices数组或mask

①若为all时,代表所有的特征都被视为分类特征

②若为indices(索引)数组时,表示分类特征的indices值

③若mask时,长度为n_features且dtype = bool的数组。

dtype:数字类型,默认= np.float,设置的输出类型。

sparse:boolean,default = True
如果设置为True将返回稀疏矩阵,否则将返回一个数组。

handle_unknown:str:error、ignore

在转换过程中,如果出现未知的分类特征时,是抛出错误或直接忽略

5.拆分数据集为测试集和训练集

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)

6.特征缩放

from sklearn.preprocessing import StandardScaler
sc_X=StandardScaler()
X_train=sc_X.fit_transform(X_train)
X_test=sc_X.transform(X_test)

 

更多推荐

入门python代码系列:数据清洗与预处理(一)