中国mooc北京理工大学机器学习第二周:回归

胖咸鱼y 胖咸鱼y     2022-09-03     737

关键词:

一、线性回归(Liner Regression)

利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的统计方法。

 

线性回归是用最小平方函数对一个或多个自变量和因变量之间进行建模。

 

导入和使用比较简单。

from sklearn import linear_model
linear = linear_model.LinearRegression()
linear.fit(datasets_X, datasets_Y)

预测房屋价格。

    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import linear_model
     
     
    # 读取数据集
    datasets_X = []
    datasets_Y = []
    fr = open(prices.txt,r)
    lines = fr.readlines()
    for line in lines:
        items = line.strip().split(,)
        datasets_X.append(int(items[0]))
        datasets_Y.append(int(items[1]))
     
    length = len(datasets_X)
    datasets_X = np.array(datasets_X).reshape([length,1])
    datasets_Y = np.array(datasets_Y)
     
    minX = min(datasets_X)
    maxX = max(datasets_X)
    X = np.arange(minX,maxX).reshape([-1,1])
     
     
    linear = linear_model.LinearRegression()
    linear.fit(datasets_X, datasets_Y)
     
    # 图像中显示
    plt.scatter(datasets_X, datasets_Y, color = red)
    plt.plot(X, linear.predict(X), color = blue)
    plt.xlabel(Area)
    plt.ylabel(Price)
    plt.show()

 

二、多项式回归(Polynomial Regression)

是研究一个因变量与多个自变量之间的多项式的回归分析。

 

多项式的优点是增加x的幂次来拟合曲线。

    import matplotlib.pyplot as plt
    import numpy as np
    from sklearn import linear_model
    from sklearn.preprocessing import PolynomialFeatures
     
     
    # 读取数据集
    datasets_X = []
    datasets_Y = []
    fr = open(prices.txt,r)
    lines = fr.readlines()
    for line in lines:
        items = line.strip().split(,)
        datasets_X.append(int(items[0]))
        datasets_Y.append(int(items[1]))
     
    length = len(datasets_X)
    datasets_X = np.array(datasets_X).reshape([length,1])
    datasets_Y = np.array(datasets_Y)
     
    minX = min(datasets_X)
    maxX = max(datasets_X)
    X = np.arange(minX,maxX).reshape([-1,1])
     
     
    poly_reg = PolynomialFeatures(degree = 2)
    X_poly = poly_reg.fit_transform(datasets_X)
    lin_reg_2 = linear_model.LinearRegression()
    lin_reg_2.fit(X_poly, datasets_Y)
     
    # 图像中显示
    plt.scatter(datasets_X, datasets_Y, color = red)
    plt.plot(X, lin_reg_2.predict(poly_reg.fit_transform(X)), color = blue)
    plt.xlabel(Area)
    plt.ylabel(Price)
    plt.show()

三、岭回归(ridge regression)

一种专用于共性线性数据分析的有偏估计回归方法,改良最小二乘法。

sklearn。linear_model.Ridge中使用

from sklearn.linear_model import Ridge
clf = Ridge(alpha=.5)
X = [[0,0],[0,0],[1,1]]
y = [0,.1,1]
clf.fit(X,y)
print(clf.coef_)
print(clf.intercept_)

Ridge类已经设置了一系列默认的参数,因此clf = Ridge()即可以完成实例化。
但是,了解一下它的参数还是有必要的:

  • alpha:正则化项的系数
  • copy_X:是否对X数组进行复制,默认为True,如果选False的话会覆盖原有X数组
  • fit_intercept:是否需要计算截距
  • max_iter:最大的迭代次数,对于sparse_cglsqr而言,默认次数取决于scipy.sparse.linalg,对于sag而言,则默认为1000次。
  • normalize:标准化X的开关,默认为False
  • solver:在计算过程中选择的解决器
  • auto:自动选择
  • svd:奇异值分解法,比cholesky更适合计算奇异矩阵
  • cholesky:使用标准的scipy.linalg.solve方法
  • sparse_cg:共轭梯度法,scipy.sparse.linalg.cg,适合大数据的计算
  • lsqr:最小二乘法,scipy.sparse.linalg.lsqr
  • sag:随机平均梯度下降法,在大数据下表现良好。

