调用python的sklearn实现Logistic Reression算法

调用python的sklearn实现Logistic Reression算法

先说如何实现,其中的导入数据库和类、方法的关系,之前不是很清楚,现在知道了。。。

from numpy import *
from sklearn.datasets import load_iris     # import datasets

# load the dataset: iris
iris = load_iris()
samples = iris.data
#print samples
target = iris.target 

# import the LogisticRegression
from sklearn.linear_model import LogisticRegression 

classifier = LogisticRegression()  # 使用类,参数全是默认的
classifier.fit(samples, target)  # 训练数据来学习,不需要返回值

x = classifier.predict([5, 3, 5, 2.5])  # 测试数据,分类返回标记

print x 

#其实导入的是sklearn.linear_model的一个类:LogisticRegression, 它里面有许多方法
#常用的方法是fit(训练分类模型)、predict(预测测试样本的标记)

#不过里面没有返回LR模型中学习到的权重向量w,感觉这是一个缺陷

上面使用的

classifier = LogisticRegression()  # 使用类,参数全是默认的

是默认的,所有的参数全都是默认的,其实我们可以自己设置许多。这需要用到官方给定的参数说明,如下:

sklearn.linear_model.LogisticRegression

class sklearn.linear_model.LogisticRegression(penalty=‘l2‘dual=Falsetol=0.0001C=1.0fit_intercept=True,intercept_scaling=1class_weight=Nonerandom_state=None)

Logistic Regression (aka logit, MaxEnt) classifier.

In the multiclass case, the training algorithm uses a one-vs.-all (OvA) scheme, rather than the “true” multinomial LR.

This class implements L1 and L2 regularized logistic regression using the liblinear library. It can handle both dense and sparse input. Use C-ordered
arrays or CSR matrices containing 64-bit floats for optimal performance; any other input format will be converted (and copied).

Parameters:
penalty : string, ‘l1’ or ‘l2’    惩罚项的种类

Used to specify the norm used in the penalization.

dual : boolean

Dual or primal formulation. Dual formulation is only implemented for l2 penalty. Prefer dual=False when n_samples > n_features.

C : float, optional (default=1.0)

Inverse of regularization strength; must be a positive float. Like in support vector machines, smaller values specify stronger regularization.

fit_intercept : bool, default: True

Specifies if a constant (a.k.a. bias or intercept) should be added the decision function.

intercept_scaling : float, default: 1

when self.fit_intercept is True, instance vector x becomes [x, self.intercept_scaling], i.e. a “synthetic” feature with constant value equals to intercept_scaling is appended to the instance
vector. The intercept becomes intercept_scaling * synthetic feature weight Note! the synthetic feature weight is subject to l1/l2 regularization as all other features. To lessen the effect of regularization on synthetic feature weight (and therefore on the
intercept) intercept_scaling has to be increased

class_weight : {dict, ‘auto’}, optional    考虑类不平衡,类似于代价敏感

Over-/undersamples the samples of each class according to the given weights. If not given, all classes are supposed to have weight one. The ‘auto’ mode selects weights inversely proportional
to class frequencies in the training set.

random_state: int seed, RandomState instance, or None (default) :

The seed of the pseudo random number generator to use when shuffling the data.

tol: float, optional :

Tolerance for stopping criteria.

Attributes:
`coef_` : array, shape = [n_classes, n_features]

Coefficient of the features in the decision function.

coef_ is readonly property derived from raw_coef_ that follows the internal memory layout of liblinear.

`intercept_` : array, shape = [n_classes]

Intercept (a.k.a. bias) added to the decision function. If fit_intercept is set to False, the intercept is set to zero.

LogisticRegression类中的方法有如下几种,我们常用的是fit和predict~

Methods

decision_function(X) Predict confidence scores for samples.
densify() Convert coefficient matrix to dense array format.
fit(X, y) Fit the model according to the given training data.    用来训练LR分类器,其中的X是训练样本,y是对应的标记向量
fit_transform(X[, y]) Fit to data, then transform it.
get_params([deep]) Get parameters for this estimator.
predict(X) Predict class labels for samples in X.    用来预测测试样本的标记,也就是分类。X是测试样本集
predict_log_proba(X) Log of probability estimates.
predict_proba(X) Probability estimates.
score(X, y[, sample_weight]) Returns the mean accuracy on the given test data and labels.
set_params(**params) Set the parameters of this estimator.
sparsify() Convert coefficient matrix to sparse format.
transform(X[, threshold]) Reduce X to its most important features.

使用predict返回的就是测试样本的标记向量,其实个人觉得还应有LR分类器中的重要过程参数:权重向量,其size应该是和feature的个数相同。但是就没有这个方法,所以这就萌生了自己实现LR算法的念头,那样子就可以输出权重向量了。

