大家好,我是??,后端开发也有做算法的心呀?? ,我们来学习python机器学习
github有37.1k star的机器学习100天原项目地址https://github.com/Avik-Jain/100-Days-Of-ML-Code
之前的机器学习100天有很多库或者函数已经不用了,还有刚入门机器学习可能很多函数或者设置搞不明白,
所以,从python基础无缝到机器学习的教程来了。博主亲自操作一遍过的记录,绝对细致。如果学不会可以评论区讨论,如果我懂,我会回复的。
今天是机器学习第三天——数据预处理 ?? ?? ??,前一天——简单线性回归。
多元线性回归是简单线性回归的升级版,在数学的角度上来看,就是从一元方程升级到多元方程。
1.数据预处理
代码:
# 第一步:数据预处理
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
from sklearn.model_selection import train_test_split
# 导入数据集
dataset = pd.read_csv(r'E:workspacepython_workspacedatasets(_Startups.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 4].values
# 将类别数字化,并进行one-hot编码
labelencoder = LabelEncoder()
X[:, 3] = labelencoder.fit_transform(X[:, 3])
ct = ColumnTransformer([("encoder", OneHotEncoder(), [3])], remainder='passthrough')
X = ct.fit_transform(X)
# 躲避虚拟变量陷阱
X = X[:, 1:]
# 拆分数据集为训练集和测试集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
虚拟变量陷阱
当由 one-hot 编码创建的两个或多个虚拟变量高度相关(多重共线)时,就会出现虚拟变量陷阱。这意味着可以从其他变量预测一个变量,从而难以解释回归模型中的预测系数变量。换言之,由于多重共线性,虚拟变量对预测模型的个体影响无法很好地解释。
以这个数据集为例:
特征数据集X:
one - hot 编码后的特征,很显然如果数据既不是0,也不是1,那它一定是2。这就是所谓的多重共线性,会引起虚拟变量陷阱,不好解释
所以我们要删掉一列,来避免虚拟变量陷阱
# 躲避虚拟变量陷阱
X = X[:, 1:]
2.使用多元线性回归模型来训练训练集
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
3. 用测试集预测结果
y_pred = regressor.predict(X_test)
4.测试集结果可视化
import matplotlib.pyplot as plt
m = np.arange(0, 10)
plt.scatter(m, Y_test, color='red')
plt.scatter(m, y_pred, color='blue')
plt.show()
红点是预测的值,蓝点是实际的值,可以看出,预测的结果和实际情况还是比较接近的。
今日总结:
数据预处理——训练模型——预测结果——可视化显示,和昨天类似,换了一个模型。
引入了虚拟变量陷阱这个概念,只需要去掉一列虚拟数据就??了
今天就到这里啦,如果不懂,可以调试调试,看看变量是怎么变的,有不足和错误的地方欢迎大家指正??
大家可以在评论区留下足迹?? ?? 、留下遇到的问题哦。或者你也可以记录学习博客,留下你的博客地址
每天半小时,100天打卡挑战,让我们学会机器学习~??