转载: scikit-learn学习之回归分析
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <——
======================================================================
本系列博客主要参考 Scikit-Learn 官方网站上的每一个算法进行,并进行部分翻译,如有错误,请大家指正
======================================================================
另外一篇基于《机器学习实战》的Logistic回归分析的博客请参考:点击阅读,其主要是采用Python代码实现回归模型
还有一篇是纯实战案例博客请参考 ,Logistic回归模型案例实战:《机器学习实战》Logistic回归算法(2)
目录:
1、概念
2、简单线性回归(Simple Liner Regession)
3、多元性回归(Mutiple Regession)
4、非线性回归(Logistic Regession)
一:概念
1:集中趋势衡量
2:离散程度的衡量
3:回归中的相关度
4:R平方值
5:皮尔逊相关系数和R平方值计算示例
- #coding:utf-8
- '''''
- Created on 2015年11月8日
- @author: Administrator
- '''
- import numpy as np
- import math
- #求解皮尔逊相关系数
- def computeCorrelation(X, Y):
- xBar = np.mean(X)
- yBar = np.mean(Y)
- SSR = 0
- varX = 0
- varY = 0
- for i in range(0, len(X)):
- #对应分子部分
- diffXXBar = X[i] - xBar
- diffYYBar = Y[i] - yBar
- SSR +=(diffXXBar * diffYYBar)
- #对应分母求和部分
- varX += diffXXBar**2
- varY += diffYYBar**2
- SST = math.sqrt(varX * varY)
- return SSR/SST
- def polyfit(x, y, degree):
- results = {}
- #coeffs 为相关系数,x自变量,y因变量,degree为最高幂
- coeffs = np.polyfit(x, y, degree)
- #定义一个字典存放值,值为相关系数list
- results['polynomial'] = coeffs.tolist()
- #p相当于直线方程
- p = np.poly1d(coeffs)
- yhat = p(x) #传入x,计算预测值为yhat
- ybar = np.sum(y)/len(y) #计算均值
- #对应公式
- ssreg = np.sum((yhat - ybar) ** 2)
- sstot = np.sum((y - ybar) ** 2)
- results['determination'] = ssreg / sstot
- print" results :",results
- return results
- testX = [1, 3, 8, 7, 9]
- testY = [10, 12, 24, 21, 34]
- #输出的是简单线性回归的皮尔逊相关度和R平方值
- print "r : ",computeCorrelation(testX, testY)
- print "r^2 : ",str(computeCorrelation(testX, testY)**2)
- #
- print polyfit(testX, testY, 1)["determination"]
结果显示为:
二:简单线性回归
1:回归与分类的区别
2:简单线性回归介绍
3:简单线性回归示例
- <span style="font-family:Microsoft YaHei;"><span style="font-size:18px;">#coding:utf8
- '''''
- Created on 2016年4月24日
- @author: Gamer Think
- '''
- #Simple Regession
- import numpy as np
- #周广告播放数量
- x = [1,3,2,1,3]
- #周汽车销售数据
- y = [14,24,18,17,27]
- #使用最小二乘法
- def fitSLR(x,y):
- n = len(x)
- denominator = 0
- numerator = 0
- for i in range(0,n):
- numerator += (x[i]-np.mean(x)* (y[i]-np.mean(y)) )
- denominator += (x[i]-np.mean(x))**2
- print "denominator:",denominator
- print "numerator:",numerator
- b1 = numerator/float(denominator)
- # b0 = np.mean(y)/float(np.mean(x))
- b0 = np.mean(y)-b1*np.mean(x)
- return b0,b1
- def predict(b0,b1,x):
- return b0+b1*x
- b0,b1 = fitSLR(x,y)
- x_test = 6
- print "y_test:",predict(b0,b1,x_test)</span></span>
三:多元性回归
- <span style="font-family:Microsoft YaHei;"><span style="font-size:18px;">#coding:utf-8
- '''''
- Created on 2016年4月24日
- @author: Gamer Think
- '''
- from sklearn import linear_model
- import numpy as np
- from numpy import genfromtxt #可以将非array格式的list转化为array
- datapath = "data.csv"
- deliverData = genfromtxt(datapath,delimiter=",") #将csv文件转化为numpy.array格式
- print "data:",deliverData
- X= deliverData[:,:-1]
- Y = deliverData[:,-1]
- print "X:",X
- print "Y:",Y
- regr = linear_model.LinearRegression()
- regr.fit(X,Y)
- print "coefficients:",regr.coef_ #与X结合的值
- print "intercept:",regr.intercept_ #类似于截距
- x_pre = [102,6]
- y_pre = regr.predict(x_pre)
- print "Y-Predict:",y_pre
- </span></span>
- <span style="font-family:Microsoft YaHei;"><span style="font-family:Microsoft YaHei;font-size:18px;">#coding:utf-8
- '''''
- Created on 2016年4月24日
- @author: Gamer Think
- '''
- from numpy import genfromtxt
- import numpy as np
- from sklearn import datasets, linear_model
- dataPath = "dataDumpy.csv"
- deleveryData = genfromtxt(dataPath, delimiter=',')
- print "data:\n",deleveryData
- X = deleveryData[:, :-1]
- Y = deleveryData[:, -1]
- print "X: ",X
- print "Y: ",Y
- regr = linear_model.LinearRegression()
- regr.fit(X, Y)
- print "Coefficients:",regr.coef_ #与X结合的值
- print "Intercept:",regr.intercept_ #类似于截距
- #
- xPred = [102,6,0,0,1]
- yPred = regr.predict(xPred)
- print "predict y : ",yPred</span></span>
4:关于误差
四:非线性回归
非线性回归又称为逻辑回归
1:概率
非线性回归实例:
- <span style="font-family:Microsoft YaHei;"><span style="font-size:18px;">#coding:utf-8
- '''''
- Created on 2016年4月24日
- @author: Gamer Think
- '''
- import numpy as np
- import random
- '''''
- 梯度下降算法
- 参数说明:X,Y
- theta:一组向量和x相乘的一组值
- alpha:梯度下降时的参数,即每一步下降多少
- m:实例的个数
- numIteration:迭代计算的次数,可以理解为梯度下降多少步
- '''
- def gradientDescent(X,Y,theta,alpha,m,numIteration):
- x_trains = X.transpose() #X的转置矩阵
- for i in range(0,numIteration):
- hypothesis = np.dot(X,theta) #内积形式,X与theta的乘积 ,求出y的估计值
- loss = hypothesis - Y #估计值与真实值之间的差
- #通用的梯度下降算法,和logistic Regession中所描述的cost函数不一致
- cos = np.sum(loss**2)/(2*m)
- print "Iteration %d | Cost:%f" % (i,cos)
- gradient = np.dot(x_trains,loss)/m
- theta = theta - alpha*gradient
- return theta
- '''''
- numPoints : 点的个数
- bias :偏好ֵ
- variance : 统计学概念, 偏差和
- 产生样本点和对应的标签
- '''
- def genData(numPoints,bias,variance):
- X = np.zeros(shape=(numPoints,2)) #归类的数据
- Y = np.zeros(shape=numPoints) #归类的标签
- for i in range(0,numPoints): #从0~len(numPoints)-1执行如下
- X[i][0] = 1
- X[i][1] = i
- #制造target数据
- Y[i] = (i+bias) + random.uniform(0,1)*variance
- return X,Y
- X,Y = genData(100, 25, 10)
- # print "X:",X
- # print "Y:",Y
- m, n = np.shape(X)
- n_y = np.shape(Y)
- # print "x shape :", m, " ", n
- # print "y length :",n_y
- numIterations =100000
- alpha = 0.0005
- theta = np.ones(n)
- theta = gradientDescent(X, Y, theta, alpha, m, numIterations)
- print "theta: " ,theta
- </span></span>

