ML 100 Days (3)

跟着大佬学习一下机器学习100-Days-Of-ML。 话说我的惰性在这个学习流程上表露无遗,到现在才到第三天。

Day 3 多元线性回归

数据下载

这一节引入了一个新的概念叫虚拟变量,就是把一些分类性的东西变成虚变量,并且赋值,比如女变成0,男变成1。

数据预处理

导入数据

import pandas as pd
import numpy as np

dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : ,  4 ].values

将类别虚拟化

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[: , 3] = labelencoder.fit_transform(X[ : , 3])
onehotencoder = OneHotEncoder(categories="auto")
X = onehotencoder.fit_transform(X).toarray()

# 根据warning信息,应该改成这样?可是结果不太一样
# from sklearn.preprocessing import LabelEncoder, OneHotEncoder
# labelencoder = LabelEncoder()
# X[: , 3] = labelencoder.fit_transform(X[ : , 3])
# onehotencoder = OneHotEncoder(categories="auto")
# X = onehotencoder.fit_transform(X).toarray()

躲避陷阱,这里说是可能会存在能被其他变量预测出,即高度相关的变量,为了避免,这里将分类数减去1,即取出一个变量作为参考

X = X[: , 1:]

拆分训练集和测试集

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)

在训练集上训练多元线性回归模型

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)

在测试集预测结果

y_pred = regressor.predict(X_test)