跟着大佬学习一下机器学习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)