转载: scikit-learn学习之回归分析的更多相关文章
- 机器学习-scikit learn学习笔记
scikit-learn官网:http://scikit-learn.org/stable/ 通常情况下,一个学习问题会包含一组学习样本数据,计算机通过对样本数据的学习,尝试对未知数据进行预测. 学习 ...
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)
scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...
- (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探
一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...
- (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
- 转载-《Python学习手册》读书笔记
转载-<Python学习手册>读书笔记 http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html
- [ML学习笔记] 回归分析(Regression Analysis)
[ML学习笔记] 回归分析(Regression Analysis) 回归分析:在一系列已知自变量与因变量之间相关关系的基础上,建立变量之间的回归方程,把回归方程作为算法模型,实现对新自变量得出因变量 ...
- Learning How to Learn学习笔记(转)
add by zhj: 工作中提高自己水平的最重要的一点是——快速的学习能力.这篇文章就是探讨这个问题的,掌握了快速学习能力的规律,你自然就有了快速学习能力了. 原文:Learning How to ...
- Scikit Learn
Scikit Learn Scikit-Learn简称sklearn,基于 Python 语言的,简单高效的数据挖掘和数据分析工具,建立在 NumPy,SciPy 和 matplotlib 上.
随机推荐
- Unity3D ShaderLab Use Properties
在上一篇,学会了怎么使用ShaderLab 语法:Properties,这一次,我们将会使用属性值点亮材质球. 1:Delete>sampler2D _MainTex; 2:1行位置Add> ...
- 关于oracle出现ORA-06143:连接未打开 解决方案
原因:程序所在的路径中含有()和中文 用plsql连接正常,连接字符串也检查不出毛病,换到另一个程序照样使用,折腾了半天,最后才发现程序所在的路径中含有()和中文,所以可能导致出现这种很难排查的问题出 ...
- mysql实现高效率随机取数据
从数据库中(mysql)随机获取几条数据很简单,但是如果一个表的数据基数很大,比如一千万,从一千万中随机产生10条数据,那就相当慢了,如果同时一百个人访问网站,处理这些个进程,对于一般的服务器来说,肯 ...
- [转]Table-Driven and Data Driven Programming
What is Table-Driven and Data-Driven Programming? Data/Table-Driven programming is the technique of ...
- 解密Redis持久化
原文 http://blog.nosqlfan.com/html/3813.html 本文内容来源于Redis作者博文,Redis作者说,他看到的所有针对Redis的讨论中,对Redis持久化的误解是 ...
- AWK处理日志入门(转)
前言 这两天自己挽起袖子处理日志,终于把AWK给入门了.其实AWK的基本使用,学起来也就半天的时间,之前总是靠同事代劳,惰性呀. 此文仅为菜鸟入门,运维们请勿围观. 下面是被处理的日志的示例,不那么标 ...
- 用python处理数学问题
一, 计算对数: >>> import math #导入数学模块>>> math.log(8,2) #计算以2为底 8的对数3.0>&g ...
- sql server触发器中增删改判断
触发器生效逻辑 在Before或者After之后使用INSERT,DELETE,UPDATE 触发器内情况判断 插入 if exists(select 1 from inserted) and not ...
- 移动互联网实战--Apple的APNS桩推送服务的实现(2)
前记: 相信大家在搞IOS推送服务的开发时, 会直接使用javapns api来简单实现, 调试也直连Apple的APNS服务(产品/测试版)来实现. 很少有人会写个APNS的桩服务, 事实也是如此. ...
- 行为识别笔记:HOG,HOF与MBH特征(转载)
在行为识别的iDT算法中,主要使用了HOG,HOF,MBH和Dense Trajectory四种特征.这里主要对前三者进行介绍. 1. HOG特征(histogram of gray) 此处HOG特征 ...