1.导入
python中的三个库(Numpy、Matplotlib、Pandas)
import numpy as ap
import matplotlib.pyplot as plt
import pandas as pd
读入数据集
dataset=pd.read_csv(data.csv)
创建矩阵保存自变量
X=dataset.iloc[:,:-1].values
#第一个:表示提取全部行,:-1表示提取除最后一列以外的所有列,.values提取所有值
Y=dataset.iloc[:,3].values
#提取最后一列,索引从0开始
2.处理缺失数据
填充缺失值,最常用的是用其所在列的均值来填充
from sklearn.preprocessing import Imputer
imputer=Imputer(missing_values=np.nan,strategy='mean',axis=0)
#利用scikit-learn预处理模型中的inputer类
imputer=imputer.fit(X[:,1:3])
#在数据缺失的列上拟合imputer
X[:,1:3]=imputer.transform(X[:,1:3])
#调用方法填充缺失值
3.包含属性数据
可以将属性数据编码为数值
from sklearn.preprocessing import LabelEncoder
#使用sklearn.preprocessing提供的LabelEncoder类
labelencoder_X=LabelEncoder()
X[:,0]=labelencoder_X.fit_transform(X[:,0])
#此时第一列数据变为0 1 2 1 2
创建哑变量
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)
#将Y列数据变为0 1 0 0 1()1:yes,0:no
4.训练集和测试集的划分
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)
#20%作为测试
5.特征缩放
由于数据相差过大,如本文中年龄4—17,价值48000-83000
from sklearn.preprocessing import StandardScaler
sc_X=StandardScaler()
X_train=sc_X.fit_transform(X_train)
X_test=sc_X.fit_transform(X_test)