news 2026/8/21 0:23:09

python基础(逻辑回归例题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python基础(逻辑回归例题)

一、参数选择

在逻辑回归建模中,“过拟合”是绕不开的坑——当模型在训练数据上表现完美,却在新数据上一塌糊涂时,大概率是模型复杂度超出了数据所能支撑的范围。而惩罚因子(也叫正则化参数),正是我们解决过拟合、平衡模型拟合度与泛化能力的核心工具。

1.通过LogisticRegression(C=i,penalty='l2',solver='lbfgs',max_iter=1000)函数C参数的选择最优惩罚因子。通过K折交叉验证cross_val_score(lr,x_train_w,y_train_w,cv=8,scoring='recall')函数来实现。

scores=[] #不同参数下的验证集评分 c_range=[0.01,0.1,1,10,100] for i in c_range: lr=LogisticRegression(C=i,penalty='l2',solver='lbfgs',max_iter=1000) score=cross_val_score(lr,x_train_w,y_train_w,cv=8,scoring='recall') score_m=sum(score)/len(score) scores.append(score_m) print(score_m) best_c=c_range[np.argmax(scores)] print("最优惩罚因子",best_c) lr=LogisticRegression(C=best_c,penalty='l2',solver='lbfgs',max_iter=1000) lr.fit(x_train_w,y_train_w) from sklearn import metrics train_predict=lr.predict(x_train_w) print(metrics.classification_report(y_train_w,train_predict))#获得混淆矩阵的准确值,召回值。 cm_plot(y_train_w,train_predict).show() test_predict=lr.predict(x_test_w) print(metrics.classification_report(y_test_w,test_predict,digits=6))#获得混淆矩阵的准确值,召回值。 cm_plot(y_test_w,test_predict).show()

二、下采样

下采样的核心是“削减多数类样本”,将不同类别的数量平衡一下,减少多的类别的数量

在案例中使用代码:

x_train_w=train_data[train_data['Class']==1]
y_train_w=train_data[train_data['Class']==0]
y_train_w=y_train_w.sample(len(x_train_w))

使用sample函数从y_train_w中抽取x_train_w的数量。

data=pd.read_csv("creditcard.csv") scaler=StandardScaler() data['Amount']=scaler.fit_transform(data[['Amount']]) data=data.drop(['Time'],axis=1)#axis=1,表示删除列 x=data.drop('Class',axis=1) y=data.Class x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0) train_data=x_train train_data['Class']=y_train x_train_w=train_data[train_data['Class']==1] y_train_w=train_data[train_data['Class']==0] y_train_w=y_train_w.sample(len(x_train_w)) data_c=pd.concat([x_train_w,y_train_w]) x_train_w_1=data_c.drop('Class',axis=1) y_train_w_1=data_c.Class scores=[] c_range=[0.01,0.1,1,10,100] for i in c_range: lr=LogisticRegression(C=i,penalty='l2',solver='lbfgs',max_iter=1000) score=cross_val_score(lr,x_train_w_1,y_train_w_1,cv=10,scoring='recall') score_m=sum(score)/len(score) scores.append(score_m) print(score_m) best_c=c_range[np.argmax(scores)] print("最优因子:",best_c) lr=LogisticRegression(C=best_c,penalty='l2',solver='lbfgs',max_iter=1000) lr.fit(x_train_w_1,y_train_w_1)

三、过采样

上采样的核心是“扩充少数类样本”

我们可以使用SMOTE(合成少数类过采样技术)——在少数类样本的特征空间中,找到每个样本的k个近邻,通过插值生成新的少数类样本(如样本A和样本B的近邻,新样本=A+rand(0,1)*(B-A))

from imblearn.over_sampling import SMOTE oversampler=SMOTE(random_state=100)#保证数据拟合效果,随机种子 os_x_train,os_y_train=oversampler.fit_resample(x_train,y_train)#人工拟合数据
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 23:34:43

从零搭建可扩展事件系统:低代码PHP组件开发的6个黄金步骤

第一章:从零理解低代码PHP事件系统的核心概念在现代Web开发中,事件驱动架构正逐渐成为构建灵活、可扩展应用的核心模式。低代码PHP框架通过封装复杂的底层逻辑,使开发者能够以极少的编码实现事件的注册、触发与监听。其本质是将程序中的特定动…

作者头像 李华
网站建设 2026/8/21 23:36:43

你还在手动转换数据?R Shiny中这4个组件让多格式导入自动化

第一章:R Shiny中多格式数据导入的自动化变革在现代数据分析工作流中,R Shiny 应用正逐步从静态展示工具演变为动态交互平台。其中,多格式数据导入的自动化成为提升用户体验与系统灵活性的关键环节。通过集成多种文件解析机制,Shi…

作者头像 李华
网站建设 2026/8/20 23:33:16

动态内存管理中的暗雷:内存碎片产生原理与4步清除法

第一章:内存的碎片内存管理是操作系统最核心的功能之一,而“内存碎片”则是长期困扰系统性能的关键问题。随着程序频繁申请与释放内存,物理或虚拟内存空间会逐渐被分割成大量不连续的小块区域,这些区域单独来看不足以满足较大内存…

作者头像 李华
网站建设 2026/8/21 13:39:53

深入Zend引擎:Rust如何安全注册PHP函数(专家级避坑指南)

第一章:深入Zend引擎:Rust如何安全注册PHP函数(专家级避坑指南)在现代PHP扩展开发中,利用Rust编写高性能、内存安全的Zend扩展正成为趋势。然而,将Rust函数安全地注册到Zend引擎并非简单绑定,需…

作者头像 李华
网站建设 2026/8/21 23:40:01

从算力浪费到效能倍增:openFuyao应用货架的实践与突破

在AI和大数据应用爆发的今天,开发者常面临一个尴尬的困境:明明部署了高性能硬件,却跑不出预期的效率。模型推理延迟居高不下,大数据任务总在"等待资源",GPU利用率长期徘徊在30%以下——这些问题的根源往往不…

作者头像 李华