《人工智能导论》实验2 基于逻辑回归的助学贷款还款风险预测_第1页
《人工智能导论》实验2 基于逻辑回归的助学贷款还款风险预测_第2页
《人工智能导论》实验2 基于逻辑回归的助学贷款还款风险预测_第3页
《人工智能导论》实验2 基于逻辑回归的助学贷款还款风险预测_第4页
《人工智能导论》实验2 基于逻辑回归的助学贷款还款风险预测_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验2基于逻辑回归的助学贷款还款风险预测一、实验目的及要求理解监督学习中分类任务的基本思想,能够区分分类任务与回归任务在目标形式上的差异。掌握逻辑回归模型的核心原理,理解Sigmoid函数如何将线性得分映射到(0,1)区间以表示概率。掌握分类任务的常用评价指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1分数与混淆矩阵,并能够根据业务场景选择合适的指标。理解分类阈值对模型决策的影响,能够根据“宁可多预警,也不漏掉高风险”等业务需求调整阈值。树立负责任使用分类模型的意识,关注敏感特征可能带来的公平性与伦理风险。二、实验学时2学时(建议时间分配:讲解10分钟,任务实践80分钟,总结报告10分钟)三、实验前准备软件环境:Python3.8及以上,建议使用JupyterNotebook或VSCode。依赖库:NumPy、Pandas、Matplotlib、scikit-learn。安装命令如下:pipinstallnumpypandasmatplotlibscikit-learn知识储备:已学习教材第4.3.1节(监督学习)与4.4.2节(逻辑回归),理解分类与回归的区别。四、实验任务任务1构造实验数据集(10分钟)参考教材表4-7,构造一个助学贷款还款风险数据集。每条样本包含:GPA(绩点)、家庭人均月收入(千元)、是否有兼职经历(0/1)、专业类型、贷款金额(万元)、是否按时还款(0/1)。任务2数据预处理(15分钟)将类别型特征“专业类型”进行独热编码;将数据集按8:2划分为训练集与测试集;对数值特征进行标准化处理。任务3训练逻辑回归模型(15分钟)使用LogisticRegression训练二分类模型。由于数据量较小,本实验使用solver='liblinear'以获得更稳定的收敛效果。输出模型系数,分析各特征对“按时还款概率”的影响方向。任务4模型评估(20分钟)计算准确率、精确率、召回率、F1分数,绘制混淆矩阵;结合资助中心的业务目标,解释不同指标的含义。任务5阈值调整实验(20分钟)改变分类阈值(如0.3、0.5、0.7),观察精确率与召回率的变化,绘制阈值—指标曲线,理解二者的权衡关系。参考代码以下为完整可运行代码。若图表中文显示为方框,请根据本地环境修改plt.rcParams中的字体名称:#实验三:基于逻辑回归的助学贷款还款风险预测

importnumpyasnp

importpandasaspd

importmatplotlib.pyplotasplt

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.preprocessingimportStandardScaler

fromsklearn.linear_modelimportLogisticRegression

fromsklearn.metricsimport(

accuracy_score,precision_score,recall_score,f1_score,

confusion_matrix,classification_report

)

#设置中文字体

plt.rcParams['font.sans-serif']=['SimHei','MicrosoftYaHei','ArialUnicodeMS']

plt.rcParams['axes.unicode_minus']=False

#1.构造数据集

np.random.seed(42)

n=300

data=pd.DataFrame({

"GPA":np.round(np.random.uniform(2.0,4.5,n),2),

"家庭人均月收入":np.round(np.random.uniform(3,15,n),1),

"是否有兼职":np.random.randint(0,2,n),

"专业类型":np.random.choice(["理工","文史","经管"],n),

"贷款金额":np.round(np.random.uniform(1,5,n),1),

})

#生成标签:加入随机噪声,使任务更接近真实场景

score=(

0.6*data["GPA"]

+0.08*data["家庭人均月收入"]

+0.25*data["是否有兼职"]

-0.05*data["贷款金额"]

+np.random.normal(0,0.5,n)

)

data["是否按时还款"]=(score>score.median()).astype(int)

print("数据集样本量:",data.shape[0])

print("按时还款分布:\n",data["是否按时还款"].value_counts())

#2.独热编码

