最终任务:网格搜索法对3个模型进行调优_Dxy17的博客-程序员秘密

用前5000条数据对模型进行训练和调参(sklearn中的网格搜索)兄下面的结果来看,单个模型效果最好的是LR,也可能存在参数范围选取不当等原因。

模型 最优参数 F-1
LogisticRegression

C=4.0

max_iter: 100

0.6600
SVM

C=0.7

kernel:linear

0.6222
LightGBM

learning_rate: 0.5

0.6336
AdaBoost learning_rate: 0.6
 n_estimators: 50
0.4006
     
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import svm
import lightgbm as lgb
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import AdaBoostClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import f1_score

train_data = pd.read_csv('./new_data/train_set.csv',nrows = 5000)
train_data.drop(columns=['article','id'], inplace = True)

tfidf=TfidfVectorizer()
X_train=tfidf.fit_transform(train_data['word_seg'])
Y_train = train_data['class']-1

x_train, x_test, y_train, y_test = train_test_split(X_train, Y_train, test_size=0.25, random_state=33)

#logisticRegression                                                                                     
lg = LogisticRegression()
param_lg = {'C':[4.0,3.0,2.0,1.0],
            'penalty':['l1','l2'],
            'maxiter':[10,20,50,100]
        }
lg = GridSearchCV(lg, param_lg)
lg.fit(x_train, y_train)#训练分类器
y_predict = lg.predict(x_test)
acc_train = float((y_predict==y_test).sum())/(len(y_test))#验证集错误率
print("accuracy of LR:",acc_train)
print(f1_score(y_test, y_predict , average='weighted'))  
lg.best_estimator_.get_params()
#svm
clf = svm.SVC(C=0.6, kernel='rbf', gamma=20, decision_function_shape='ovr')
param_svm = {'C':[0.3,0.5,0.6,0.7],
             'kernel':['rbf','linear'],
             'gamma':[18,20,22]
        }
clf = GridSearchCV(clf, param_svm)
clf.fit(x_train, y_train)
y_sv = clf.predict(x_test)
ac = float((y_sv == y_test).sum())/(len(y_test))
print("accuracy of SVM:", ac)
print(f1_score(y_test, y_sv , average='weighted'))  
clf.best_estimator_.get_params()

#adaboost
ada = AdaBoostClassifier()
param_ada = {'C':[0.3,0.5,0.6,0.7],
             'kernel':['rbf','linear'],
             'gamma':[18,20,22]
        }
ada = GridSearchCV(ada, param_ada)
ada.fit(x_train, y_train)
y_ada = ada.predict(x_test)
ac = float((y_ada == y_test).sum())/(len(y_test))
print("accuracy of ada:", ac)
print(f1_score(y_test, y_ada , average='weighted'))  
ada.best_estimator_.get_params()

#lightgbm
lightgbm  = lgb.sklearn.LGBMClassifier()
param_grid = {
    'learning_rate': [0.01, 0.1, 0.5],
    'n_estimators': [30, 40]
}
lightgbm = GridSearchCV(lightgbm, param_grid)
lightgbm.fit(x_train, y_train)
y_lgb = lightgbm.predict(x_test)
acc = lightgbm.score(x_test, y_test)
print(f1_score(y_test, y_lgb , average='weighted'))  
lightgbm.best_estimator_.get_params()
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37548423/article/details/89328334

智能推荐

vue仿今日头条_vue 仿今日头条_公孙珣的博客-程序员秘密

vue 仿今日头条为了增加移动端项目的经验,近一周通过 vue 仿写今日头条,以下就项目实现过程中遇到的问题以及解决方法给出总结,有什么不正确的地方,恳请大家批评指正^ _ ^!,代码仓库地址为 github一、实现功能首页展示查看消息图文懒加载滑动选项卡,切换频道,点击频道切换不同新闻点击选项卡的 + 按钮,实现频道的添加和删除点击搜索按钮,输入关键字,回车进行实时搜索,在结果中高亮显示关键字点...

mysql如何修改汉字_mysql中文乱码问题,需要注意修改的几个地方_Ssiya的博客-程序员秘密

MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。下面将分两部分,分别设置服务器编码和数据 库、数据表与连接部分的编码,从而杜绝中文乱码的出现。一 服务器...

mysql share nothing_分布式数据库的Share Nothing / Share Disk / Share Storage_Niaminis的博客-程序员秘密

在介绍share storage之前,我们首先看下share nothing和share disk。最早期的分布式数据库,整体架构上大致分为share nothing和share disk两类。oracle的RAC集群,是比较典型的share disk模式,而mysql分库分表+大部分NoSQL,是share nothing的代表。RAC的scale out能力相当有限,要提升存储IO/Volum...

stuts1:(Struts)Action类及其相关类_weixin_33755649的博客-程序员秘密

org.apache.struts.action.Action类是Struts的心脏,也是客户请求和业务操作间的桥梁。每个Action类通常设计为代替客户完成某种操作。一旦正确的Action实例确定,就会调用RequestProcessor类的execute()方法。该方法的结构如下://摘自org.apache.struts.action.Action类publicActionF...

网格最短路径算法_i.code的博客-程序员秘密

https://www.cnblogs.com/chnhideyoshi/p/Dijkstra.html

随便推点

信号量_林疯子的博客-程序员秘密

信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为:  <br />extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));  <br />sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;value给出了信号量的初始值。  <br />函数sem_post( sem_t *sem

Linux下的task_struct结构体_linux task_struct__YAO阿瑶的博客-程序员秘密

转自:浅析Linux下的task_struct结构体_lc_29503203的博客-程序员秘密_task_struct本文的重点是剖析task_struct,在这之前我们需要先了解一下进程的概念和Linux下进程控制块PCB。1. 首先什么是进程?1.1 进程可以这样描述:1&gt;进程是程序的一个执行实例;2&gt;进程是正在执行的程序;3&gt;进程是能分配处理器并由处理器执行的实体。按内核观点来谈进程:它担当分配系统资源(CPU时间,内存)的实体。1.2 进程的两个基本

idea 插件和快捷键_idea打开插件窗口快捷键_足球带我奔跑的博客-程序员秘密

快捷键ctrl+shift + +/- 折叠或显示方法ctr+r :查找并替换ctr+f :查找ctr+g :跳到某个指定的行号shift 双击从任何地方查找文件ctrl + shit + n: 查找文件ctrl+n查找类ctrl+f:当前文件中查找关键字   全局 :ctrl + shift+fctrl+r:当前文件中替换             全局:ctr...

Mybatis_总结_05_用_Java API_didi9310的博客-程序员秘密

一、前言使用 MyBatis 的主要 Java 接口就是 SqlSession。你可以通过这个接口来执行命令,获取映射器和管理事务。二、主要类(1)SqlSession 是由 SqlSessionFactory 实例创建的。SqlSessionFactory 对象包含创建 SqlSession 实例的所有方法。(2)而 SqlSessionFactory 本身是由 ...

Day 7 A - Age of Moyu HDU 6386 | 最短路 | SPFA | 链式前向星_TriAzure的博客-程序员秘密

松弛:原来用一根橡皮筋连接p和w两点,现在有一点v到w的路径更短,现在把橡皮筋w点的另一端p换成v点,这样缓解橡皮筋紧绷的压力,让其变得松弛。来自:原博关于SPFA算法来自:原博链式前向星#include &lt;bits/stdc++.h&gt;using namespace std;#define INF 0x3f3f3f3f//可以使用memset//链式前向星+S...

雷军的隐秘布局:金山孵化小米接收_最骚的就是你的博客-程序员秘密

随着金山向移动互联网方向的全面转型,以及MBO(管理层收购)战略的实施,在雷军的“特殊”身份下,金山与小米两家公司也开始逐渐融合。近日,金山软件(03888.HK,下称“金山”)发布公告称,已与小米科技(下称“小米”)达成一项股权出售协议,金山旗下子公司金山云,将以182万美元的价格将9.87%的股份出售给小米。资料显示,完成交易后,金山、小米以及金山云管理层,将分别持有金山云17.57%

推荐文章

热门文章

相关标签