监督学习-线性分类器

机器学习----监督学习-分类学习

---- 之线性分类器学习(二分类)

  1. 介绍:是一种假设特征与分类结果之间存在线性关系,通过累计每个结果的维度特征与其对应权值的乘积,来得到决策结果。
     
    注:应该先看第3点的,这个顺序换不过来orz
     

  2. Python代码:
    (1)、分割数据:部分数据用于做模型训练(一般需要的数据量比较大,可以通过网上公开的数据源,或者向企业获取,或者自己爬虫??)一部分数据用于测试模型的准确度;
      用到sklearn.cross_valiation里的train_test_split函数;

x_train,x_test,y_train,y_test=train_test_split(data[column_names[1:10]],
data[colum_names[10]],test_size=0.25,random_state=33)

注:我用的sklean包中没有这个模块,这个函数在sklearn_model_selection中,找不到valiation的可以试试有没有这个
  (2)、标准化数据,是每个维度的值均值为0,方差为1(有些数据分量的值本身比较大,会对判断产生影响)让每个数据在同一起跑线上;
  用到的sklearn。preprocessing里的StandardScaler

ss=StandardScalar();
X_train=ss.fit_transform(x_train);
X_test=ss.trainsform(x_test);

  (3)、用训练集来训练模型(其实就是确定参数),有两种方式,一种是逻辑斯蒂回归模型,还有一种是它的快速算法,随机梯度下降参数估计模型; 
 
法一逻辑斯蒂回归:使用sklearn.linear_model中的LogisticRegression模块中的fit函数来构造模型

lr.fit(X_train,Y_train);
lr_y_predict=lr.predict(X_test); #使用predict函数 得到线性预测结果

法二随机梯度下降估计模型:使用sklearn.linear_model中的SGDClassifiar中的fit函数构造模型,以及predict函数预测

sgdc.fit(X_train,Y_train);
sgdc_y_predict=sgdc.predict(X_test);#得出结果

  (5)、性能分析,测试得到的模型的性能(有几种不同的标准不仔细展开)这里也有两个函数可以使用;
一种是上述两种方法中自带的score函数用于获得准确性结果;
另一种是使用sklearn.metrics中的 classification_report函数例如:

classification_report(Y_test,y_predict,target_names=['Benign',...])
#target_names中的参数是需要显示的样本名自己定义,
#Y_test是已知的正确的测试结果,与y_predict是不同模型(lr或sgdc_y_predict)得到的结果进行对比分析
  1. 方法原理:
    (1)、确定样本维度特征值列向量X=<x1,x2,x3…xn>;
    (2)、权重系数,根据样本训练得到列向量W=<w1,w2,w3…wn>;
    (3)、根据以上的列向量,得到以下线性表达式:

    (4)、期待f函数的值落在(0,1)之间,便于二分类,引入逻辑斯蒂函数,则有:

在这里插入图片描述
  (5)、逻辑斯蒂函数必过(0,0.5)根据函数的性质,则以0.5为界进行归类,g>0.5为1;g<0.5为0;
  (6)、最后求上述模型的参数W,b;应用极大似然估计法:
 特征向量X=<x1,x2,…,xn>,分类结果列向量Y=<y1,y2,…,yn>,则:

  可以使用随机梯度下降算法进行快速参数估计;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值