【Python】广义线性回归(多项式回归)——东北大学数据挖掘实训一(3)

(4)再利用多项式回归对数据进行拟合,并进行预测;将观测值与拟合值,进行图形展示(同上)。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
df=pd.read_csv("C:\\Users\\zzh\\Desktop\\dataMiningExperment\\第一次数据挖掘实训\\death rate.csv")
df.head()
Year Age Female_Exp Male_Exp q_female q_male Female_death Male_death L_female_exp L_male_exp
0 1951 0.0 53684.67 57059.14 0.018497 0.024273 993.005341 1384.996505 10.890883 10.951844
1 1951 1.0 56056.20 59379.55 0.001944 0.002021 108.973253 120.006071 10.934110 10.991705
2 1951 2.0 59026.83 61855.13 0.001186 0.001455 70.005820 89.999214 10.985747 11.032550
3 1951 3.0 60794.23 63620.28 0.000888 0.000959 53.985276 61.011849 11.015250 11.060688
4 1951 4.0 61980.55 65167.32 0.000484 0.001013 29.998586 66.014495 11.034576 11.084713
df=df.dropna() #删除有缺失值的行
df=df[(df.q_male>0) & (df.q_male<=1)]   #取出死亡率在0<q<=1范围内的数据
x=df[['Year','Age','L_male_exp']]
y=df['Male_death']
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.25,random_state=2) # 划分训练集和测试集
plt.rc('font', family='SimHei', size=15) #绘图中的中文显示问题,图表字体为SimHei,字号为15
#plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
##这里指定使用岭回归作为基函数
model = make_pipeline(PolynomialFeatures(2), Ridge())
model.fit(x_train, y_train)
##根据模型预测结果
y_predict = model.predict(x_test)

# 绘图
# 预测值和真实值画图比较
plt.figure(figsize=(9,8))  
plt.scatter(y_test,y_predict,c='',marker = 'o',edgecolors='k')  #空心圆
plt.xlabel("真实值")
plt.ylabel("预测值")
plt.title("多项式回归预测值和真实值之间的关系", fontsize=20)
plt.grid(b=True)#加网格
plt.savefig('多项式回归预测值和真实值之间的关系') #保存图片文件命名为

在这里插入图片描述

posted @ 2019-12-28 20:35  爱做梦的子浩  阅读(400)  评论(0编辑  收藏  举报