逻辑回归算法在Python中的应用

逻辑回归是一种分类算法,常用于因变量是二元(两分类)的情况。换言之,当存在两个类别时,可以使用逻辑回归来分析一个二元因变量与一个或多个名义、序数、区间或比率级别自变量之间的关系。本文将带了解如何使用Python中的sklearn库来实现逻辑回归算法,并通过实践学习sklearn库的使用。

导入所需库

将导入pandas、numpy、matplotlib、seaborn和scipy等库,这些库分别用于读取数据、执行数据转换和可视化数据。

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import scipy.stats as stats

数据集的加载

使用pandas库加载数据集,并检查数据的形状,即列和行的数量。

df = pd.read_csv("Bank_Marketing_project.csv") df.head() df.shape df.describe()

数据预处理

在开始探索性数据分析之前,需要检查数据集中的空值(NaN)并移除或替换它们。

df.isnull().sum()

异常值是相对于最近的数据点和数据集中其他邻近共存值来说极低或极高的数据点。通过绘制箱线图来识别异常值,并使用四分位数方法或Z分数方法来消除异常值。

sns.boxplot(data=df, x='duration') q3 = df['duration'].quantile(.75) q1 = df['duration'].quantile(.25) iqr = q3 - q1 upperrange = q3 + 1.5 * iqr bottomrange = q1 - 1.5 * iqr df1 = df[(df['duration'] > bottomrange) & (df['duration'] < upperrange)] sns.boxplot(data=df1, x='duration', color='purple')

探索性数据分析(EDA)

探索性数据分析(EDA)通过数据可视化方法和统计图表来分析数据集,以总结其关键特征。这是一个关键的过程,用于发现异常和模式,测试假设,并使用图形表示来呈现数据摘要。

plt.subplots(figsize=(12,4)) sns.countplot(x='job', hue='y', data=dfnew, palette='colorblind') plt.ylabel('No. Of Customers') plt.show()

标签编码

机器学习中,经常处理包含多个标签的列的数据集。标签通常以数字或文字的形式存在。标签编码是数据预处理的重要步骤,它将标签转换为从0开始的数字形式,使其成为机器可读的。

from sklearn.preprocessing import LabelEncoder for column in bank.columns: if bank[column].dtype == np.number: continue bank[column] = LabelEncoder().fit_transform(bank[column]) bank.head()

相关性矩阵

相关性矩阵是一个显示变量之间相关系数的表格。每个变量都沿着行和列绘制。行和列的交叉点给出了这些变量之间的相关系数。值介于-1和1之间。值越接近-1,变量之间的负相关性越强;值越接近+1,变量之间的正相关性越强。

plt.subplots(figsize=(8,8)) sns.heatmap(bank.corr(), annot=True, fmt='0.0%') plt.show()

数据集划分为训练集和测试集

from sklearn.model_selection import train_test_split X = bank.iloc[:, 1:bank.shape[1]].values Y = bank.iloc[:, 0].values X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=1)

构建逻辑回归模型

from sklearn.linear_model import LogisticRegression logmodel = LogisticRegression(solver='sag', random_state=100, multi_class='ovr') logmodel.fit(X_train, Y_train) print(logmodel.score(X_train, Y_train)) print(logmodel.score(X_test, Y_test)) print(logmodel.intercept_) print(logmodel.coef_) from sklearn.metrics import confusion_matrix cm = confusion_matrix(Y_test, logmodel.predict(X_test)) TN = cm[0][0] FN = cm[1][0] FP = cm[0][1] TP = cm[1][1] print(cm) print('The model testing accuracy = {}'.format((TP+TN)/(TP+TN+FN+FP))) sns.heatmap(cm/np.sum(cm), annot=True, fmt='.2%', cmap='Blues') plt.show()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485