山东省建设部官方网站企业建网站需要准备哪些资料呢
2026/1/1 15:44:23 网站建设 项目流程
山东省建设部官方网站,企业建网站需要准备哪些资料呢,oss如何做网站,wordpress关闭rss功能一、多分类策略 逻辑回归处理多分类主要有三种策略#xff1a; OvR#xff08;One-vs-Rest#xff09; 为每个类别训练一个二分类器 预测时选择概率最高的类别 Scikit-learn默认使用此方法 OvO#xff08;One-vs-One#xff09; 为每对类别训练一个分类器 适合类别较少但样…一、多分类策略逻辑回归处理多分类主要有三种策略OvROne-vs-Rest为每个类别训练一个二分类器预测时选择概率最高的类别Scikit-learn默认使用此方法OvOOne-vs-One为每对类别训练一个分类器适合类别较少但样本均衡的情况Softmax回归Multinomial直接输出多个类别的概率分布使用交叉熵损失函数二、完整实战代码示例importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsfromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_split,cross_val_score,GridSearchCVfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLogisticRegressionfromsklearn.metricsimport(classification_report,confusion_matrix,accuracy_score,roc_curve,auc,roc_auc_score)fromsklearn.multiclassimportOneVsRestClassifierimportwarnings warnings.filterwarnings(ignore)# 设置中文显示plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]False步骤1加载和准备数据# 加载鸢尾花数据集3个类别irisdatasets.load_iris()Xiris.data yiris.target feature_namesiris.feature_names target_namesiris.target_namesprint(f特征形状:{X.shape})print(f标签形状:{y.shape})print(f类别:{target_names})print(f特征名:{feature_names})# 查看数据分布print(\n类别分布:)fori,nameinenumerate(target_names):print(f{name}:{np.sum(yi)}个样本)# 划分训练集和测试集X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.3,random_state42,stratifyy)# 标准化特征scalerStandardScaler()X_train_scaledscaler.fit_transform(X_train)X_test_scaledscaler.transform(X_test)步骤2模型训练与评估方法1使用默认的OvR策略# 创建逻辑回归模型默认使用OvRmodel_ovrLogisticRegression(multi_classovr,# One-vs-Restsolverlbfgs,# 适用于小数据集max_iter1000,random_state42,C1.0# 正则化强度越小正则化越强)# 训练模型model_ovr.fit(X_train_scaled,y_train)# 预测y_pred_ovrmodel_ovr.predict(X_test_scaled)y_pred_proba_ovrmodel_ovr.predict_proba(X_test_scaled)# 评估print( OvR策略评估 )print(f准确率:{accuracy_score(y_test,y_pred_ovr):.4f})print(\n分类报告:)print(classification_report(y_test,y_pred_ovr,target_namestarget_names))方法2使用Softmax回归# 创建Softmax回归模型model_softmaxLogisticRegression(multi_classmultinomial,# Softmax回归solverlbfgs,max_iter1000,random_state42,C1.0)# 训练模型model_softmax.fit(X_train_scaled,y_train)# 预测y_pred_softmaxmodel_softmax.predict(X_test_scaled)# 评估print(\n Softmax回归评估 )print(f准确率:{accuracy_score(y_test,y_pred_softmax):.4f})print(\n分类报告:)print(classification_report(y_test,y_pred_softmax,target_namestarget_names))方法3使用OneVsRestClassifier包装器# 使用包装器实现OvRmodel_ovr_wrapperOneVsRestClassifier(LogisticRegression(solverlbfgs,max_iter1000,random_state42))model_ovr_wrapper.fit(X_train_scaled,y_train)y_pred_ovr_wrappermodel_ovr_wrapper.predict(X_test_scaled)print(\n OvR包装器评估 )print(f准确率:{accuracy_score(y_test,y_pred_ovr_wrapper):.4f})步骤3可视化分析defplot_confusion_matrix(y_true,y_pred,class_names,title):绘制混淆矩阵cmconfusion_matrix(y_true,y_pred)plt.figure(figsize(8,6))sns.heatmap(cm,annotTrue,fmtd,cmapBlues,xticklabelsclass_names,yticklabelsclass_names)plt.title(f混淆矩阵 -{title},fontsize14)plt.ylabel(真实标签)plt.xlabel(预测标签)plt.tight_layout()plt.show()# 绘制混淆矩阵plot_confusion_matrix(y_test,y_pred_ovr,target_names,OvR策略)# 绘制特征重要性defplot_feature_importance(model,feature_names,target_names):绘制特征重要性权重ifhasattr(model,coef_):weightsmodel.coef_ fig,axesplt.subplots(1,len(target_names),figsize(15,5))fori,(ax,class_name)inenumerate(zip(axes,target_names)):ax.barh(feature_names,weights[i])ax.set_title(f类别:{class_name})ax.set_xlabel(权重)plt.suptitle(逻辑回归特征权重每个类别的决策边界,fontsize14)plt.tight_layout()plt.show()plot_feature_importance(model_ovr,feature_names,target_names)步骤4概率可视化# 绘制预测概率分布defplot_probability_distribution(y_pred_proba,y_true,target_names):绘制预测概率分布fig,axesplt.subplots(1,3,figsize(15,5))fori,(ax,class_name)inenumerate(zip(axes,target_names)):# 获取属于当前类别的样本的概率true_class_mask(y_truei)prob_for_classy_pred_proba[true_class_mask,i]ax.hist(prob_for_class,bins20,alpha0.7,colorskyblue,edgecolorblack)ax.set_title(f{class_name}的预测概率分布)ax.set_xlabel(预测概率)ax.set_ylabel(样本数)ax.grid(True,alpha0.3)plt.suptitle(各类别预测概率分布,fontsize14)plt.tight_layout()plt.show()plot_probability_distribution(y_pred_proba_ovr,y_test,target_names)步骤5模型调优# 使用网格搜索寻找最佳参数param_grid{C:[0.001,0.01,0.1,1,10,100],# 正则化强度solver:[lbfgs,liblinear,saga],max_iter:[100,500,1000]}# 创建网格搜索grid_searchGridSearchCV(LogisticRegression(multi_classovr,random_state42),param_grid,cv5,scoringaccuracy,n_jobs-1,verbose1)# 执行网格搜索grid_search.fit(X_train_scaled,y_train)print(\n 网格搜索结果 )print(f最佳参数:{grid_search.best_params_})print(f最佳交叉验证准确率:{grid_search.best_score_:.4f})print(f测试集准确率:{grid_search.score(X_test_scaled,y_test):.4f})# 使用最佳模型best_modelgrid_search.best_estimator_ y_pred_bestbest_model.predict(X_test_scaled)print(\n 最佳模型评估 )print(classification_report(y_test,y_pred_best,target_namestarget_names))步骤6交叉验证评估# 交叉验证评估模型稳定性cv_scorescross_val_score(best_model,X_train_scaled,y_train,cv5,scoringaccuracy)print(\n 交叉验证结果 )print(f交叉验证准确率:{cv_scores.mean():.4f}(/-{cv_scores.std()*2:.4f}))print(f各折准确率:{cv_scores})# 绘制交叉验证结果plt.figure(figsize(10,6))plt.plot(range(1,6),cv_scores,markero,linewidth2,markersize8)plt.axhline(ycv_scores.mean(),colorr,linestyle--,labelf均值:{cv_scores.mean():.4f})plt.fill_between(range(1,6),cv_scores.mean()-cv_scores.std(),cv_scores.mean()cv_scores.std(),alpha0.2,colorgray)plt.title(5折交叉验证准确率,fontsize14)plt.xlabel(折数)plt.ylabel(准确率)plt.legend()plt.grid(True,alpha0.3)plt.ylim([0.8,1.0])plt.show()三、关键要点总结1.策略选择类别较少且均衡考虑OvO类别较多使用OvR或SoftmaxSoftmax通常更直接但需要计算所有类别的概率2.特征工程逻辑回归对特征缩放敏感务必标准化特征间的多重共线性会影响结果3.正则化参数C控制正则化强度C越小正则化越强防止过拟合的重要工具4.模型评估多分类使用准确率、混淆矩阵、分类报告考虑使用宏平均和微平均5.注意事项逻辑回归假设特征与log odds线性相关对于非线性问题需要特征工程或使用核方法类别不平衡时需要调整class_weight参数

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询