“达观杯”文本智能处理挑战赛(03)

逻辑回归

http://blog.csdn.net/han_xiaoyang/article/details/49123419

    逻辑回归。它始于输出结果为有实际意义的连续值的线性回归,但是线性回归对于分类的问题没有办法准确而又具备鲁棒性地分割,因此我们设计出了逻辑回归这样一个算法,它的输出结果表征了某个样本属于某类别的概率。
        逻辑回归的成功之处在于,将原本输出结果范围可以非常大的θTX 通过sigmoid函数映射到(0,1),从而完成概率的估测。
    而直观地在二维空间理解逻辑回归,是sigmoid函数的特性,使得判定的阈值能够映射为平面的一条判定边界,当然随着特征的复杂化,判定边界可能是多种多样的样貌,但是它能够较好地把两类样本点分隔开,解决分类问题。
        求解逻辑回归参数的传统方法是梯度下降,构造为凸函数的代价函数后,每次沿着偏导方向(下降速度最快方向)迈进一小部分,直至N次迭代后到达最低点。

决策树

https://www.cnblogs.com/leoo2sk/archive/2010/09/19/decision-tree.html

决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

使用属性选择度量来选择将元组最好地划分成不同的类的属性。所谓决策树的构造就是进行属性选择度量确定各个特征属性之间的拓扑结构。

  构造决策树的关键步骤是分裂属性。所谓分裂属性就是在某个节点处按照某一特征属性的不同划分构造不同的分支,其目标是让各个分裂子集尽可能地“纯”。尽可能“纯”就是尽量让一个分裂子集中待分类项属于同一类别。分裂属性分为三种不同的情况:

  1、属性是离散值且不要求生成二叉决策树。此时用属性的每一个划分作为一个分支。

  2、属性是离散值且要求生成二叉决策树。此时使用属性划分的一个子集进行测试,按照“属于此子集”和“不属于此子集”分成两个分支。

  3、属性是连续值。此时确定一个值作为分裂点split_point,按照>split_point和<=split_point生成两个分支。

  构造决策树的关键性内容是进行属性选择度量,属性选择度量是一种选择分裂准则,是将给定的类标记的训练集合的数据划分D“最好”地分成个体类的启发式方法,它决定了拓扑结构及分裂点split_point的选择。

  属性选择度量算法有很多,一般使用自顶向下递归分治法,并采用不回溯的贪心策略

支持向量机

https://www.cnblogs.com/end/p/3848740.html

支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。

#导入相关库
import pandas as pd
from sklearn.model_selection import train_test_split

#读取数据
data=pd.read_csv('train_set.csv')
data=data.head(1000)
'''
划分开特征和标签

'''
y_train = data['class']
x_train = data.drop('class', 1)


'''
train_test_split将训练数据集分为2分,一份占0.3,用于做验证集,另外的0.7用于作为训练集

'''
X_train, X_val, y_train, y_val = train_test_split(x_train, y_train, test_size=0.3, random_state=2019)
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(ngram_range=(1, 2), min_df=3,max_df=0.9, max_features=100000)
vectorizer.fit(X_train['word_seg'])
x_train = vectorizer.transform(X_train['word_seg'])
X_val = vectorizer.transform(X_val['word_seg'])

'''
导入相关的模型库

'''
from sklearn.cross_validation import StratifiedKFold
from sklearn.linear_model import LogisticRegression  #逻辑回归分类器
from sklearn.svm import SVC  #支持向量机分类器
from sklearn.tree import DecisionTreeClassifier as DTC#导入分类树

## StratifiedKFold能够把数据集按照良恶性一定比例分成五份
### 做五折交叉验证,四份作为训练集,一份作为测试集
### 把三种分类算法在测试集上评估预测的准确率

sfk=StratifiedKFold(y=y_train,n_folds=5,random_state=42,shuffle=True)
lr=LogisticRegression(random_state=42)
svm=SVC(random_state=42)
dtc=DTC()

逻辑回归模型的交叉验证

i=0
for a,b in sfk:
    train_X,train_y=x_train,y_train
    test_x,test_y=X_val,y_val
    lr.fit(train_X,train_y)
    accuracy=lr.score(test_x,test_y)
    i+1
    print("accuracy socre for logistic regression on test set %d is %.5f" %(i,accuracy))
    

决策树分类器的交叉验证

i=0
for a,b in sfk:
    train_X,train_y=x_train,y_train
    test_x,test_y=X_val,y_val
    dtc.fit(train_X,train_y)
    accuracy=dtc.score(test_x,test_y)
    i+1
    print("accuracy socre for logistic regression on test set %d is %.5f" %(i,accuracy))
    

支持向量机模型的交叉验证

i=0
for a,b in sfk:
    train_X,train_y=x_train,y_train
    test_x,test_y=X_val,y_val
    svm.fit(train_X,train_y)
    accuracy=svm.score(test_x,test_y)
    i+1
    print("accuracy socre for logistic regression on test set %d is %.5f" %(i,accuracy))
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值