参考链接:

http://www.cnblogs.com/xupeizhi/archive/2013/07/05/3174703.html

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression

时间: 2024-10-08 21:05:01

调用python的sklearn实现Logistic Reression算法的相关文章

Python 之 sklearn 实现 PCA 降维

关于 PCA 算法的讲解文章不胜枚举,这里主要谈一谈 基于 Python 中 sklearn 模块的 PCA 算法实现.Explained Variance 累计贡献率 又名 累计方差贡献率 不要简单理解为 解释方差,它是 PCA 降维维度的重要指标,一般选取累计贡献率在90%左右的维度作为PCA 降维的参考维度.在识别算法的实现过程中,当我们求得某一数据库各类别特征参考维度时,取最大维度作为每一类特征的维度,即可实现数据降维.现对数据求取累计贡献率,算法实现如下. import numpy f

python机器学习-sklearn挖掘乳腺癌细胞

python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share 课程概述 Toby,持牌照金融公司担任模型验证专家,国内最大医药数据中心数据挖掘部门负责人!此课程讲述如何运用python的sklearn快速

《机器学习实战》Logistic回归算法(1)

===================================================================== <机器学习实战>系列博客是博主阅读<机器学习实战>这本书的笔记也包含一些其他python实现的机器学习算法 算法实现均采用python github 源码同步:https://github.com/Thinkgamer/Machine-Learning-With-Python ==================================

Python 手写数字识别-knn算法应用

在上一篇博文中,我们对KNN算法思想及流程有了初步的了解,KNN是采用测量不同特征值之间的距离方法进行分类,也就是说对于每个样本数据,需要和训练集中的所有数据进行欧氏距离计算.这里简述KNN算法的特点: 优点:精度高,对异常值不敏感,无数据输入假定 缺点:计算复杂度高,空间复杂度高 适用数据范围:数值型和标称型(具有有穷多个不同值,值之间无序)    knn算法代码: #-*- coding: utf-8 -*- from numpy import * import operatorimport

PHP调用Python发送邮件

1 简介 在PHP中发送邮件,通常都是封装一个php的smtp邮件类来发送邮件.但是PHP底层的socket编程相对于python来说效率是非常低的.CleverCode同时写过用python写的爬虫抓取网页,和用php写的爬虫抓取网页.发现虽然用了php的curl抓取网页,但是涉及到超时,多线程同时抓取等等.不得不说python在网络编程的效率要比PHP好的多. PHP在发送邮件时候,自己写的smtp类,发送的效率和速度都比较低.特别是并发发送大量带有附件报表的邮件的时候.php的效率很低.建

机器学习算法-logistic回归算法

Logistic回归算法调试 一.算法原理 Logistic回归算法是一种优化算法,主要用用于只有两种标签的分类问题.其原理为对一些数据点用一条直线去拟合,对数据集进行划分.从广义上来讲这也是一种多元线性回归方法,所不同的是这种算法需要找出的是能够最大可能地将两个类别划分开来而不是根据直线关系预测因变量的值.Logistic回归算法的核心部分是sigmoid函数: 其中,xi为数据集的第i个特征.定义损失函数损失函数: 损失函数越小表明曲线拟合的效果就越好.利用梯度向上法更新x的系数W,求出W的

python机器学习-sklearn挖掘乳腺癌细胞(三)

python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share 乳腺癌细胞和正常细胞是有显著区别的 癌细胞半径更大,形状更加不规则,凹凸不平.我们可以用科学手段来区分正常细胞和癌细胞吗?答案

C++调用Python浅析

环境 VS2005Python2.5.4 Windows XP SP3 简述 一般开发过游戏的都知道Lua和C++可以很好的结合在一起,取长补短,把Lua脚本当成类似动态链接库来使用,很好的利用了脚本开发的灵活性.而作为一门流行的通用型脚本语言python,也是可以做到的.在一个C++应用程序中,我们可以用一组插件来实现一些具有统一接口的功能,一般插件都是使用动态链接库实现,如果插件的变化比较频繁,我们可以使用Python来代替动态链接库形式的插件(堪称文本形式的动态链接库),这样可以方便地根据

C#调用python文件执行

我的电脑环境是使用.net framework4.5.1,如果在调试过程中调不通请注意 我用的是Visual studion 2017,python组件下载地址:http://ironpython.codeplex.com/releases/view/ 下载的版本是2.7,下载安装完之后记得引入安装路径下的以下三个dll (1)首先先说一个简单的功能,在c#代码中执行python字符串,内容如下: (2)c#调用python文件: 在当前目录下新建一个后缀名为py的文件,文件名为AmoutDis