一:梯度下降:

梯度下降本质上是对极小值的无限逼近。先求得梯度,再取其反方向,以定步长在此方向上走一步,下次计算则从此点开始,一步步接近极小值。需要注意的是步长的取值,如果过小,则需要多次迭代,耗费大量时间才能取得极小值;如果过大,则可能难以取得较为接近极小值的点,在极小值两边来回跳跃,无法接近极小值。

而步长的取值往往于梯度有关,如果梯度的值较大,则步长可以取大的值,如果梯度较小,则步长应取较小值。

优势:高效,优化途径多

劣势:需要一些超参数:regularization(正则化)参数以及number of iterations(迭代次数),对feature scalling(特征缩放)敏感。

 from sklearn.linear_model import SGDClassifier as SGD

 x=[[0,0],[1,1]]
y=[0,1]
clf = SGD(alpha=0.0001, average=False, class_weight=None, epsilon=0.1,
eta0=0.0, fit_intercept=True, l1_ratio=0.15,
learning_rate='optimal', loss='hinge', max_iter=5, n_iter=None,
n_jobs=1, penalty='l2', power_t=0.5, random_state=None,
shuffle=True, tol=None, verbose=0, warm_start=False)
clf.fit(x,y)
print(clf.predict([[2,2]]))
print(clf.coef_)
print(clf.intercept_)
print(clf.decision_function([[2,2]])

根据官方网站的代码,使用了SGDClassifier分类器,进行了尝试。

 # coding = UTF-8
from sklearn.linear_model import SGDClassifier as SGD
from sklearn.datasets.samples_generator import make_blobs
import matplotlib.pyplot as plt
import numpy as np X,y = make_blobs(n_samples=50,centers=2,random_state=0,cluster_std=0.6)
clf = SGD(loss='hinge',alpha=0.01,max_iter=200,fit_intercept=True)
clf.fit(X,y)
print("预测1:",clf.predict([[1,10]]))
print("预测2:",clf.predict([[2,2]]))
print("回归系数:",clf.coef_)
print("偏差",clf.intercept_)
print("##################")
print(X.shape)
print(y.shape)

使用make_blobs创建数据测试。

注:

  • loss="hinge": (soft-margin) linear Support Vector Machine ((软-间隔)线性支持向量机),
  • loss="modified_huber": smoothed hinge loss (平滑的 hinge 损失),
  • loss="log": logistic regression (logistic 回归),
  • and all regression losses below(以及所有的回归损失)。

前两个 loss functions(损失函数)是懒惰的,如果一个例子违反了 margin constraint(边界约束),它们仅更新模型的参数, 这使得训练非常有效率,即使使用了 L2 penalty(惩罚)我们仍然可能得到稀疏的模型结果。

梯度下降需注意参数:

alpha:乘以正则化项的常数,默认0.0001。当被设置为‘optimal’时也被用于计算学习效率

fit_intercept:是否该截取截距,默认True。如果为‘False’则假定数据以及居中。

梯度下降常用方法:

fit(X,y,coef_init=None,intercept_init=None,sample_weight=None):拟合线性模型(训练)

X:{类似数组的稀疏矩阵},形式:(n_sanmples,n_features)。

y:类似数组,形式:(n_samples)。

sample_weight:数组样本,形式:(n_samples,),optional(可选),可以设定个别样本的权重,如果不设定,则默认相等。

predict(X):用于预测X样本中的标签(结果/分类)

X:{类似数组的稀疏矩阵},形式:[n_samples,n_features]。

score(X,y,samples_weight=None)::(与上方相同)用于返回测试数据和标签(结果)的平均精度。

二:逻辑回归(逻辑斯特增长模型):

逻辑回归实际为一种分类的线性模型。如图,值域为0~1。如果需要解决非线性问题,与支持向量机SVM的思路相同,即将特征映射到高维来解决问题。因此,也可用梯度下降来求解。

 import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression as Log data=[ [-0.017612,14.053064,0],
[-1.395634,4.662541,1],
[-0.752157,6.538620,0],
[-1.322371,7.152853,0],
[0.423363,11.054677,0],
[0.406704,7.067335,1],
[0.667394,12.741452,0],
[-2.460150,6.866805,1],
[0.569411,9.548755,0],
[-0.026632,10.427743,0],
[0.850433,6.920334,1],
[1.347183,13.175500,0],
[1.176813,3.167020,1],
[-1.781871,9.097953,0],
[-0.566606,5.749003,1],
[0.931635,1.589505,1],
[-0.024205,6.151823,1],
[-0.036453,2.690988,1],
[-0.196949,0.444165,1],
[1.014459,5.754399,1] ] dataMat = np.mat(data)
y=dataMat[:,2]
b=np.ones(y.shape)
x=np.column_stack((b,dataMat[:,0:2]))
x=np.mat(x) model = Log()
model.fit(x,y)
print(model) predicted = model.predict(x)
answer = model.predict_proba(x)
print (predicted)
print(answer)

LogisticRegression中有这些参数需要注意:

penalty:'l1','l2'使用l1正则化,还是l2,默认l2

tol:精度为多少时可以停止计算,默认1e-4(十的负四次方)

C:C越大,正则化因子所占比例越小,C越小,正则化因子所占比例越大,默认1.0

solver:使用什么方法,默认liblinear(线性算法)。newton-cg,lbfgs,liblinear(对小数据集表现较好,大数据集建议使用sag及saga),sag(随即平均梯度下降算法Stochastic Average Gradient desqent solver),saga。

max_iter:最大迭代次数,默认100。

LogisticRegression常用方法:

fit(X,y,sample_weight=None):用于拟合模型(训练)

X:{类似数组的稀疏矩阵},形式:(n_samples,n_features)。

y:类似数组,形式:(n_samples)。

sample_weight:数组样本,形式:(n_samples,),optional(可选),可以设定个别样本的权重,如果不设定,则默认相等。

predict(X):用于预测X样本的标签(结果/分类)

X:同上。

返回C:数组,形式:[n_samples]

predict_proba(X):用于预测为对应标签的概率

X:同上。

返回一个n行k列的数组,n对应样本数量,k为可能的标签(结果/分类),每一行的结果之和应为1

sklearn使用——梯度下降及逻辑回归的更多相关文章

  1. 机器学习算法整理(二)梯度下降求解逻辑回归 python实现

    逻辑回归(Logistic regression) 以下均为自己看视频做的笔记,自用,侵删! 还参考了:http://www.ai-start.com/ml2014/ 用梯度下降求解逻辑回归 Logi ...

  2. [Python]数据挖掘(1)、梯度下降求解逻辑回归——考核成绩分类

    ps:本博客内容根据唐宇迪的的机器学习经典算法  学习视频复制总结而来 http://www.abcplus.com.cn/course/83/tasks 逻辑回归 问题描述:我们将建立一个逻辑回归模 ...

  3. 02-12 Logistic(逻辑)回归

    目录 逻辑回归 一.逻辑回归学习目标 二.逻辑回归引入 三.逻辑回归详解 3.1 线性回归与逻辑回归 3.2 二元逻辑回归的假设函数 3.2.1 让步比 3.2.2 Sigmoid函数图像 3.3 二 ...

  4. Andrew Ng机器学习课程笔记(二)之逻辑回归

    Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...

  5. 机器学习_线性回归和逻辑回归_案例实战:Python实现逻辑回归与梯度下降策略_项目实战:使用逻辑回归判断信用卡欺诈检测

    线性回归: 注:为偏置项,这一项的x的值假设为[1,1,1,1,1....] 注:为使似然函数越大,则需要最小二乘法函数越小越好 线性回归中为什么选用平方和作为误差函数?假设模型结果与测量值 误差满足 ...

  6. 逻辑回归(logic regression)的分类梯度下降

    首先明白一个概念,什么是逻辑回归:所谓回归就是拟合,说明x是连续的:逻辑呢?就是True和False,也就是二分类:逻辑回归即使就是指对于二分类数据的拟合(划分). 那么什么是模型呢?模型其实就是函数 ...

  7. [Deep Learning] 神经网络编程基础 (Basics of Neural Network Programming) - 逻辑回归-梯度下降-计算图

    在神经网络中,假如有m个训练集,我们想把他们加入训练,第一个想到得就是用一个for循环来遍历训练集,从而开始训练.但是在神经网络中,我们换一个计算方法,这就是 前向传播和反向传播. 对于逻辑回归,就是 ...

  8. Sklearn实现逻辑回归

    方法与参数 LogisticRegression类的各项参数的含义 class sklearn.linear_model.LogisticRegression(penalty='l2', dual=F ...

  9. sklearn逻辑回归(Logistic Regression)类库总结

    class sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_inter ...

随机推荐

  1. Linux之相关英文缩写含义

    1.目录名: 名称 英文 英文含义 描述 /boot boot 引导 操作系统的内核及在引导过程中使用的文件 /root root 根 系统管理员的主目录(根目录) /run run 运行 系统运行时 ...

  2. HTTPS 到底加密了什么?

    关于 HTTP 和 HTTPS 这个老生常谈的话题,我们之前已经写过很多文章了,比如这篇<从HTTP到HTTPS再到HSTS>,详细讲解了 HTTP 和 HTTPS 的进化之路,对的没错, ...

  3. 死磕 java集合之WeakHashMap源码分析

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. 简介 WeakHashMap是一种弱引用map,内部的key会存储为弱引用,当jvm gc的时 ...

  4. Python爬虫入门教程 28-100 虎嗅网文章数据抓取 pyspider

    1. 虎嗅网文章数据----写在前面 今天继续使用pyspider爬取数据,很不幸,虎嗅资讯网被我选中了,网址为 https://www.huxiu.com/ 爬的就是它的资讯频道,本文章仅供学习交流 ...

  5. Java设计模式学习总结

    设计模式基础学习总结 这篇总结主要是基于我之前设计模式基础系列文章而形成的的.主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点.谢谢 更多详细内容可以查看我的专栏文章:设计模式 ...

  6. Chapter 5 Blood Type——19

    "Are you feeling faint?" “你感觉头晕吗?” "Yes, sir," I muttered, internally kicking my ...

  7. [二十]JavaIO之StringReader 与 StringWriter

    功能简介 还记得前面说过的CharArrayReader 和 CharArrayWriter吗? CharArray 是数据源 CharArrayReader 是读,  从一个CharArray 中读 ...

  8. Xamarin.Forms 开发资源集合(复制)

    复制:https://www.cnblogs.com/mschen/p/10199997.html 收集整理了下 Xamarin.Forms 的学习参考资料,分享给大家,稍后会不断补充: UI样式 S ...

  9. vscode 输出乱码

    文件-首选项-设置,添加如下配置: "code-runner.runInTerminal": true,

  10. C# 如何添加PPT背景(纯色背景、渐变色背景、图片背景)

    我们在创建Powerpoint文档时,系统默认的幻灯片是空白背景的,很多时候我们需要自定义幻灯片背景,以达到美观的文档效果.在下面的示例中将介绍给PowerPoint幻灯片设置背景的方法,主要包含以下 ...