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. SVN Cannot merge into a working copy that has local modifications

    我尝试了 主支,分支都提交,但是依然无法合并. 最终,我在服务器上将分支删除,然后主支在拷贝过去. 一,打开服务器资源 二,删除分支 三,拷贝主支到分支 四,刷新分支,就能看到了. 然后在分支项目中, ...

  2. 解决VS2012新建MVC4等项目时,收到此模板加载程序集“NuGet.VisualStudio.Interop…”的错误

    1.错误如图所示: 2.不管是VS2012,还是2013如果开始没安装Nuget包都或报这个错,因为VS2012就已经全面切换到使用NuGet这个第三方开源工具来管理项目包和引用模块了,使用VS201 ...

  3. python实现操作excel,数据写入excel的一行或者一列

    # _*_ coding:utf-8 _*_ import random import xlwt,string class ImportData(object): def create_num(sel ...

  4. Windows 子网掩码

    子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码.子网掩码不能单独存在,它必须结合IP地 ...

  5. Perl 基础语法

    Perl 基础语法 Perl借用了C.sed.awk.shell脚本以及很多其他编程语言的特性,语法与这些语言有些类似,也有自己的特点. Perl 程序有声明与语句组成,程序自上而下执行,包含了循环, ...

  6. IDEA引入jar但无法导入class

    如图,jar已经导入,但是无法import class 选择setting->maven->Ignored Files,将被忽略的model取消选中就可以解决了

  7. hibernate_01_SSH环境搭建

    1.maven工程pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h ...

  8. h5判断是否为iphonex

    js移动端页面判断是否是iphoneX 转自https://blog.csdn.net/weixin_39924326/article/details/80352929 function isIPho ...

  9. VC6 Release下,生成pdb文件

    1.Generate debug必须选上,否则没有调试信息 2.把优化disable,否则容易产生代码地址偏移: 3.用program database产生PDB文件: 4.将dll, exe, pd ...

  10. [kuangbin带你飞]专题一 简单搜索 - E - Find The Multiple

    //Memory Time //2236K 32MS #include<iostream> using namespace std; ]; //保存每次mod n的余数 //由于198的余 ...