大家好,我是ly甲烷😜,后端开发也有做算法的心呀💗 ,我们来学习python机器学习
github有37.1k star的机器学习100天原项目地址https://github.com/Avik-Jain/100-Days-Of-ML-Code
之前的机器学习100天有很多库或者函数已经不用了,还有刚入门机器学习可能很多函数或者设置搞不明白,
所以,从python基础无缝到机器学习的教程来了。博主亲自操作一遍过的记录,绝对细致。如果学不会可以评论区讨论,如果我懂,我会回复的。

今天是机器学习第三天——数据预处理 👇 👇 👇,前一天——简单线性回归

数据集

链接:https://pan.baidu.com/s/1Y2vZ5Rvn2PpRkj9XhnZrXQ?pwd=yyds
提取码:yyds
多元线性回归是简单线性回归的升级版,在数学的角度上来看,就是从一元方程升级到多元方程。

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:\workspace\python_workspace\datasets\50_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()

在这里插入图片描述
红点是预测的值,蓝点是实际的值,可以看出,预测的结果和实际情况还是比较接近的。

完整代码

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:\workspace\python_workspace\datasets\50_Startups.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 4].values

# 将类别数据数字化
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)

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

y_pred = regressor.predict(X_test)

# 测试集结果可视化
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()

今日总结:
数据预处理——训练模型——预测结果——可视化显示,和昨天类似,换了一个模型。
引入了虚拟变量陷阱这个概念,只需要去掉一列虚拟数据就🆗了
第四天:逻辑回归 https://blog.csdn.net/weixin_44179010/article/details/124656680


今天就到这里啦,如果不懂,可以调试调试,看看变量是怎么变的,有不足和错误的地方欢迎大家指正👐
大家可以在评论区留下足迹👍 💬 ⭐️、留下遇到的问题哦。或者你也可以记录学习博客,留下你的博客地址
每天半小时,100天打卡挑战,让我们学会机器学习~💖

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