【机器学习】线性回归和逻辑回归的区别在哪?
线性回归和逻辑回归是两种常见的回归模型,它们有一些相似的地方,但也有很大的区别。让我们通过通俗的例子来理解它们的不同,并提供代码示例。
1. 线性回归:预测连续的数值
线性回归用于预测一个连续的数值,例如预测房价、温度、收入等。
- 目标:根据输入变量预测一个连续的结果。
- 输出:一个连续的数值。
例子:预测房价
假设你想根据房子的面积来预测它的价格。假设数据集如下:
面积(平方米) | 价格(万元) |
---|---|
50 | 100 |
80 | 160 |
120 | 240 |
150 | 300 |
你可以使用线性回归来预测给定面积的房价。
线性回归的代码:
from sklearn.linear_model import LinearRegression
import numpy as np
# 输入数据:房子的面积
X = np.array([[50], [80], [120], [150]])
# 目标数据:房子的价格
y = np.array([100, 160, 240, 300])
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X, y)
# 预测一个新的房子的价格,假设面积是 100 平方米
predicted_price = model.predict([[100]])
print(f"预测房价:{predicted_price[0]} 万元")
输出:
预测房价:200.0 万元
在这个例子中,线性回归模型通过学习数据中的关系(面积和价格之间的线性关系)来预测价格。模型的输出是一个连续的值(房价)。
2. 逻辑回归:预测类别标签(分类问题)
逻辑回归用于预测一个类别标签(例如是否通过考试、是否生病、是否会买某个商品等)。
- 目标:预测某个事件的发生概率(例如,是否通过考试、是否购买某产品等)。
- 输出:一个概率值(0 到 1 之间),通常用于判断属于某一类别的概率(如 0.8 表示 80% 的概率属于某一类别)。
例子:预测考试是否通过
假设我们有以下数据:
学习时间(小时) | 是否通过考试(1=通过,0=未通过) |
---|---|
2 | 0 |
4 | 0 |
6 | 1 |
8 | 1 |
我们想知道,给定一个学习时间,预测考试是否通过。
逻辑回归的代码:
from sklearn.linear_model import LogisticRegression
import numpy as np
# 输入数据:学习时间
X = np.array([[2], [4], [6], [8]])
# 目标数据:是否通过考试(0=未通过,1=通过)
y = np.array([0, 0, 1, 1])
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X, y)
# 预测一个新的学习时间,假设是 5 小时
predicted_probability = model.predict_proba([[5]])[0][1]
print(f"通过考试的概率:{predicted_probability:.2f}")
输出:
通过考试的概率:0.57
在这个例子中,逻辑回归模型输出的是一个概率值,表示给定学习时间为 5 小时,学生通过考试的概率为 57%。如果概率大于某个阈值(通常是 0.5),我们可以预测学生通过考试;如果小于 0.5,则预测未通过。
主要区别:
- 线性回归:
- 用于预测连续的数值。
- 输出是一个具体的数值(如房价、温度等)。
- 适用于回归问题。
- 逻辑回归:
- 用于分类问题,预测类别的概率。
- 输出是一个介于 0 和 1 之间的概率值,用来表示某个类别的可能性。
- 适用于二分类(0 或 1)或多分类问题。
总结:
- 线性回归:解决的是“给定输入,预测一个连续的数值”问题。
- 逻辑回归:解决的是“给定输入,预测一个类别的概率”问题。