Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据

#2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR
【Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据 
    1.回归模型及基础知识;
        2.UCI数据集;
        3.回归模型简单数据分析。
一. 算法简介-回归模型


1.初识回归
在一个回归模型中,我们需要关注或预测的变量叫做因变量(响应变量或结果变量),我们选取的用来解释因变量变化的变量叫做自变量(解释变量或预测变量)。
分类算法用于离散型分布预测,如KNN、决策树、朴素贝叶斯、adaboost、SVM、Logistic回归都是分类算法;回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。

        回归的目的就是建立一个回归方程用来预测目标值,回归的求解就是求这个回归方程的回归系数。预测的方法即回归系数乘以输入值再全部相加就得到了预测值。
回归最简单的定义:给出一个点集D,用一个函数去拟合这个点集,并且使得点集与拟合函数间的误差最小,如果这个函数曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。
2.线性回归


3.求解线性回归
回归常常指线性回归,回归的求解就是多元线性回归方程的求解。假设有连续型值标签(标签值分布为Y)的样本,有X={x1,x2,...,xn}个特征,回归就是求解回归系数θ=θ0, θ1,…,θn。那么,手里有一些X和对应的Y,怎样才能找到θ呢?
 在回归方程里,求得特征对应的最佳回归系数的方法是最小化误差的平方和。这里的误差是指预测y值和真实y值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以采用平方误差(最小二乘法)。平方误差可以写做:

3.1 梯度下降法(Gradient Descent)
3.2 普通最小二乘法(Normal Equation)
 Normal Equation算法也叫做普通最小二乘法(ordinary least squares),其特点是:给定输人矩阵X,如果X T X的逆存在并可以求得的话,就可以直接采用该方法求解。其求解理论也十分简单:既然是是求最小误差平方和,另其导数为0即可得出回归系数。
4.回归模型性能度量
二. 数据集介绍
数据集包括6种类型的玻璃
http://archive.ics.uci.edu/ml/machine-learning-databases/
三. 回归模型分析
回归模型分析代码如下:
        注意:1) pandas、Matplotlib、seaboard三种不同方法绘制图形,基本类似。
                   2) 代码对应结果不进行详细分析,只提供方法,为提升学生阅读代码能力。

#导入玻璃识别数据集
import pandas as pd
glass=pd.read_csv("glass.csv")
#显示前6行数据
print(glass.shape)
print(glass.head(6))
#seaborn画图软件 
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()





















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值