机器学习在预测方面的应用,根据预测值变量的类型可以分为分类问题(预测值是离散型)和回归问题(预测值是连续型),前面我们介绍了机器学习建模处理了分类问题(具体见之前的文章),接下来我们以波斯顿房价数据集为例,做一个回归预测系列的建模文章。
实现功能:
特征与目标之间是非线性关系,需使用多项式回归,scikit-learn对多项式回归没有直接的方法,而是在数据预处理模块sklearn.preprocessing提供了PolynomialFeatures()类,该类将数据集变换为具有高次项特征的新数据集,将原始问题转化为线性回归问题,再使用线性回归方法对转化后的数据集进行训练,从而间接地进行多项式回归分析。
实现代码:
from sklearn.linear_modelimport LinearRegression
from sklearn.datasetsimport load_boston
import pandasas pd
import matplotlib.pyplotas plt
from sklearn.preprocessingimport PolynomialFeatures
import seabornas sns
# 加载数据集
boston=load_boston()
df=pd.DataFrame(boston.data,columns=boston.feature_names)
df['target']=boston.target
#查看数据项
features=df[boston.feature_names]
target=df['target']
#数据集划分
split_num=int(len(features)*0.8)
X_train=features[:split_num]
Y_train=target[:split_num]
X_test=features[split_num:]
Y_test=target[split_num:]
# 多项式回归建模预测
boston_poly=PolynomialFeatures(2)
boston_poly.fit(X_train)
X_train2=boston_poly.transform(X_train)
print('原始数据集X的形状为:',X_train.shape)
print('X转换为X2后的形状为:',X_train2.shape)
X_test2=boston_poly.transform(X_test)
lin_reg=LinearRegression().fit(X_train2,Y_train)
y_reg_pred=lin_reg.predict(X_test2)
# 可视化部分
sns.set(font_scale=1.2)
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False
plt.rc('font',size=14)
plt.plot(list(range(0,len(X_test))),Y_test,marker='o')
plt.plot(list(range(0,len(X_test))),y_reg_pred,marker='*')
plt.legend(['真实值','预测值'])
plt.title('Boston房价多项式回归预测值与真实值的对比')
plt.show()
实现效果:
本人读研期间发表5篇SCI数据挖掘相关论文,会不定期分享一些关于python机器学习、深度学习、数据挖掘基础知识与案例,致力于以最简单的方式理解和学习它们,欢迎关注一起交流讨论。
关注订阅号(数据杂坛)获取相关数据集和源码,了解更多