注:后四个方法都支持稀疏和密集数据,而sag仅在fit_intercept为True时支持密集数据。

  • tol:精度
  • random_statesag的伪随机种子

以上就是所有的初始化参数,当然,初始化后还可以通过set_params方法重新进行设定。

回归分析

在实例化Ridge类以后,就可以直接使用Ridge中集成的方法来进行回归了,与绝大多数的sklearn类一样,Ridge使用fit方法执行计算

  • fit(X,y,sample\_weight=None)X是一个array类型,这是特征矩阵,包含着数据集每一条记录的特征值(N*M),y是结果矩阵,同样是array类型,可以是N*1的形状,也可以是N*K的形状,sample_weight代表着权重,可以是一个实数,也可以给每一条记录分配一个值(array类型)。

得到回归函数后,我们可以通过predict来使用回归函数。

  • predict(X)X测试数据集,此方法将返回回归后的结果

对于模型的好坏,Ridge当然提供了评价的方法——score

  • score(X,y,sample_weight=None):X为测试数据,y是测试数据的实际值,类型与fit中的相同,sample是权重

在sklearn中并没有提供直接的查看回归方程的函数,因此查看的时候需要自己转化一下。其实,sklearn就是把相关系数和残差分开保存了,因此,查看的时候要调用coef_intercept_两个属性。

  • coef_:相关系数(array类型)
  • intercept_:截距,在fit_intercept=False的时候,将会返回0

可能有用的方法

这些方法在sklearn的基类中就已经集成,但在一般情况下,通常不会用到。

    • get_params(deep=True):这是获取Ridge实例属性取值的方法,可以忽略
    • set_params(**params):与get_params方法相对,是设置属性值,在岭回归中还是比较重要的,毕竟岭回归的alpha值在一开始可能并不知道,需要在一个范围内进行尝试,因此,利用这个方法来设置alpha值还是比较有用的。

以上。

:)

中国mooc北京理工大学机器学习第二周:手写数字识别

利用sklearn中的神经网络进行数字识别。先简单搬运占坑,暂时用不到。importnumpyasnp#导入numpy工具包fromosimportlistdir#使用listdir模块,用于访问本地文件fromsklearn.neural_networkimportMLPClassifierdefimg2vector(fileName):retMat=np.zeros([1024],int)#定 查看详情

中国mooc北京理工大学机器学习第一周

---恢复内容开始---今天学习第一周的第二课时:降维。一、PCA主成分分析主成分分析(PrincipalComponentAnalysis,PCA),是一种统计方法,直观来讲是把数据按照weights来筛选出主成分消除(或者隐蔽)不太重要的方面,使得高纬度数... 查看详情

中国mooc北京理工大学机器学习第一周

从今天开始跟着北理工的老师走一遍sklearn,在这里做笔记。 一、聚类1、K-Means方法先贴代码,所有数据的下载地址:http://pan.baidu.com/s/1hrO5NW4 importnumpyasnpfromsklearn.clusterimportKMeansdefloadData(filePath):#def一个读取数据的loadDatafr=... 查看详情

中国mooc北京理工大学机器学习第一周

三、基于聚类的整图分割需要利用PIL进行图片处理,在anaconda安装的时候提示PIL只能用在py26,搜索知,可以condainstallpillow即可。defloadData(filePath):f=open(filePath,‘rb‘)data=[]img=image.open(f)m,n=img.sizeforiinrange(m):forjinrange(n):x,y,z=img.g 查看详情

中国mooc北京理工大学机器学习第三周:强化学习基础

强化学习是程序或者智能体通过与环境不断地进行交互学习一个从环境到动作的映射,学习的目标使累计回报最大化。 强化学习是一种试错学习,在各种状态选需要尽量尝试所有可以选择的动作,通过环境的反馈来判断动作... 查看详情

第二周作业

