逻辑回归实战——银行贷款案例初步实现
原理:
逻辑回归是一种用于二分类的统计方法,通过Sigmoid函数将线性回归的输出映射为概率。它使用对数损失函数衡量预测与真实标签的差异,并通过最大似然估计或梯度下降法优化模型参数。尽管名称中有“回归”,但它主要用于分类任务。
实例:
下面我们用逻辑回归的算法思想,初步实现一个有关银行贷款的案例。
1、导入相关的库
用pandas库对数据进行预处理
import pandas as pd
from sklearn.preprocessing import StandardScaler
2、数据预处理
接着进行数据读取,将数据实例化、标准化,并删除不需要的列
data=pd.read_csv('creditcard.csv')
scaler =StandardScaler() #实例化 标准化 对象Scaler
# a=data[['Amount']]
# b=data['Amount']
data['Amount']=scaler.fit_transform(data[['Amount']]) #将计算后的标准差存入data
data=data.drop(['Time'],axis=1) #删除Time列的内容,axis为1表示列
3、可视化处理
绘制图形,查看正负样本个数
import matplotlib.pyplot as plt
from pylab import mpl #借助pylab实现中文显示
mpl.rcParams['font.sans-serif']=['Microsoft YaHei']
mpl.rcParams['axes.unicode_minus']=False
labels_count=pd.value_counts(data['Class']) #统计data['class']中每个类的个数
print(labels_count)
plt.title('正负例样本数') #设置标题
plt.xlabel('类别') #设置x轴标题
plt.ylabel('频数') #设置y轴标题
labels_count.plot(kind='bar') #设置图像类型为bar
plt.show()
4、数据切分
将数据集分割为训练集与测试集,并将特征与标签分离
from sklearn.model_selection import train_test_split
#对原始数据进行切分
x_whole=data.drop('Class',axis=1)
y_whole=data.Class
#返回4个数据集
x_train_w,x_test_w,y_train_w,y_test_w=\
train_test_split(x_whole,y_whole,test_size=0.3,random_state=1000)
5、创建模型并训练
from sklearn.linear_model import LogisticRegression
lr=LogisticRegression(C=0.01) #创建模型
lr.fit(x_train_w,y_train_w) #训练模型
6、预测并评估模型
test_predicted=lr.predict(x_test_w)
result = lr.score(x_test_w,y_test_w)
from sklearn import metrics
print(metrics.classification_report(y_test_w,test_predicted))
7、结果展示
8、完整代码如下
import pandas as pd
from sklearn.preprocessing import StandardScaler
data=pd.read_csv('creditcard.csv')
scaler =StandardScaler() #实例化 标准化 对象Scaler
# a=data[['Amount']]
# b=data['Amount']
data['Amount']=scaler.fit_transform(data[['Amount']]) #将计算后的标准差存入data
data=data.drop(['Time'],axis=1) #删除Time列的内容,axis为1表示列
import matplotlib.pyplot as plt
from pylab import mpl #借助pylab实现中文显示
mpl.rcParams['font.sans-serif']=['Microsoft YaHei']
mpl.rcParams['axes.unicode_minus']=False
labels_count=pd.value_counts(data['Class']) #统计data['class']中每个类的个数
print(labels_count)
plt.title('正负例样本数') #设置标题
plt.xlabel('类别') #设置x轴标题
plt.ylabel('频数') #设置y轴标题
labels_count.plot(kind='bar') #设置图像类型为bar
plt.show()
from sklearn.model_selection import train_test_split
#对原始数据进行切分
x_whole=data.drop('Class',axis=1)
y_whole=data.Class
#返回4个数据集
x_train_w,x_test_w,y_train_w,y_test_w=\
train_test_split(x_whole,y_whole,test_size=0.3,random_state=1000)
from sklearn.linear_model import LogisticRegression
lr=LogisticRegression(C=0.01) #创建模型
lr.fit(x_train_w,y_train_w) #训练模型
test_predicted=lr.predict(x_test_w)
result = lr.score(x_test_w,y_test_w)
from sklearn import metrics
print(metrics.classification_report(y_test_w,test_predicted))
总结:
逻辑回归是一种简单而有效的分类算法,常用于预测二分类问题。它通过线性组合特征并使用Sigmoid函数将结果转化为概率,判断样本属于某一类的可能性。模型通过最小化对数损失函数来优化参数,通常采用梯度下降法进行求解。尽管名字带有“回归”,但它主要用于分类任务,是机器学习中的基础算法之一。