X=pd.get_dummies(data.drop("是否按时还款",axis=1),columns=["专业类型"],drop_first=True)

y=data["是否按时还款"]

#3.划分与标准化

X_train,X_test,y_train,y_test=train_test_split(

X,y,test_size=0.2,random_state=42

)

scaler=StandardScaler()

num_cols=["GPA","家庭人均月收入","贷款金额"]

X_train[num_cols]=scaler.fit_transform(X_train[num_cols])

X_test[num_cols]=scaler.transform(X_test[num_cols])

#4.训练逻辑回归(使用liblinear求解器,适合小数据集)

model=LogisticRegression(random_state=42,solver='liblinear')

model.fit(X_train,y_train)

#5.预测与评估

y_pred=model.predict(X_test)

y_prob=model.predict_proba(X_test)[:,1]

print("\n混淆矩阵:")

print(confusion_matrix(y_test,y_pred))

print("\n分类报告:")

print(classification_report(y_test,y_pred,target_names=["未按时","按时"]))

print(f"准确率:{accuracy_score(y_test,y_pred):.4f}")

print(f"精确率:{precision_score(y_test,y_pred):.4f}")

print(f"召回率:{recall_score(y_test,y_pred):.4f}")

print(f"F1分数:{f1_score(y_test,y_pred):.4f}")

#输出特征系数

print("\n特征系数(系数越大,对“按时还款”的正面影响越强):")

forname,coefinzip(X.columns,model.coef_[0]):

print(f"{name}:{coef:.4f}")

#6.阈值调整实验

thresholds=np.arange(0.1,0.95,0.05)

precisions,recalls,f1s=[],[],[]

fortinthresholds:

pred_t=(y_prob>=t).astype(int)

precisions.append(precision_score(y_test,pred_t,zero_division=0))

recalls.append(recall_score(y_test,pred_t,zero_division=0))

f1s.append(f1_score(y_test,pred_t,zero_division=0))

plt.figure(figsize=(8,5))

plt.plot(thresholds,precisions,label="精确率",marker="o")

plt.plot(thresholds,recalls,label="召回率",marker="s")

plt.plot(thresholds,f1s,label="F1",marker="^")

plt.xlabel("分类阈值")

plt.ylabel("指标值")

plt.title("不同阈值下的精确率、召回率与F1")

plt.legend()

plt.grid(True)

plt.show()

预期结果(参考)运行代码后,你应看到类似以下的结果:混淆矩阵:

[[198]

[825]]

分类报告:

precisionrecallf1-scoresupport

未按时0.700.700.7027

按时0.760.760.7633

准确率:0.7333

精确率:0.7576

召回率:0.7576

F1分数:0.7576

特征系数:

GPA:1.2980

家庭人均月收入:0.6882

是否有兼职:0.9808

贷款金额:-0.0797

专业类型_理工:-0.2060

专业类型_经管:0.1309结果解读:准确率约为0.73,说明模型在测试集上能正确识别约73%的学生;GPA、家庭收入、兼职经历系数为正,说明这些因素有助于按时还款;贷款金额系数为负,说明贷款金额越高,还款风险越大。结果记录表请将你的实验结果填入下表:项目数值业务含义准确率所有预测中正确的比例精确率预测为“按时”的样本中真正按时还款的比例召回率真正按时还款的样本中被正确识别的比例F1分数精确率与召回率的调和平均最重要的正向特征对按时还款促进作用最大的特征最重要的负向特征对按时还款抑制作用最大的特征五、实验重点、难点重点:逻辑回归“线性组合+Sigmoid映射”的模型结构、分类评估指标的含义与计算、混淆矩阵的解读。难点:理解概率阈值的选择如何影响精确率与召回率的权衡;理解逻辑回归系数的方向与大小对业务决策的解释意义。六、操作要点类别型特征必须进行独热编码,不能直接输入模型。建议先使用默认阈值0.5得到基线结果,再根据不同业务目标调整阈值。若数据类别不平衡,应重点关注F1分数与混淆矩阵,而非单一的准确率。实验结束后,思考“是否应该将性别、家庭住址等敏感属性作为特征”,并在报告中说明理由。七、注意事项逻辑回归默认带有L2正则化,特征量纲差异较大时务必先标准化。精确率与召回率往往此消彼长,需结合具体业务场景进行取舍。本实验数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论