...ttps://git.coding.net/AssassinCreed/Devil-May-Cry.git2.git及学习工具3.中国大学mooc截图4.阅读《提问的智慧》的心得: 1)问问题要描述得清晰明了。 2)不要问一些自己可以解决的问题。 3)说明自己在遇到问题之前曾用过什么方... 查看详情

“千”第二周学习情况

...条件限制,每月流量有限,所以这周没有在MOOC网上继续学习相关大学计算机专业的课程,只好重新将javaweb从数据库连接那里继续向后学习,也算是对前一段时间学习的检验吧,这次将javaweb的一些相关基础重新温习了一边,搞懂... 查看详情

mooc机器学习第九天-多项式回归

Mooc上一篇的房屋和价格回归预测使用的一元线性回归,这次该用多项式看看拟合效果有什么变化。1.多项式原理简单介绍(1).基本概念多项式回归(PolynomialRegression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。... 查看详情

斯坦福大学andrewng-机器学习笔记--逻辑回归&正则化

...当总结。笔记难免有遗漏和误解,欢迎讨论。  鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深表感谢!  查看详情

中国大学mooc-java学习(浙大翁恺)——信号报告

使用switch-case语句的练习1importjava.util.Scanner;23publicclassMain4{56publicstaticvoidmain(String[]args)7{8//TODOAuto-generatedmethodstub9Scannerin=newScanner(System.in);10inti;11intj;12intk;13i=in.nextInt( 查看详情

中国(北方)大学生程序设计训练赛(第二周)(abdg)

比赛链接A题是KMP,先把A拼接到B的后面,然后利用next数组的意义(包括其具体含义,以及失配时的应用),得到ans1#include<bits/stdc++.h>2usingnamespacestd;34charT[200005],S[200005];5inttlen,slen;6intNext[200005];78voidgetNext()9{10intj=0,k=-1;11Ne 查看详情

斯坦福大学andrewng-机器学习笔记--单变量&多变量线性回归

...当总结。笔记难免有遗漏和误解,欢迎讨论。  鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深表感谢!  查看详情

神经网络与深度学习-tensorflow实践-中国大学mooc课程(数字图像基础))(代码片段)

【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(七)(数字图像基础)第7讲数字图像基础7.1数字图像基本概念7.1.1图像的离散化7.1.1.1连续图像和数字图像7.1.1.2像素、位图、色彩深度/位深度、BMP格式7.1.1.... 查看详情

机器学习方法--分类回归聚类

...nbsp;2017-07-27 马文辉 MATLAB作者简介马文辉,MathWorks中国应用工程师, 南开大学工学博士,在大数据处理与分析领域有多年研究与开发经验;曾就职于Nokia中国研究院,Adobe中国研发中心以及IBM中国。近年来,全国赛的... 查看详情

中国大学mooc-陈越何钦铭-数据结构-2017春

    跟着《中国大学MOOC-陈越、何钦铭-数据结构-2017春》学习,平时练习一下pat上的作业外;在这里记录一下:平时学习视屏的收获。1.递归内存爆掉    2.解决问题的效率和算法的技巧有关,第一种写... 查看详情

《机器学习》学习笔记:线性回归逻辑回归

《机器学习》学习笔记(一):线性回归、逻辑回归   本笔记主要记录学习《机器学习》的总结体会。如有理解不到位的地方,欢迎大家指出,我会努力改正。   在学习《机器学习》时,我主要是通过Andrew... 查看详情

mooc机器学习-02监督学习

1监督学习  利用一组带标签的数据,学习从输入到输出的映射,然后将这种映射关系应用到未知数据,达到分类或者回归的目的  (1)分类:当输出是离散的,学习任务为分类任务        输入:一组有标签的训练数据(也叫... 查看详情

机器学习第二周-模型评价(i)(代码片段)

...新建的模型,如何评价其好坏,以及自身的泛化能力,是机器学习中一个关键性问题。对于二分类模型,因原始数据可能是非平衡的,因此仅通过最后的预测准确率并不能评价模型的效果,对于机器学习中的分类与回归两大类模... 查看详情