第3课_线性回归与逻辑回归实践
热度🔥:19 免费课程
授课语音
实践:使用线性回归进行房价预测,应用逻辑回归进行二分类任务(如垃圾邮件分类)
在本节中,我们将通过实际的Python代码示例,演示如何使用线性回归模型进行房价预测,以及如何使用逻辑回归模型进行二分类任务,例如垃圾邮件分类。我们将使用流行的机器学习库scikit-learn
来完成这些任务。
1. 线性回归:房价预测
1.1 数据集准备
我们使用一个简单的房价数据集,其中包括房屋的面积和相应的价格。我们的目标是使用线性回归模型根据面积预测房价。
1.2 代码示例
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
# 假设的房屋数据:面积(平方英尺)和价格(单位:美元)
X = np.array([[1000], [1500], [2000], [2500], [3000]]) # 面积
y = np.array([200000, 250000, 300000, 350000, 400000]) # 房价
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X, y)
# 预测房价
predictions = model.predict([[2800]]) # 预测一个2800平方英尺房子的价格
# 输出预测结果
print(f"Predicted price for a 2800 sqft house: ${predictions[0]:.2f}")
# 可视化结果
plt.scatter(X, y, color='blue', label='Actual prices')
plt.plot(X, model.predict(X), color='red', label='Linear regression line')
plt.xlabel('Area (sqft)')
plt.ylabel('Price (USD)')
plt.legend()
plt.show()
1.3 结果分析
- 在上面的代码中,我们首先创建了一个简单的房屋数据集,其中包含房屋的面积(
X
)和对应的价格(y
)。 - 然后,我们使用
LinearRegression
模型进行训练,通过model.fit(X, y)
来学习面积与价格之间的关系。 - 最后,我们使用训练好的模型预测一个2800平方英尺房子的价格,并可视化数据和回归线。
1.4 可视化
在图中,蓝色点代表真实数据(面积与房价),红色线是通过线性回归模型拟合的回归直线。我们可以看到回归线较好地拟合了这些数据。
2. 逻辑回归:垃圾邮件分类
2.1 数据集准备
垃圾邮件分类任务是一个典型的二分类问题,我们的目标是根据一些特征(如电子邮件的词频)预测邮件是否为垃圾邮件。假设我们已经有了一个数据集,其中包括一些文本特征(如词频)和相应的标签(1
表示垃圾邮件,0
表示非垃圾邮件)。
2.2 代码示例
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix
import numpy as np
# 假设的数据:邮件的特征(例如,词频),以及是否为垃圾邮件的标签(1为垃圾邮件,0为正常邮件)
X = np.array([[0.1, 0.5, 0.2], [0.4, 0.3, 0.6], [0.7, 0.2, 0.9], [0.6, 0.6, 0.7], [0.3, 0.5, 0.4]]) # 邮件的特征
y = np.array([0, 1, 1, 0, 1]) # 标签:0表示正常邮件,1表示垃圾邮件
# 划分训练集和测试集(80%用于训练,20%用于测试)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X_train, y_train)
# 预测测试集
y_pred = model.predict(X_test)
# 输出预测结果
print(f"Predictions: {y_pred}")
print(f"Actual labels: {y_test}")
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")
# 混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(conf_matrix)
2.3 结果分析
- 在代码中,我们首先定义了一个简单的数据集,
X
表示邮件的特征(例如,词频),y
是标签,1表示垃圾邮件,0表示非垃圾邮件。 - 使用
train_test_split
将数据集划分为训练集和测试集,80%用于训练,20%用于测试。 - 使用
LogisticRegression
创建并训练逻辑回归模型,然后在测试集上进行预测。 - 计算模型的准确率,并输出混淆矩阵。混淆矩阵可以帮助我们了解模型在不同类别上的预测效果。
2.4 混淆矩阵
混淆矩阵是分类模型评估的一个重要工具。它帮助我们了解模型在每个类别上的表现。矩阵的每个元素表示模型在不同分类上的预测结果,如下所示:
预测为正常邮件 (0) | 预测为垃圾邮件 (1) | |
---|---|---|
实际为正常邮件 (0) | True Negative (TN) | False Positive (FP) |
实际为垃圾邮件 (1) | False Negative (FN) | True Positive (TP) |
- True Positive (TP): 正确预测为垃圾邮件的数量;
- False Positive (FP): 错误预测为垃圾邮件的数量;
- False Negative (FN): 错误预测为正常邮件的数量;
- True Negative (TN): 正确预测为正常邮件的数量。
通过混淆矩阵,我们可以进一步计算精确率、召回率等指标来评估模型的效果。
2.5 准确率
在这个例子中,我们计算了模型的准确率,表示模型正确分类的样本比例。准确率越高,模型的性能越好。
3. 总结
- 线性回归:我们使用线性回归模型对房价进行预测,模型通过面积来预测房价,并且通过回归直线可视化数据的关系。
- 逻辑回归:我们使用逻辑回归模型进行二分类任务(如垃圾邮件分类),通过训练模型对测试数据进行分类,并使用准确率和混淆矩阵来评估模型的效果。
通过这两个实践案例,您可以了解如何使用线性回归进行回归预测,并且使用逻辑回归解决二分类问题。