当前位置: 首页 > news >正文

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)#人工拟合数据
http://www.cnnetsun.cn/news/69351.html

相关文章:

  • 构造函数返回对象时的陷阱:为什么 `return {}` 会覆盖 new 操作符的默认行为
  • 宏任务与微任务的边界:为什么在不同浏览器环境下 Promise 的执行时序可能不一致
  • 智能工牌如何帮房企智能盘客,提升销售转化?
  • LP3713CH_5W/SOP7隔离适配器和充电器自供电PSR控制芯片 典型应用电路
  • FT8393MB1(5V/2.4A)12W线式电源控制芯片 典型应用电路
  • [吾爱大神原创工具] Python脚本打包为“EXE”工具(史上最高颜值)
  • 当电机遇上滑移:四轮驱动车能耗与稳定性的双线作战
  • AI视频工具普及,为何内容团队工时反增20%?
  • SQL多表查询实战:7种JOIN详解
  • 变量传递总是出错?掌握这3个核心原理,轻松打通R与Python壁垒
  • jmeter基础使用方法
  • 直接打开MATLAB,先来点刺激的——搞个巴特沃斯低通滤波器。别被名字吓到,其实就是个能让低频信号通过,高频滚犊子的电路模型。看这段
  • 大模型应用开发核心:构建高效准确的提示词指南
  • OpenAI发布GPT-5.2:是王者归来还是强弩之末?
  • HTTPS DDoS 排查 异常流量到抓包分析
  • 12、Docker与Kubernetes使用指南
  • 行为树优化全攻略(性能翻倍的4个秘密武器)
  • 直流电机双闭环调速系统仿真模型:转速外环与电流内环PI参数整定指南,无静差跟踪实现功能介绍
  • 滑膜控制下的差动制动防侧翻稳定系统设计与仿真验证:横摆力矩分配策略及其实车测试分析
  • 模型压缩技术详解:剪枝、量化与知识蒸馏,让你的大模型轻量化部署
  • Iridescent:Day23
  • Laravel 13多模态权限实现技巧(99%的开发者忽略的关键细节)
  • 测试数据自动生成方法:策略、实施与最佳实践
  • 【医疗数据安全防线】:如何用PHP构建自动备份体系
  • 【R-Python模型融合实战】:揭秘跨平台建模结果验证的5大核心步骤
  • 从田间到R控制台,方差分析如何改变传统农业决策?
  • 基于comsol的多层冻土地基冻涨模型研究:低温热流固三场耦合效应的固体力学模拟
  • 2025年最新阿勒泰地区道路矢量数据
  • 设计模式[10]——外观模式一分钟彻底说清楚
  • Temu 分销重塑跨境生态:轻资产时代的新增长法则