news 2026/6/9 22:31:37

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/6/10 17:31:15

专研墙角灯的企业,竟因“不务正业”火出圈?

专研墙角灯的企业,竟因“不务正业”火出圈?背后的逻辑,照明人都该看看“只懂得埋头打磨一颗螺丝钉,在今天的时代,远不足以构建真正的壁垒。真正的专家,是能跳出产品本身,为客户解决一整个系统级…

作者头像 李华
网站建设 2026/6/10 17:28:59

PID控制、BP-PID控制、PSO-BP-PID控制的Simulink仿真代码:清晰、易懂、...

PID控制、BP-PID控制、PSO-BP-PID控制的Simulink仿真。代码清晰、易懂,代码质量极高,便于新手学习和理解。搞过自动控制的同学对PID肯定不陌生,但今天咱们玩点有意思的——用Simulink把传统PID、带神经网络的BP-PID、还有用粒子群优化的PSO-B…

作者头像 李华
网站建设 2026/6/10 17:24:20

玩转Sobol参数灵敏度分析:MATLAB实战手册

基于sobol的全局参数灵敏度分析 可自行更改参数数目和目标函数matlab编程 注:因程序可下载,一经出,概不退换,敬请谅解。遇到十几个参数需要调优的仿真模型怎么办?Sobol全局灵敏度分析就是那个帮你揪出"关键先生"的神器。…

作者头像 李华
网站建设 2026/6/10 17:27:41

基于脉振高频电流注入的永磁同步电机无感FOC。 采用脉振高频电流注入法实现零低速下无感起动运行

基于脉振高频电流注入的永磁同步电机无感FOC。 采用脉振高频电流注入法实现零低速下无感起动运行,相比电压注入法可以省去电流反馈中的两个低通滤波器;相比高频电压注入,估计系统的稳定性不受电机定子电阻、电感变化以及注入信号频率的影响&a…

作者头像 李华
网站建设 2026/6/9 22:31:31

搞工业自动化的兄弟都懂,遇到扫码枪和PLC联机这事儿说简单也不简单。上个月刚在车间折腾完一套FX3U配得利捷扫码枪的方案,今天就把实战经验掏出来聊聊

三菱FX3U与扫码枪通讯程序(SL3U-4) 功能:使用三菱FX3U485BD板,使三菱PLC串口与扫码枪通讯。 实现扫码枪扫条码,反应灵敏,通讯稳定可靠。 其他扫码枪可以参考这个 器件:三菱FX3UPLC,三菱fx3u485BD&#xff0…

作者头像 李华