版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在第2章,线性回归里面,我们介绍了一元线性回归,多元线性回归和多项式回归。这些模型都是广一章,我们讨论广义线性回归模型的具体形式的另一种形式,逻辑回归(logscregresson)。配到相关的类和上。学习算法必须用成对的特征向量和对应的来估计匹配函数的参数,从而实现更好的分类效果。在二元分类(binaryclassification)中,分类算法必须把一个实例配置两个类NCAA比赛中第一场的输赢。多元分类中,分类算法需要为每个实例都分类一组。本章,我们普通的线性回归假设响应变量呈正态分布,也称为分布(Gaussiandistribution)或钟形曲(bellcurve)。正态分布数据是对称的,且均值,中位数和众数(mode)是一样的。很多自然现象(Bernoullidistribution),又称两点分布或者0-1分布。表示一个发生的概率是P,不发生的概−的通过线性组合的方式来联接服从正态分布的响应变量。如果响应变量从正态分布,就要用另外在逻辑回归里,响应变量描述了类似于掷一个硬币结果为正面的概率。如果响应变量等于或超过了指定的临界值,预测结果就是正面,否则预测结果就是。响应变量是一个像线性回归中的解释变量构成的函数表示,称为逻辑函数(logscncton)。一个值在{0,1}之间的逻辑函数如下所示:F(t) 1+In%%matplotlibimportmatplotlib.pyplotasfrommatplotlib.font_managerimportfont=FontProperties(fname=r"c:\windows\fonts\msyh.ttc",Inimportimportnumpyasplt.axis([-6,6,0,1])X=np.arange(-y=1/(1+np.e**(-X))plt.plot(X,y,'b-');F(t) 1+g(x)=ln1−
=
+经典的二元分类问题就是邮件分类(spamclassification)。这里,我们分类。我们用第三章介绍的TF-IDF算法来抽取的特征向量,然后用逻辑回归分类。我们可以用UCIMachineLearning()的分类数据集(SMSClassificationDataSet)。首先,我们还是用PandasInimportimportpandasasdf=pd.read_csv('mlslpic/SMSSpamCollection',delimiter='\t',) 数量:',df[df[0]== 数量:',df[df[0]== hamGountiljurongpoint,crazy..Availableonly Oklar...Jokingwifuspamentryin2awklycomptowinFACuphamUdunsaysoearlyhor...UcalreadythenhamNahIdon'tthinkhegoestousf,helives含 数量:含 数量:每条信息的前面经被打上了。共54条里面,827条是ham,747条是spam。ham用0标记,spam用1标记。观察数据会看到建模时需要的信息。下面的几条信息体现两种类型的特征:Spam:entryin2awklycomptowinFACupfinaltkts21stSpam:WINNER!!Asavaluednetworkcustomeryouhavebeenselectedtoreceivea£900prizereward!Toclaimcall09061701461.ClaimcodeKL341.Valid12hoursonly.Ham:Sorrymyroommatestookforever,itokifIcomebynow?Ham:Finishedclasswhereareyou.Inimportimportpandasasfromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.linear_model.logisticimportLogisticRegressionfromsklearn.cross_validationimporttrain_test_splitIndfdf=pd.read_csv('mlslpic/SMSSpamCollection',delimiter='\t',)X_train_raw,X_test_raw,y_train,y_test=train_test_split(df[1],Invectorizervectorizer=X_train=vectorizer.fit_transform(X_train_raw)X_test=vectorizer.transform(X_test_raw)Inclassifier=LogisticRegression()classifier.fit(X_train,y_train)predictionsclassifier=LogisticRegression()classifier.fit(X_train,y_train)predictions=classifier.predict(X_test)Inforfori,predictioninenumerate(predictions[-print('预测类型:%s.信息:%s'%(prediction,预测类型:ham.信息:Areucomingtothefuneral预测类型:ham.信息:Loveisn'tadecision,it'safeeling.Ifwecoulddecidewhotolove,then,lifewouldbemuchsimpler,butthenless预测类型:ham信息:DontthinksoItturnsofflikerandomllywithin5minofopening预测类型:spam.信息:Heyhappy预测类型:ham信息:Noneofthat'shappeningtilyougethereth精确率(precision)和率(recall)三项指标,以及综合评价指标(F1measure),ROCAUC值(ReceiverOperatingCharacteristicROC,AreaUnderCurve,AUC)。这些指标评价的样本分类是真阳性(truepositives),真(truenegatives),假阳性(falsepositives),假将一个分辨为ham类。矩阵(Confusionmatrix),也称列联表分析(ContingencyInfromfromsklearn.metricsimportimportmatplotlib.pyplotasy_test=[0,0,0,0,0,1,1,1,1,y_pred=[0,1,0,0,0,0,0,1,1,confusion_matrix=confusion_matrix(y_test,y_pred) [[4[2Infromsklearn.metricsimportfromsklearn.metricsimportaccuracy_scorey_pred,y_true=[0,1,1,0],[1,1,1,1]print(accuracy_score(y_true,y_pred))Inimportnumpyasnpimportimportnumpyasnpimportpandasaspdfromsklearn.feature_extraction.textimportfromsklearn.linear_model.logisticimportfromsklearn.cross_validationimporttrain_test_split,df=X_train_raw,X_test_raw,y_train,y_test=,vectorizer=X_train=vectorizer.fit_transform(X_train_raw)X_test=vectorizer.transform(X_test_raw)classifier=LogisticRegression()classifier.fit(X_train,y_train)scorescross_val_score(classifierX_trainy_traincv=5)print('准确率:',np.mean(scores),scores)准确率:0.958373205742[ 你的结果可能和这些数字不完全相同,毕竟交叉检验的训练集和测试集都是随机抽取的。准确率是分类器预测正确性的比例,但是并不能分辨出假阳性错误和假错误。在有些问题里面,比如第一章的肿瘤预测问题中,假与假阳性要严重得多,其他的问题里可能相反。另外,有时准确率并非一个有效的衡量指标,如果分类的比例在样本中严重失调。比如,分类器预测是否为虚假交易时,假比假阳性更敏感。为了提高客户满意度,部门更倾向于对合法的进行风险检查,往往会忽略虚假。因为绝大部分都是合法的,这里准确率不是一个有效的衡量指标。经常预测出虚假的分类器可能有很高的准确率,但是实际情况可能并非如此。因此,分类器的预测效果还需要另外两个指标:精确率和率。P= R= R 10+Inimportnumpyasnpimportimportnumpyasnpimportpandasaspdfromsklearn.feature_extraction.textimportfromsklearn.linear_model.logisticimportfromsklearn.cross_validationimporttrain_test_split,df=X_train_raw,X_test_raw,y_train,y_test=,vectorizer=X_train=vectorizer.fit_transform(X_train_raw)X_test=vectorizer.transform(X_test_raw)classifier=LogisticRegression()classifier.fit(X_train,y_train)precisions=cross_val_score(classifier,X_train,y_train,cv=5,scoring=print('精确率:',np.mean(precisions),recalls=cross_val_score(classifier,X_train,y_train,cv=5,scoring='re 率:',np.mean(recalls),精确率:0.99217372134[ 率:0.672121212121[ 我们的分类器精确率99.2%,分类器预测出的中99.2%都是真的。率比较低67.2%,就是说真实的中,32.8%被当作正常了,没有被识别出来。这些数据会不断变化,因为训练集和测试集是随机抽取的。综合评价指标(F1measure)是精确率和率的调和均值(harmonicmean),或平均值,1+1 即
1+PF1=2P+综合评价指标平了精确率率。一二分类模型,精确和率为1,那么综合评价指标为1。如果精确率或率为0,那么综合评价标为0。sckilen也提供了计算综合评价指标的函数。Inf1sf1scross_val_score(classifierX_trainy_traincv=5scoring='f1')print('综合评价指标:',np.mean(f1s),f1s)综合评价指标:0.800588878125[0.0.1 ROCROC曲线(RcvrOpaigCracsc,ROCcve)可以用来可视化分类器的效果。和准确率不同,ROC曲线对分类比例不平衡的数据集不敏感,ROC曲线显示的是对超过限定阈值的所有预测结果的分类器效果。ROC曲线画的是分类器的率与误警率(fallou)的曲线。误警率也称假阳性率,是所有样本中分类器识别为阳性的样本所占比例:F= TN+FP提供了计算ROC和AUCInimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotasfromsklearn.feature_extraction.textimportfromsklearn.linear_model.logisticimportfromsklearn.cross_validationimporttrain_test_split,fromsklearn.metricsimportroc_curve,df=X_train_raw,X_test_raw,y_train,y_test=,vectorizer=X_train=vectorizer.fit_transform(X_train_raw)X_test=vectorizer.transform(X_test_raw)classifier=LogisticRegression()classifier.fit(X_train,y_train)predictions=false_positive_rate,recall,thresholds=roc_curve(y_test,,roc_auc=auc(false_positive_rate,recall)plt.title('ReceiverOperatingCharacteristic')plt.plot(false_positive_rate,recall,'b',label='AUC=%0.2f'%roc_auc)plt.legend(loc='lowerright')plt.plot([0,1],[0,1],'r--plt.xlim([0.0,plt.ylim([0.0,1.0])分类模型中,超参数出现在T-IF中,用来移除太频繁和太稀缺单词的频率阈值,目前函数正则化的权重值。在sciktlarn里面,超参数是在模型建立时设置的。面的例子中,我们没有的。网格搜索(Gridsearch)就是用来确定最优超参数的方法。其原理就是选取可能的参数不断运行Inimportpandasasfromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.linear_model.logisticimportLogisticRegressionfromsklearn.grid_searchimportGridSearchCVfromsklearn.pipelineimportfromsklearn.cross_validationimportfromsklearn.metricsimportprecision_score,recall_score,pipeline=('vect',TfidfVectorizer(stop_words='english')),('clf',LogisticRegression())parameters='vectmax_df':(0.25,0.5,0.75),'vectstop_words':('english',None),'vectmax_features':(2500,5000,10000,'vectngram_range':((1,1),(1,2)),'vectuse_idf':(True,False),'vectnorm':('l1','clfpenalty':('l1','clfC':(0.01,0.1,1,}grid_search=GridSearchCV(pipeline,parameters,n_jobs=-1,verbose=1,scoring='accuracy',cv=3)df=pd.read_csv('mlslpic/sms.csv')X,y,=df['message'],df['label']X_train,X_test,y_train,y_test=train_test_split(X,y)grid_search.fit(X_train,y_train)print('最佳效果:%0.3f'%best_parameters=forparam_nameinprint('\t%s:%r'%(param_name,best_parameters[param_name]))predictions=grid_search.predict(X_test)print('准确率:',accuracy_score(y_test,predictions))print('精确率:',precision_score(y_test,predictions)) 率:',recall_score(y_test,predictions))1|||||[Parallel(n_jobs=-1)]:Done1250 | [Parallel(n_jobs=-1)]:Done1800|[Parallel(n_jobs=-1)]:Done2450|[Parallel(n_jobs=-1)]:Done3200|[Parallel(n_jobs=-1)]:Done4050jobs |elapsed:10.6min[Parallel(n_jobs=-1)]:Done4608outof4608|elapsed:Fitting3foldsforeachofclfC:clfpenalty:'l2'vectmax_df:
1536candidates,totalling4608vectmax_features:vectngram_range:(1,2)vectnorm:'l2'vectstop_words:Nonevectuse_idf:True准确率:精确率:率:0.930107526882行,IPython命令行和IPythonNotebookclassification)。比如听到一首歌的样曲之后,可以将其归入某一种音乐风格。这类风格就有许多种。假设你想看,而你又非常讨厌看太次的。所以有品位的你可以在看每部之前都会看一堆影评,不过你更讨厌看影评。那么下面我们就用好影评来给分类。本例中,我们利用烂番茄(RottenTomatoes)影评短语数据对进行评价。每个影评可以归入下面5个类项:不给力(negative),不太给力(somewhatnegative),中等(neutral),有点给力(somewhatpositive),给力(positive)。解释变量不会总是直白的语言,因为影评内容千差万别,有讽刺的,否定的,以及其他语义的表述,语义并不直白,这些都会让分类充满。数据集可以从kaggle(http ysis-on-movie-reviews)上。首先,我们还是用PandasInimportimportz=df=pd.read_csv(z.open(list()[0]),header=0,In011Aseriesofescapadesdemonstratingtheadage...1121Aseriesofescapadesdemonstratingtheadage...2231A2341A24512Indtype:InAseriesofescapadesdemonstratingtheadageAseriesofescapadesdemonstratingtheadageAAofescapadesdemonstratingtheadagethatescapadesdemonstratingtheadagethatwhatdemonstratingtheadagethatwhatisgoodfor...Name:Phrase,dtype:objectInName:Sentiment,dtype:In23140dtype:In23140dtype:可以看出,近5%都是评价为2中等(eral)的。可见,在这个问题里,准确率不是一个有信息量的评价指标,因为即使很烂的分类器预测出中等水平的结果,其准确率也是%。3有点给力(somewtpsiv)的占,4给力osiv)的%,共%。剩下%就是不给力(gv),太给力sotgve)的用sclrn来训练分器:Inimportpandasasfromsklearn.feature_extraction.textimportTfidfVectorizerfromsklearn.linear_model.logisticimportLogisticRegressionfromsklearn.cross_validationimporttrain_test_splitfromsklearn.metricsimportclassification_report,accuracy_score,confusfromsklearn.pipelineimportfromsklearn.grid_searchimportimportpipeline=('vect',TfidfVectorizer(stop_words='english')),('clf',LogisticRegression())parameters='vectmax_df':(0.25,'vectngram_range':((1,1),(1,2)),'vectuse_idf':(True,False),'clfC':(0.1,1,}z=df=pd.read_csv(z.open(list()[0]),header=0,delimiter='\t')X,y=df['Phrase'],df['Sentiment'].as_matrix()X_train,X_test,y_train,y_test=train_test_split(X,y,train_size=0.5)grid_search=GridSearchCV(pipeline,parameters,n_jobs=3,verbose=1,scogrid_search.fit(X_train,print('最佳效果:%0.3fgrid_search.best_score_)best_parameters=forparam_nameinprint('\t%s:%r'%(param_name,1||out723.0min out723.3minFitting3foldsforeachof24candidates,totalling72clfC:vectmax_df:vectngram_range:(1,2)vectuse_idf:False二元分类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Photoshop考试试题汇编及详细答案
- 注册环保工程师专业知识考试真题及答案(2026年)
- 酒店中央空调运维操作规程
- 2026年煤矿测量作业人员(初级)职业技能《理论知识》真题卷(附解析)
- 卒中后神经源性膀胱饮水管理标准化方案共识
- 气化器安全操作规程
- PCB基础培训考核试题(含详细答案)
- 吉林省长春朝阳区六校联考2027届八上数学期末监测模拟试题含解析
- 1型糖尿病运动相关低血糖预防共识
- 2026年电力安全生产事故案例知识竞赛考试试题及答案
- 2026年八年级英语上学期期中考试模拟试题与答案详解(第10套)
- 康复医学科进修报告
- 中国电信历年考试笔试题库及答案
- 青少年积极心理品质培养手册 (标准版)
- 2026年成考专升本政治时政统考专用试题及答案
- 2026年责任督学工作计划
- 《循证针灸临床实践指南·认知障碍》
- 论反恐怖斗争中的国际法困境与突破
- 2026年教师招聘《小学语文》学科专业知识测试卷(附答案)
- 妊娠期糖尿病诊疗指南(2025版)
- 农业生产符合性评价指标要求、水资源保障条件、排水能力分级参考表、江苏耕地质量等级评价地形部位归并表、鉴定意见
评论
0/150
提交评论