NLP问题的日常碎碎念

NLP问题本3质其实就是数据为文本,预处理方式不同的机器学习问题。

所以就我复现kaggle比赛的一些经验我可以这么写一点经验。

1.预处理

这个真的是重要中的重要,如果数据集不好,用什么方法效率都很低

相对于英文的预处理,有着非常复杂的去数据的过程。中文感觉只需要一个jieba.stopword和corpus就行。

在这里其实可以用pandas读取数据后,再积累一些堆积的方法,然后一次性给它割的干干净净,这样十分光滑,减少痛苦。

2.模型搭建。

我见过两种模型

1.使用pipeLine将特征提取,模型搭建,参数优化集合在一起。

2.是这种方法,相当于把各种模型进行模块化了,例如:

def model_LR():
    # creating classifier
    clf = LogisticRegression(tol=1e-8, penalty='l2', C=2)
    # training classifier
    clf.fit(X_train, label_train)
    # model type
    print("Model: ",type(clf))
    # Predicting probabilities
    p = clf.predict_proba(X_val)
    return (clf.predict(X_val),p)

 

def model_SVM():
    # creating classifier
    clf = svm.LinearSVC(penalty='l2', loss='squared_hinge',tol=1e-8)
    # training classifier
    clf.fit(X_train, label_train)
    # model type
    print("Model: ",type(clf))
    return clf.predict(X_val)

 

# Bernoulli Naive Baiyes
def model_BernoulliNB():
    # creating classifier
    clf = nb.BernoulliNB(alpha=1.0, binarize=0.0)
    # training classifier
    clf.fit(X_train, label_train)
    # model type
    print("Model: ",type(clf))
    # Predicting probabilities
    p = clf.predict_proba(X_val)
    return (clf.predict(X_val),p)

 

衡量标准有这些

 

def model_evaluation(model,label_test):
    #accuracy=np.mean(model == label_test)
    #print("%.4f"%np.mean(model == label_test))
    # confusion matrix:
    cm = confusion_matrix(label_test, model, labels=None, sample_weight=None)
    tp, fn, fp, tn = cm[0][0], cm[0][1], cm[1][0], cm[1][1]
    precision= float(tp)/(tp+fp)
    recall =  float(tp)/(tp+tn)
    accuracy = np.mean(model == label_test)
    print_results (precision, recall, accuracy)
    return accuracy
    

def print_results (precision, recall, accuracy):
    banner = "Here is the classification report"
    print ('\n',banner)
    print ('=' * len(banner))
    print ('{0:10s} {1:.1f}'.format('Precision',precision*100))
    print ('{0:10s} {1:.1f}'.format('Recall',recall*100))
    print ('{0:10s} {1:.1f}'.format('Accuracy',accuracy*100))
    
    
    #print("*****PRECISION****")
    #print("%.4f"%(tp/(tp+fp)))
    #print("*****RECALL****")
    #print("%.4f"%(tp/(tp+tn)))
    #return accuracy

 

这样就形成了一个模块就可以进行愉快的进行各种算法模型的研究了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南楚巫妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值