📜  Python的逻辑回归-案例研究(1)

📅  最后修改于: 2023-12-03 15:04:40.541000             🧑  作者: Mango

Python的逻辑回归-案例研究

介绍

逻辑回归是一种常用的分类算法,适用于二分类问题。它通过将线性回归模型的输出映射到一个概率值来进行预测。

本案例研究旨在向程序员展示如何使用Python实现逻辑回归算法,并应用于一个具体的问题中。

数据集

在本案例研究中,我们将使用一个虚拟的数据集,该数据集包含了一些学生的考试成绩和是否被大学录取的信息。数据集的特征维度为两个:考试成绩1和考试成绩2,目标变量为是否被录取(1表示录取,0表示未录取)。

以下是数据集的一些示例数据:

| 考试成绩1 | 考试成绩2 | 是否录取 | |----------|----------|----------| | 34.623660| 78.024693| 0 | | 30.286711| 43.894998| 0 | | 35.847409| 72.902198| 1 | | 60.182599| 86.308552| 1 |

实现步骤
  1. 导入必要的库,如numpypandasmatplotlib
  2. 读取数据集并进行初步的数据探索和预处理,如数据可视化和分割为训练集和测试集。
  3. 构建逻辑回归模型,并使用训练集进行模型训练。
  4. 使用测试集对模型进行评估,如计算准确率、绘制混淆矩阵等。
  5. 使用模型进行预测,如预测一个新的学生是否会被录取。
  6. 对结果进行可视化展示,如绘制决策边界。

以下是使用Python实现逻辑回归的代码示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据集
data = pd.read_csv('data.csv')

# 数据可视化
admitted = data[data['Admitted'] == 1]
not_admitted = data[data['Admitted'] == 0]

plt.scatter(admitted['Exam1'], admitted['Exam2'], marker='+', label='Admitted')
plt.scatter(not_admitted['Exam1'], not_admitted['Exam2'], marker='o', label='Not Admitted')
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.legend()
plt.show()

# 数据预处理
X = data.iloc[:, 0:2].values
y = data.iloc[:, 2].values

# 分割训练集和测试集
from sklearn.model_selection import train_test_split
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 LogisticRegression
classifier = LogisticRegression()
classifier.fit(X_train, y_train)

# 模型评估
from sklearn.metrics import accuracy_score, confusion_matrix
y_pred = classifier.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
confusion_matrix = confusion_matrix(y_test, y_pred)

# 进行预测
new_student = np.array([80, 90]).reshape(1, -1)
predicted_admission = classifier.predict(new_student)
print('Predicted admission:', predicted_admission)

# 绘制决策边界
x1 = np.arange(20, 110, 0.5)
x2 = -(classifier.intercept_ + classifier.coef_[0][0]*x1) / classifier.coef_[0][1]
plt.plot(x1, x2, color='red')
plt.scatter(admitted['Exam1'], admitted['Exam2'], marker='+', label='Admitted')
plt.scatter(not_admitted['Exam1'], not_admitted['Exam2'], marker='o', label='Not Admitted')
plt.xlabel('Exam1')
plt.ylabel('Exam2')
plt.legend()
plt.show()

以上代码中,我们使用pandas库读取数据集,并使用matplotlib库对数据进行可视化。然后,我们使用sklearn库进行数据预处理、模型训练和评估。最后,我们使用训练好的模型进行预测,并绘制决策边界。

希望本案例研究能够帮助程序员了解逻辑回归算法的实现过程,并在实际问题中应用。