1. # coding: utf-8
  2. # 利用 diabetes数据集来学习线性回归
  3. # diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况。
  4. # 数据集中的特征值总共10项, 如下:
  5. # 年龄
  6. # 性别
  7. #体质指数
  8. #血压
  9. #s1,s2,s3,s4,s4,s6  (六种血清的化验数据)
  10. #但请注意,以上的数据是经过特殊处理, 10个数据中的每个都做了均值中心化处理,然后又用标准差乘以个体数量调整了数值范围。验证就会发现任何一列的所有数值平方和为1.
  11. #关于数据集更多的信息: http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_diabetes.html
  12. # http://scikit-learn.org/stable/datasets/index.html#datasets
  13. import numpy as np
  14. from sklearn import datasets
  15. diabetes=datasets.load_diabetes()
  16. #查看第一列年龄的数据
  17. diabetes.data[0]
  18. #求证: 每一列的数值的平方和为1
  19. np.sum( diabetes.data[:,0]**2)  #求年龄列
  20. #糖尿病进展的数据
  21. diabetes.target  #数值介于   25到346之间
  22. #切分训练集与测试集
  23. #自动切分训练集太小了
  24. #from sklearn.cross_validation import train_test_split
  25. #x_train,x_test,y_train,y_test=train_test_split( diabetes.data,diabetes.target,random_state=14)
  26. #所以换成手工切分
  27. x_train=diabetes.data[:-20]
  28. y_train=diabetes.target[:-20]
  29. x_test=diabetes.data[-20:]
  30. y_test=diabetes.target[-20:]
  31. #什么是回归呢? 回归的目的是预测数值型的目标值。最直接的办法是根据训练数据计算出一个求目标值的计算公式。假如你想预测一个地区的餐馆数量,可能会这么计算:
  32. #     num = 0.002 * people + 0.001 * gpd
  33. # 以上就是所谓的回归方程,其中的0.002, 0.001称作回归系数,求这些回归系数的过程就是回归。一旦求出了这些回归系数,再给定输入,做预测就简单了.
  34. # 回归分为线性回归和非线性回归。 上面的公式描述的就是线性回归.
  35. #线性回归通过拟合线性模型的回归系数W =(w_1,…,w_p)来减少数据中观察到的结果和实际结果之间的残差平方和,并通过线性逼近进行预测。
  36. #scikit-learn库的线性回归预测模型通过fit(x,y)方法来训xaisaj型,其中x为数据的属性,y为所属的类型.线性模型的回归系数W会保存在它的coef_方法中.
  37. from sklearn import linear_model
  38. linreg=linear_model.LinearRegression()   #创建线性回归
  39. #用训练集训练模型
  40. linreg.fit( x_train,y_train)
  41. #调用预测模型的coef_属性,求出每种生理数据的回归系数b, 一共10个结果,分别对应10个生理特征.
  42. linreg.coef_
  43. #在模型上调用predict()函数,传入测试集,得到预测值,
  44. linreg.predict( x_test )
  45. #结果:array([ 197.61846908,  155.43979328,  172.88665147,  111.53537279,
  46. #      164.80054784,  131.06954875,  259.12237761,  100.47935157,
  47. #      117.0601052 ,  124.30503555,  218.36632793,   61.19831284,
  48. #      132.25046751,  120.3332925 ,   52.54458691,  194.03798088,
  49. #      102.57139702,  123.56604987,  211.0346317 ,   52.60335674])
  50. #查看实际目标值
  51. y_test
  52. #array([ 233.,   91.,  111.,  152.,  120.,   67.,  310.,   94.,  183.,
  53. #         66.,  173.,   72.,   49.,   64.,   48.,  178.,  104.,  132.,
  54. #        220.,   57.])
  55. #如何评价以上的模型优劣呢?我们可以引入方差,方差越接近于1,模型越好.
  56. # 方差: 统计中的方差(样本方差)是各个数据分别与其平均数之差的平方的和的平均数
  57. linreg.score( x_test,y_test)
  58. #对每个特征绘制一个线性回归图表
  59. import matplotlib.pyplot as plt
  60. #matplot显示图例中的中文问题 :   https://www.zhihu.com/question/25404709/answer/67672003
  61. import matplotlib.font_manager as fm
  62. #mac中的字体问题请看: https://zhidao.baidu.com/question/161361596.html
  63. myfont = fm.FontProperties(fname='/Library/Fonts/Xingkai.ttc')
  64. plt.figure(  figsize=(8,12))
  65. #循环10个特征
  66. for f in range(0,10):
  67. #取出测试集中第f特征列的值, 这样取出来的数组变成一维的了,
  68. xi_test=x_test[:,f]
  69. #取出训练集中第f特征列的值
  70. xi_train=x_train[:,f]
  71. #将一维数组转为二维的
  72. xi_test=xi_test[:,np.newaxis]
  73. xi_train=xi_train[:,np.newaxis]
  74. plt.ylabel(u'病情数值',fontproperties=myfont)
  75. linreg.fit( xi_train,y_train)   #根据第f特征列进行训练
  76. y=linreg.predict( xi_test )       #根据上面训练的模型进行预测,得到预测结果y
  77. #加入子图
  78. plt.subplot(5,2,f+1)   # 5表示10个图分为5行, 2表示每行2个图, f+1表示图的编号,可以使用这个编号控制这个图
  79. #绘制点   代表测试集的数据分布情况
  80. plt.scatter(  xi_test,y_test,color='k' )
  81. #绘制线
  82. plt.plot(xi_test,y,color='b',linewidth=3)
  83. plt.savefig('python_糖尿病数据集_预测病情_线性回归_最小平方回归.png')
  84. plt.show()

数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归的更多相关文章

  1. [matlab] 21.灰色预测、线性回归分析模型与最小二乘回归 (转载)

    灰色预测的主要特点是只需要4个数据,就能解决历史数据少,序列的完整性以及可靠性低的问题,能将无规律的原始数据进行生成得到规律性较强的生成序列,易于检验 但缺点是只适合中短期的预测,且只适合指数级增长的 ...

  2. 《机器学习_01_线性模型_线性回归_正则化(Lasso,Ridge,ElasticNet)》

    一.过拟合 建模的目的是让模型学习到数据的一般性规律,但有时候可能会学过头,学到一些噪声数据的特性,虽然模型可以在训练集上取得好的表现,但在测试集上结果往往会变差,这时称模型陷入了过拟合,接下来造一些 ...

  3. Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析

    Python数据挖掘之决策树DTC数据分析及鸢尾数据集分析 今天主要讲述的内容是关于决策树的知识,主要包括以下内容:1.分类及决策树算法介绍2.鸢尾花卉数据集介绍3.决策树实现鸢尾数据集分析.希望这篇 ...

  4. 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载

    人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...

  5. PASCAL VOC数据集分析(转)

    PASCAL VOC数据集分析 PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集,从2005年到2012年每年都会举行一场图像识别challenge. 本文主要分析PASCAL V ...

  6. 【数据挖掘】关联分析之Apriori(转载)

    [数据挖掘]关联分析之Apriori 1.Apriori算法 如果一个事务中有X,则该事务中则很有可能有Y,写成关联规则 {X}→{Y} 将这种找出项目之间联系的方法叫做关联分析.关联分析中最有名的问 ...

  7. 【计算机视觉】PASCAL VOC数据集分析

    PASCAL VOC数据集分析 PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集,从2005年到2012年每年都会举行一场图像识别challenge. 本文主要分析PASCAL V ...

  8. R语言重要数据集分析研究——需要整理分析阐明理念

    1.R语言重要数据集分析研究需要整理分析阐明理念? 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候如何下手分析,数据分析的第一步,探索性数据分析. 统计量,即统计学里面关注的数据集的几个指标 ...

  9. js分析 天_眼_查 字体文件

    0. 参考 js分析 猫_眼_电_影 字体文件 @font-face 1. 分析 1.1 定位目标元素 1.2 查看网页源代码 1.3 requests 请求提取得到大量错误信息 对比猫_眼_电_影抓 ...

随机推荐

  1. ResultSetMetaData中getColumnLabel和getColumnName的区别

    利用jdbc连接数据库查询时,通常返回的结果就是每行数据的键值对集合.这时我们需要知道查询出来的数据有哪些字段.根据ResultSet结果集得到的ResultSetMetaData就可以获取到每个字段 ...

  2. python 模块间的引入

    转载来自: https://www.cnblogs.com/whitemouseV2-0/p/9925344.html https://www.cnblogs.com/whitemouseV2-0/p ...

  3. https://vjudge.net/contest/321565#problem/C 超时代码

    #include <iostream> #include <cstdio> #include <queue> #include <algorithm> ...

  4. react 高阶组件之小学版

    高阶组件  多么高大上的概念,一般用来实现组件逻辑的抽象和复用,在很多三方库(redux)中都被使用到,但是开发普通有任务项目时,如果能合理使用高阶组件,也会显著的提高代码质量. 我们今天就用最简单的 ...

  5. 机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源

      机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源 相关主题   在信息时代,公司和个人的成功越来越依赖于迅速 ...

  6. System.Web.Mvc.IAuthorizationFilter.cs

    ylbtech-System.Web.Mvc.IAuthorizationFilter.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutra ...

  7. 创建自定义ssl证书用于https

    这里,不探究证书原理.我们要完成的任务是,自己充当CA,然后签出证书供服务器使用. 本次教程是在windows实现,实验之前,确认自己的电脑中有openssl程序.如果没有,博主帮你准备了一个:htt ...

  8. day 54 Django基础四之模板系统

    Django基础四之模板系统   本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法   模板渲染的官方文档 关于模 ...

  9. 第十三篇:一点一滴学ibatis(二)映射文件

       首先给出一个常见的映射文件局部模板 <?xml version="1.0" encoding="utf-8" ?><!DOCTYPE s ...

  10. C++的注释

    ### 1.2 注释 **作用**:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码 **两种格式** 1. **单行注释**:// 描述信息  - 通常放在一行代码的上方,或者一条语句的 ...