授课语音

实践:使用线性回归进行房价预测,应用逻辑回归进行二分类任务(如垃圾邮件分类)

在本节中,我们将通过实际的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. 总结

  • 线性回归:我们使用线性回归模型对房价进行预测,模型通过面积来预测房价,并且通过回归直线可视化数据的关系。
  • 逻辑回归:我们使用逻辑回归模型进行二分类任务(如垃圾邮件分类),通过训练模型对测试数据进行分类,并使用准确率和混淆矩阵来评估模型的效果。

通过这两个实践案例,您可以了解如何使用线性回归进行回归预测,并且使用逻辑回归解决二分类问题。

去1:1私密咨询

系列课程: