【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据

        这篇文章主要介绍三个知识点,也是我《数据挖掘与分析》课程讲课的内容。同时主要参考学生的课程提交作业内容进行讲述,包括:
        1.回归模型及基础知识;
        2.UCI数据集;
        3.回归模型简单数据分析。

        前文推荐:
       【Python数据挖掘课程】一.安装Python及爬虫入门介绍
       【Python数据挖掘课程】二.Kmeans聚类数据分析及Anaconda介绍
       【Python数据挖掘课程】三.Kmeans聚类代码实现、作业及优化
       【Python数据挖掘课程】四.决策树DTC数据分析及鸢尾数据集分析
       【Python数据挖掘课程】五.线性回归知识及预测糖尿病实例
       【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识
       【Python数据挖掘课程】七.PCA降维操作及subplot子图绘制
       【Python数据挖掘课程】八.关联规则挖掘及Apriori实现购物推荐

      

        希望这篇文章对你有所帮助,尤其是刚刚接触数据挖掘以及大数据的同学,这些基础知识真的非常重要。如果文章中存在不足或错误的地方,还请海涵~
        感谢ZJ学生提供的数据集与作品相关报告,学生确实还是学到了些东西。

        授课知识强推第五节课内容:五.线性回归知识及预测糖尿病实例


一. 算法简介-回归模型

1.初识回归

      “子女的身高趋向于高于父母的身高的平均值,但一般不会超过父母的身高。”
                                                                        -- 《遗传的身高向平均数方向的回归》

        回归(Regression)这一概念最早由英国生物统计学家高尔顿和他的学生皮尔逊在研究父母亲和子女的身高遗传特性时提出。如今,我们做回归分析时所讨论的“回归”和这种趋势中效应已经没有任何瓜葛了,它只是指源于高尔顿工作的那样——用一个或多个自变量来预测因变量的数学方法。

        在一个回归模型中,我们需要关注或预测的变量叫做因变量(响应变量或结果变量),我们选取的用来解释因变量变化的变量叫做自变量(解释变量或预测变量)。

【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第1张图片


        回归是统计学中最有力的工具之一。机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。
        分类算法用于离散型分布预测,如KNN、决策树、朴素贝叶斯、adaboost、SVM、Logistic回归都是分类算法;回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。

        回归的目的就是建立一个回归方程用来预测目标值,回归的求解就是求这个回归方程的回归系数。预测的方法即回归系数乘以输入值再全部相加就得到了预测值。

【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第2张图片

        回归最简单的定义:给出一个点集D,用一个函数去拟合这个点集,并且使得点集与拟合函数间的误差最小,如果这个函数曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。

2.线性回归

         假定预测值与样本特征间的函数关系是线性的,回归分析的任务,就在于根据样本X和Y的观察值,去估计函数h,寻求变量之间近似的函数关系。定义:

        其中,n = 特征数目;xj = 每个训练样本第j个特征的值,可以认为是特征向量中的第j个值。
为了方便,记x0= 1,则多变量线性回归可以记为:
        其中,θ、x都表示(n+1,1)维列向量。

        注意:多元和多次是两个不同的概念,“多元”指方程有多个参数,“多次”指的是方程中参数的最高次幂。多元线性方程是假设预测值y与样本所有特征值符合一个多元一次线性方程。

【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第3张图片

3.求解线性回归

        回归常常指线性回归,回归的求解就是多元线性回归方程的求解。假设有连续型值标签(标签值分布为Y)的样本,有X={x1,x2,...,xn}个特征,回归就是求解回归系数θ=θ0, θ1,…,θn。那么,手里有一些X和对应的Y,怎样才能找到θ呢?

         在回归方程里,求得特征对应的最佳回归系数的方法是最小化误差的平方和。这里的误差是指预测y值和真实y值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以采用平方误差(最小二乘法)。平方误差可以写做:


        在数学上,求解过程就转化为求一组θ值使求上式取到最小值,那么求解方法有梯度下降法、Normal Equation等等。

        梯度下降有如下特点:需要预先选定步长a、需要多次迭代、特征值需要Scaling(统一到同一个尺度范围)。因此比较复杂,还有一种不需要迭代的求解方式——Normal Equation,简单、方便、不需要Feature Scaling。Normal Equation方法中需要计算X的转置与逆矩阵,计算量很大,因此特征个数多时计算会很慢,只适用于特征个数小于100000时使用;当特征数量大于100000时使用梯度法。

        另外,当X不可逆时就有岭回归算法的用武之地了。


        3.1 梯度下降法(Gradient Descent)

        根据平方误差,定义该线性回归模型的损耗函数(Cost Function)为:   

        线性回归的损耗函数的值与回归系数θ的关系是碗状的,只有一个最小点。线性回归的求解过程如同Logistic回归,区别在于学习模型函数hθ(x)不同。

        3.2 普通最小二乘法Normal Equation
        Normal Equation算法也叫做普通最小二乘法(ordinary least squares),其特点是:给定输人矩阵X,如果X T X的逆存在并可以求得的话,就可以直接采用该方法求解。其求解理论也十分简单:既然是是求最小误差平方和,另其导数为0即可得出回归系数。

        矩阵X为(m,n+1)矩阵(m表示样本数、n表示一个样本的特征数),y为(m,1)列向量。 上述公式中包含XTX, 也就是需要对矩阵求逆,因此这个方程只在逆矩阵存在的时候适用。

4.回归模型性能度量

         数据集上计算出的回归方程并不一定意味着它是最佳的,可以便用预测值yHat和原始值y的相关性来度量回归方程的好坏。相关性取值范围0~1,值越高说明回归模型性能越好。
         线性回归是假设值标签与特征值之间的关系是线性的,但有些时候数据间的关系可能会更加复杂,使用线性的模型就难以拟合,就需要引入多项式曲线回归(多元多次拟合)或者其他回归模型,如回归树。

        注意:
        多元回归存在多重共线性,自相关性和异方差性。线性回归对异常值非常敏感。它会严重影响回归线,最终影响预测值。多重共线性会增加系数估计值的方差,使得在模型轻微变化下,估计非常敏感,结果就是系数估计值不稳定。


二. 数据集介绍

        在数据分析中数据集是最重要的信息,推荐数据集UCI:
        http://archive.ics.uci.edu/ml/machine-learning-databases/
        该数据集包括6种类型的玻璃,各个特征是定义它们的氧化物含量(即钠,铁,钾等)。Mg:镁 Ai:铝 Si:硅 K:钾 Ca:钙 Ba:钡  Fe:铁  Type of glass:级属性。
        数据集位glass.csv文件,如下图所示:

【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第4张图片

        详细内容如下:

id	ri	na	mg	al	si	k	ca	ba	fe	glass_type
1	1.52101	13.64	4.49	1.1	71.78	0.06	8.75	0	0	1
2	1.51761	13.89	3.6	1.36	72.73	0.48	7.83	0	0	1
3	1.51618	13.53	3.55	1.54	72.99	0.39	7.78	0	0	1
4	1.51766	13.21	3.69	1.29	72.61	0.57	8.22	0	0	1
5	1.51742	13.27	3.62	1.24	73.08	0.55	8.07	0	0	1
6	1.51596	12.79	3.61	1.62	72.97	0.64	8.07	0	0.26	1
7	1.51743	13.3	3.6	1.14	73.09	0.58	8.17	0	0	1
8	1.51756	13.15	3.61	1.05	73.24	0.57	8.24	0	0	1
9	1.51918	14.04	3.58	1.37	72.08	0.56	8.3	0	0	1
10	1.51755	13	3.6	1.36	72.99	0.57	8.4	0	0.11	1
11	1.51571	12.72	3.46	1.56	73.2	0.67	8.09	0	0.24	1
12	1.51763	12.8	3.66	1.27	73.01	0.6	8.56	0	0	1
13	1.51589	12.88	3.43	1.4	73.28	0.69	8.05	0	0.24	1
14	1.51748	12.86	3.56	1.27	73.21	0.54	8.38	0	0.17	1
15	1.51763	12.61	3.59	1.31	73.29	0.58	8.5	0	0	1
16	1.51761	12.81	3.54	1.23	73.24	0.58	8.39	0	0	1
17	1.51784	12.68	3.67	1.16	73.11	0.61	8.7	0	0	1
18	1.52196	14.36	3.85	0.89	71.36	0.15	9.15	0	0	1
19	1.51911	13.9	3.73	1.18	72.12	0.06	8.89	0	0	1
20	1.51735	13.02	3.54	1.69	72.73	0.54	8.44	0	0.07	1
21	1.5175	12.82	3.55	1.49	72.75	0.54	8.52	0	0.19	1
22	1.51966	14.77	3.75	0.29	72.02	0.03	9	0	0	1
23	1.51736	12.78	3.62	1.29	72.79	0.59	8.7	0	0	1
24	1.51751	12.81	3.57	1.35	73.02	0.62	8.59	0	0	1
25	1.5172	13.38	3.5	1.15	72.85	0.5	8.43	0	0	1
26	1.51764	12.98	3.54	1.21	73	0.65	8.53	0	0	1
27	1.51793	13.21	3.48	1.41	72.64	0.59	8.43	0	0	1
28	1.51721	12.87	3.48	1.33	73.04	0.56	8.43	0	0	1
29	1.51768	12.56	3.52	1.43	73.15	0.57	8.54	0	0	1
30	1.51784	13.08	3.49	1.28	72.86	0.6	8.49	0	0	1
31	1.51768	12.65	3.56	1.3	73.08	0.61	8.69	0	0.14	1
32	1.51747	12.84	3.5	1.14	73.27	0.56	8.55	0	0	1
33	1.51775	12.85	3.48	1.23	72.97	0.61	8.56	0.09	0.22	1
34	1.51753	12.57	3.47	1.38	73.39	0.6	8.55	0	0.06	1
35	1.51783	12.69	3.54	1.34	72.95	0.57	8.75	0	0	1
36	1.51567	13.29	3.45	1.21	72.74	0.56	8.57	0	0	1
37	1.51909	13.89	3.53	1.32	71.81	0.51	8.78	0.11	0	1
38	1.51797	12.74	3.48	1.35	72.96	0.64	8.68	0	0	1
39	1.52213	14.21	3.82	0.47	71.77	0.11	9.57	0	0	1
40	1.52213	14.21	3.82	0.47	71.77	0.11	9.57	0	0	1
41	1.51793	12.79	3.5	1.12	73.03	0.64	8.77	0	0	1
42	1.51755	12.71	3.42	1.2	73.2	0.59	8.64	0	0	1
43	1.51779	13.21	3.39	1.33	72.76	0.59	8.59	0	0	1
44	1.5221	13.73	3.84	0.72	71.76	0.17	9.74	0	0	1
45	1.51786	12.73	3.43	1.19	72.95	0.62	8.76	0	0.3	1
46	1.519	13.49	3.48	1.35	71.95	0.55	9	0	0	1
47	1.51869	13.19	3.37	1.18	72.72	0.57	8.83	0	0.16	1
48	1.52667	13.99	3.7	0.71	71.57	0.02	9.82	0	0.1	1
49	1.52223	13.21	3.77	0.79	71.99	0.13	10.02	0	0	1
50	1.51898	13.58	3.35	1.23	72.08	0.59	8.91	0	0	1
51	1.5232	13.72	3.72	0.51	71.75	0.09	10.06	0	0.16	1
52	1.51926	13.2	3.33	1.28	72.36	0.6	9.14	0	0.11	1
53	1.51808	13.43	2.87	1.19	72.84	0.55	9.03	0	0	1
54	1.51837	13.14	2.84	1.28	72.85	0.55	9.07	0	0	1
55	1.51778	13.21	2.81	1.29	72.98	0.51	9.02	0	0.09	1
56	1.51769	12.45	2.71	1.29	73.7	0.56	9.06	0	0.24	1
57	1.51215	12.99	3.47	1.12	72.98	0.62	8.35	0	0.31	1
58	1.51824	12.87	3.48	1.29	72.95	0.6	8.43	0	0	1
59	1.51754	13.48	3.74	1.17	72.99	0.59	8.03	0	0	1
60	1.51754	13.39	3.66	1.19	72.79	0.57	8.27	0	0.11	1
61	1.51905	13.6	3.62	1.11	72.64	0.14	8.76	0	0	1
62	1.51977	13.81	3.58	1.32	71.72	0.12	8.67	0.69	0	1
63	1.52172	13.51	3.86	0.88	71.79	0.23	9.54	0	0.11	1
64	1.52227	14.17	3.81	0.78	71.35	0	9.69	0	0	1
65	1.52172	13.48	3.74	0.9	72.01	0.18	9.61	0	0.07	1
66	1.52099	13.69	3.59	1.12	71.96	0.09	9.4	0	0	1
67	1.52152	13.05	3.65	0.87	72.22	0.19	9.85	0	0.17	1
68	1.52152	13.05	3.65	0.87	72.32	0.19	9.85	0	0.17	1
69	1.52152	13.12	3.58	0.9	72.2	0.23	9.82	0	0.16	1
70	1.523	13.31	3.58	0.82	71.99	0.12	10.17	0	0.03	1
71	1.51574	14.86	3.67	1.74	71.87	0.16	7.36	0	0.12	2
72	1.51848	13.64	3.87	1.27	71.96	0.54	8.32	0	0.32	2
73	1.51593	13.09	3.59	1.52	73.1	0.67	7.83	0	0	2
74	1.51631	13.34	3.57	1.57	72.87	0.61	7.89	0	0	2
75	1.51596	13.02	3.56	1.54	73.11	0.72	7.9	0	0	2
76	1.5159	13.02	3.58	1.51	73.12	0.69	7.96	0	0	2
77	1.51645	13.44	3.61	1.54	72.39	0.66	8.03	0	0	2
78	1.51627	13	3.58	1.54	72.83	0.61	8.04	0	0	2
79	1.51613	13.92	3.52	1.25	72.88	0.37	7.94	0	0.14	2
80	1.5159	12.82	3.52	1.9	72.86	0.69	7.97	0	0	2
81	1.51592	12.86	3.52	2.12	72.66	0.69	7.97	0	0	2
82	1.51593	13.25	3.45	1.43	73.17	0.61	7.86	0	0	2
83	1.51646	13.41	3.55	1.25	72.81	0.68	8.1	0	0	2
84	1.51594	13.09	3.52	1.55	72.87	0.68	8.05	0	0.09	2
85	1.51409	14.25	3.09	2.08	72.28	1.1	7.08	0	0	2
86	1.51625	13.36	3.58	1.49	72.72	0.45	8.21	0	0	2
87	1.51569	13.24	3.49	1.47	73.25	0.38	8.03	0	0	2
88	1.51645	13.4	3.49	1.52	72.65	0.67	8.08	0	0.1	2
89	1.51618	13.01	3.5	1.48	72.89	0.6	8.12	0	0	2
90	1.5164	12.55	3.48	1.87	73.23	0.63	8.08	0	0.09	2
91	1.51841	12.93	3.74	1.11	72.28	0.64	8.96	0	0.22	2
92	1.51605	12.9	3.44	1.45	73.06	0.44	8.27	0	0	2
93	1.51588	13.12	3.41	1.58	73.26	0.07	8.39	0	0.19	2
94	1.5159	13.24	3.34	1.47	73.1	0.39	8.22	0	0	2
95	1.51629	12.71	3.33	1.49	73.28	0.67	8.24	0	0	2
96	1.5186	13.36	3.43	1.43	72.26	0.51	8.6	0	0	2
97	1.51841	13.02	3.62	1.06	72.34	0.64	9.13	0	0.15	2
98	1.51743	12.2	3.25	1.16	73.55	0.62	8.9	0	0.24	2
99	1.51689	12.67	2.88	1.71	73.21	0.73	8.54	0	0	2
100	1.51811	12.96	2.96	1.43	72.92	0.6	8.79	0.14	0	2
101	1.51655	12.75	2.85	1.44	73.27	0.57	8.79	0.11	0.22	2
102	1.5173	12.35	2.72	1.63	72.87	0.7	9.23	0	0	2
103	1.5182	12.62	2.76	0.83	73.81	0.35	9.42	0	0.2	2
104	1.52725	13.8	3.15	0.66	70.57	0.08	11.64	0	0	2
105	1.5241	13.83	2.9	1.17	71.15	0.08	10.79	0	0	2
106	1.52475	11.45	0	1.88	72.19	0.81	13.24	0	0.34	2
107	1.53125	10.73	0	2.1	69.81	0.58	13.3	3.15	0.28	2
108	1.53393	12.3	0	1	70.16	0.12	16.19	0	0.24	2
109	1.52222	14.43	0	1	72.67	0.1	11.52	0	0.08	2
110	1.51818	13.72	0	0.56	74.45	0	10.99	0	0	2
111	1.52664	11.23	0	0.77	73.21	0	14.68	0	0	2
112	1.52739	11.02	0	0.75	73.08	0	14.96	0	0	2
113	1.52777	12.64	0	0.67	72.02	0.06	14.4	0	0	2
114	1.51892	13.46	3.83	1.26	72.55	0.57	8.21	0	0.14	2
115	1.51847	13.1	3.97	1.19	72.44	0.6	8.43	0	0	2
116	1.51846	13.41	3.89	1.33	72.38	0.51	8.28	0	0	2
117	1.51829	13.24	3.9	1.41	72.33	0.55	8.31	0	0.1	2
118	1.51708	13.72	3.68	1.81	72.06	0.64	7.88	0	0	2
119	1.51673	13.3	3.64	1.53	72.53	0.65	8.03	0	0.29	2
120	1.51652	13.56	3.57	1.47	72.45	0.64	7.96	0	0	2
121	1.51844	13.25	3.76	1.32	72.4	0.58	8.42	0	0	2
122	1.51663	12.93	3.54	1.62	72.96	0.64	8.03	0	0.21	2
123	1.51687	13.23	3.54	1.48	72.84	0.56	8.1	0	0	2
124	1.51707	13.48	3.48	1.71	72.52	0.62	7.99	0	0	2
125	1.52177	13.2	3.68	1.15	72.75	0.54	8.52	0	0	2
126	1.51872	12.93	3.66	1.56	72.51	0.58	8.55	0	0.12	2
127	1.51667	12.94	3.61	1.26	72.75	0.56	8.6	0	0	2
128	1.52081	13.78	2.28	1.43	71.99	0.49	9.85	0	0.17	2
129	1.52068	13.55	2.09	1.67	72.18	0.53	9.57	0.27	0.17	2
130	1.5202	13.98	1.35	1.63	71.76	0.39	10.56	0	0.18	2
131	1.52177	13.75	1.01	1.36	72.19	0.33	11.14	0	0	2
132	1.52614	13.7	0	1.36	71.24	0.19	13.44	0	0.1	2
133	1.51813	13.43	3.98	1.18	72.49	0.58	8.15	0	0	2
134	1.518	13.71	3.93	1.54	71.81	0.54	8.21	0	0.15	2
135	1.51811	13.33	3.85	1.25	72.78	0.52	8.12	0	0	2
136	1.51789	13.19	3.9	1.3	72.33	0.55	8.44	0	0.28	2
137	1.51806	13	3.8	1.08	73.07	0.56	8.38	0	0.12	2
138	1.51711	12.89	3.62	1.57	72.96	0.61	8.11	0	0	2
139	1.51674	12.79	3.52	1.54	73.36	0.66	7.9	0	0	2
140	1.51674	12.87	3.56	1.64	73.14	0.65	7.99	0	0	2
141	1.5169	13.33	3.54	1.61	72.54	0.68	8.11	0	0	2
142	1.51851	13.2	3.63	1.07	72.83	0.57	8.41	0.09	0.17	2
143	1.51662	12.85	3.51	1.44	73.01	0.68	8.23	0.06	0.25	2
144	1.51709	13	3.47	1.79	72.72	0.66	8.18	0	0	2
145	1.5166	12.99	3.18	1.23	72.97	0.58	8.81	0	0.24	2
146	1.51839	12.85	3.67	1.24	72.57	0.62	8.68	0	0.35	2
147	1.51769	13.65	3.66	1.11	72.77	0.11	8.6	0	0	3
148	1.5161	13.33	3.53	1.34	72.67	0.56	8.33	0	0	3
149	1.5167	13.24	3.57	1.38	72.7	0.56	8.44	0	0.1	3
150	1.51643	12.16	3.52	1.35	72.89	0.57	8.53	0	0	3
151	1.51665	13.14	3.45	1.76	72.48	0.6	8.38	0	0.17	3
152	1.52127	14.32	3.9	0.83	71.5	0	9.49	0	0	3
153	1.51779	13.64	3.65	0.65	73	0.06	8.93	0	0	3
154	1.5161	13.42	3.4	1.22	72.69	0.59	8.32	0	0	3
155	1.51694	12.86	3.58	1.31	72.61	0.61	8.79	0	0	3
156	1.51646	13.04	3.4	1.26	73.01	0.52	8.58	0	0	3
157	1.51655	13.41	3.39	1.28	72.64	0.52	8.65	0	0	3
158	1.52121	14.03	3.76	0.58	71.79	0.11	9.65	0	0	3
159	1.51776	13.53	3.41	1.52	72.04	0.58	8.79	0	0	3
160	1.51796	13.5	3.36	1.63	71.94	0.57	8.81	0	0.09	3
161	1.51832	13.33	3.34	1.54	72.14	0.56	8.99	0	0	3
162	1.51934	13.64	3.54	0.75	72.65	0.16	8.89	0.15	0.24	3
163	1.52211	14.19	3.78	0.91	71.36	0.23	9.14	0	0.37	3
164	1.51514	14.01	2.68	3.5	69.89	1.68	5.87	2.2	0	5
165	1.51915	12.73	1.85	1.86	72.69	0.6	10.09	0	0	5
166	1.52171	11.56	1.88	1.56	72.86	0.47	11.41	0	0	5
167	1.52151	11.03	1.71	1.56	73.44	0.58	11.62	0	0	5
168	1.51969	12.64	0	1.65	73.75	0.38	11.53	0	0	5
169	1.51666	12.86	0	1.83	73.88	0.97	10.17	0	0	5
170	1.51994	13.27	0	1.76	73.03	0.47	11.32	0	0	5
171	1.52369	13.44	0	1.58	72.22	0.32	12.24	0	0	5
172	1.51316	13.02	0	3.04	70.48	6.21	6.96	0	0	5
173	1.51321	13	0	3.02	70.7	6.21	6.93	0	0	5
174	1.52043	13.38	0	1.4	72.25	0.33	12.5	0	0	5
175	1.52058	12.85	1.61	2.17	72.18	0.76	9.7	0.24	0.51	5
176	1.52119	12.97	0.33	1.51	73.39	0.13	11.27	0	0.28	5
177	1.51905	14	2.39	1.56	72.37	0	9.57	0	0	6
178	1.51937	13.79	2.41	1.19	72.76	0	9.77	0	0	6
179	1.51829	14.46	2.24	1.62	72.38	0	9.26	0	0	6
180	1.51852	14.09	2.19	1.66	72.67	0	9.32	0	0	6
181	1.51299	14.4	1.74	1.54	74.55	0	7.59	0	0	6
182	1.51888	14.99	0.78	1.74	72.5	0	9.95	0	0	6
183	1.51916	14.15	0	2.09	72.74	0	10.88	0	0	6
184	1.51969	14.56	0	0.56	73.48	0	11.22	0	0	6
185	1.51115	17.38	0	0.34	75.41	0	6.65	0	0	6
186	1.51131	13.69	3.2	1.81	72.81	1.76	5.43	1.19	0	7
187	1.51838	14.32	3.26	2.22	71.25	1.46	5.79	1.63	0	7
188	1.52315	13.44	3.34	1.23	72.38	0.6	8.83	0	0	7
189	1.52247	14.86	2.2	2.06	70.26	0.76	9.76	0	0	7
190	1.52365	15.79	1.83	1.31	70.43	0.31	8.61	1.68	0	7
191	1.51613	13.88	1.78	1.79	73.1	0	8.67	0.76	0	7
192	1.51602	14.85	0	2.38	73.28	0	8.76	0.64	0.09	7
193	1.51623	14.2	0	2.79	73.46	0.04	9.04	0.4	0.09	7
194	1.51719	14.75	0	2	73.02	0	8.53	1.59	0.08	7
195	1.51683	14.56	0	1.98	73.29	0	8.52	1.57	0.07	7
196	1.51545	14.14	0	2.68	73.39	0.08	9.07	0.61	0.05	7
197	1.51556	13.87	0	2.54	73.23	0.14	9.41	0.81	0.01	7
198	1.51727	14.7	0	2.34	73.28	0	8.95	0.66	0	7
199	1.51531	14.38	0	2.66	73.1	0.04	9.08	0.64	0	7
200	1.51609	15.01	0	2.51	73.05	0.05	8.83	0.53	0	7
201	1.51508	15.15	0	2.25	73.5	0	8.34	0.63	0	7
202	1.51653	11.95	0	1.19	75.18	2.7	8.93	0	0	7
203	1.51514	14.85	0	2.42	73.72	0	8.39	0.56	0	7
204	1.51658	14.8	0	1.99	73.11	0	8.28	1.71	0	7
205	1.51617	14.95	0	2.27	73.3	0	8.71	0.67	0	7
206	1.51732	14.95	0	1.8	72.99	0	8.61	1.55	0	7
207	1.51645	14.94	0	1.87	73.11	0	8.67	1.38	0	7
208	1.51831	14.39	0	1.82	72.86	1.41	6.47	2.88	0	7
209	1.5164	14.37	0	2.74	72.85	0	9.45	0.54	0	7
210	1.51623	14.14	0	2.88	72.61	0.08	9.18	1.06	0	7
211	1.51685	14.92	0	1.99	73.06	0	8.4	1.59	0	7
212	1.52065	14.36	0	2.02	73.42	0	8.44	1.64	0	7
213	1.51651	14.38	0	1.94	73.61	0	8.48	1.57	0	7
214	1.51711	14.23	0	2.08	73.36	0	8.62	1.67	0	7

       PS:现在正在步入第四科学范式,第一范式是实验(哥白尼),第二范式是理论(牛顿),第三范式是计算(四色填充地图),第四范式是数据。


三. 回归模型分析

        回归模型分析代码如下:
        注意:1) pandas、Matplotlib、seaboard三种不同方法绘制图形,基本类似。
                   2) 代码对应结果不进行详细分析,只提供方法,为提升学生阅读代码能力。

# -*- coding: utf-8 -*-
"""
Created on Sun Mar 05 18:10:07 2017

@author: eastmount & zj
"""

#导入玻璃识别数据集
import pandas as pd
glass=pd.read_csv("glass.csv")
#显示前6行数据
print(glass.shape)
print(glass.head(6))

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(font_scale=1.5)
sns.lmplot(x='al', y='ri', data=glass, ci=None)
#利用Pandas画散点图
glass.plot(kind='scatter', x='al', y='ri')
plt.show()

#利用matplotlib做等效的散点图
plt.scatter(glass.al, glass.ri)
plt.xlabel('al')
plt.ylabel('ri')

#拟合线性回归模型
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
feature_cols = ['al']
X = glass[feature_cols]
y = glass.ri
linreg.fit(X, y)
plt.show()

#对于所有的x值做出预测       
glass['ri_pred'] = linreg.predict(X)
print("预测的前六行:")
print(glass.head(6))

#用直线表示预测结果
plt.plot(glass.al, glass.ri_pred, color='red')
plt.xlabel('al')
plt.ylabel('Predicted ri')
plt.show()

#将直线结果和散点图同时显示出来
plt.scatter(glass.al, glass.ri)
plt.plot(glass.al, glass.ri_pred, color='red')
plt.xlabel('al')
plt.ylabel('ri')
plt.show()

#利用相关方法线性预测
linreg.intercept_ + linreg.coef_ * 2
#使用预测方法计算Al = 2的预测
linreg.predict(2)

#铝检验系数
ai=zip(feature_cols, linreg.coef_)
print(ai)

#使用预测方法计算Al = 3的预测
pre=linreg.predict(3)
print(pre)

#检查glass_type
sort=glass.glass_type.value_counts().sort_index()
print(sort)

#类型1、2、3的窗户玻璃
#类型5,6,7是家用玻璃
glass['household'] = glass.glass_type.map({1:0, 2:0, 3:0, 5:1, 6:1, 7:1})
print(glass.head())

plt.scatter(glass.al, glass.household)
plt.xlabel('al')
plt.ylabel('household')
plt.show()

#拟合线性回归模型并存储预测
feature_cols = ['al']
X = glass[feature_cols]
y = glass.household
linreg.fit(X, y)
glass['household_pred'] = linreg.predict(X)
plt.show()

#包括回归线的散点图
plt.scatter(glass.al, glass.household)
plt.plot(glass.al, glass.household_pred, color='red')
plt.xlabel('al')
plt.ylabel('household')
plt.show()

        输出结果如下:
预测的前六行:
   id       ri     na    mg    al     si     k    ca   ba    fe  glass_type  \
0   1  1.52101  13.64  4.49  1.10  71.78  0.06  8.75  0.0  0.00           1   
1   2  1.51761  13.89  3.60  1.36  72.73  0.48  7.83  0.0  0.00           1   
2   3  1.51618  13.53  3.55  1.54  72.99  0.39  7.78  0.0  0.00           1   
3   4  1.51766  13.21  3.69  1.29  72.61  0.57  8.22  0.0  0.00           1   
4   5  1.51742  13.27  3.62  1.24  73.08  0.55  8.07  0.0  0.00           1   
5   6  1.51596  12.79  3.61  1.62  72.97  0.64  8.07  0.0  0.26           1   

    ri_pred  
0  1.519220  
1  1.518576  
2  1.518130  
3  1.518749  
4  1.518873  
5  1.517932  
        部分输出如下图所示,绘制图形al和ri基本点状图:

【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第5张图片

        将预测的线性回归直线结果和散点图同时显示出来:
【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第6张图片


【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第7张图片

        拟合逻辑回归代码:

# -*- coding: utf-8 -*-
"""
Created on Sun Mar 05 18:28:56 2017

@author: eastmount & zj
"""

#-------------逻辑回归-----------------

#拟合Logistic回归模型,存储类预测
import numpy as np
nums = np.array([5, 15, 8])
np.where(nums > 10, 'big', 'small')  


#将household_pred转换为 1或0   
glass['household_pred_class'] = np.where(glass.household_pred >= 0.5, 1, 0)
print(glass.head(6))
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(C=1e9)
feature_cols = ['al']
X = glass[feature_cols]
y = glass.household
logreg.fit(X, y)
glass['household_pred_class'] = logreg.predict(X)


#绘图-显示预测结果
plt.scatter(glass.al, glass.household)
plt.plot(glass.al, glass.household_pred_class, color='red')
plt.xlabel('al')
plt.ylabel('household')
plt.show()

glass['household_pred_prob'] = logreg.predict_proba(X)[:, 1]
#绘图 绘制预测概率

plt.scatter(glass.al, glass.household)
plt.plot(glass.al, glass.household_pred_prob, color='red')
plt.xlabel('al')
plt.ylabel('household')
plt.show()

#检查一些例子的预测
print (logreg.predict_proba (1))
print (logreg.predict_proba(2))
print (logreg. predict_proba (3))
输出如下图所示:

【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第8张图片

【Python数据挖掘课程】九.回归模型LinearRegression简单分析氧化物数据_第9张图片

        最后希望这篇文章对你有所帮助,尤其是我的学生和接触数据挖掘、机器学习的博友。新学期开始,各种事情,专注教学、科研及项目,加油~
        爱你的一切,伴着尤克里里的琴声写了一下午,谢谢我的女神。
       (By:Eastmount 2017-03-05 下午6点半  http://blog.csdn.net/eastmount/ )


你可能感兴趣的:(机器学习,Python数据挖掘课程,知识图谱,web数据挖掘及NLP)