Python中做线性回归分析

Python与算法 Haran 8年前 (2016-09-23) 8450次浏览 0个评论

建模的流程大三步:数据清理处理,模型选择,检验,下面以线性回归为例:

导入数据

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets,linear_model


diabetes=datasets.load_diabetes()  #加载数据
diabetes_X=diabetes.data[:,np.newaxis,2]  #嵌套列表转化成列表

通常在这一步需要看数据的类型,分布,对极值,缺失值做处理。

生成训练集和测试集

diabetes_X_train=diabetes_X[:-20] 	#剔除后面20个作为训练集
diabetes_X_test=diabetes_X[-20:]	#剔除前面20个作为测试集合
diabetes_y_train=diabetes.target[:-20]
diabetes_y_test=diabetes.target[-20:]

建模与拟合

regr=linear_model.LinearRegression()	#创建线性回归对象
regr.fit(diabetes_X_train,diabetes_y_train) #将训练集放进去拟合

模型检验

Python的很多检验都都需要自己计算

print("Coefficients:\n",regr.coef_) 	#输出系数
print("Residual sum of sqares:%.2f"
	%np.mean((regr.predict(diabetes_X_test)-diabetes_y_test)**2))		#输出残差平方和
print("Variance score:%.2f" %regr.score(diabetes_X_test,diabetes_y_test)) #R^2

实际结果:

Python中做线性回归分析

做拟合图

plt.scatter(diabetes_X_test,diabetes_y_test,color='black')		#测试集散点图
plt.plot(diabetes_X_test,regr.predict(diabetes_X_test),color='blue',linewidth=3)	#拟合方程
plt.title("The Linear Model")

plt.show()

图:
Python中做线性回归分析
总体上来说,Python做数据建模对统计原理的要求会更高些,因为在做检验的时候需要你计算出来的,不像R直接出来,只是需要解读判断。

源码:

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets,linear_model


diabetes=datasets.load_diabetes()  #加载数据
diabetes_X=diabetes.data[:,np.newaxis,2]  #嵌套列表转化成列表
diabetes_X_train=diabetes_X[:-20] 	#剔除后面20个作为训练集
diabetes_X_test=diabetes_X[-20:]	#剔除前面20个作为测试集合
diabetes_y_train=diabetes.target[:-20]
diabetes_y_test=diabetes.target[-20:]
regr=linear_model.LinearRegression()	#创建线性回归对象
regr.fit(diabetes_X_train,diabetes_y_train) #将训练集放进去拟合


print("Coefficients:\n",regr.coef_) 	#输出系数
print("Residual sum of sqares:%.2f"
	%np.mean((regr.predict(diabetes_X_test)-diabetes_y_test)**2))		#输出残差平方和
print("Variance score:%.2f" %regr.score(diabetes_X_test,diabetes_y_test)) #R^2


plt.scatter(diabetes_X_test,diabetes_y_test,color='black')		#测试集散点图
plt.plot(diabetes_X_test,regr.predict(diabetes_X_test),color='blue',linewidth=3)	#拟合方程
plt.title("The Linear Model")

plt.show()

如有疑问,可以在文章底部留言或邮件(haran.huang@ichdata.com) 我~
喜欢 (3)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址