Python回归预测建模实战-随机梯度下降法预测房价(附源码和实现效果)

机器学习在预测方面的应用,根据预测值变量的类型可以分为分类问题(预测值是离散型)和回归问题(预测值是连续型),前面我们介绍了机器学习建模处理了分类问题(具体见之前的文章),接下来我们以波斯顿房价数据集为例,做一个回归预测系列的建模文章。

实现功能:

使用sklearn提供的随机梯度下降法回归(SGDRegressor)的API对波士顿房价数据集进行预测,并尝试将预测结果进行分析。

实现代码:

from sklearn.datasets import load_boston
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import preprocessing
from sklearn.model_selection import cross_val_score
from sklearn import metrics
from sklearn.linear_model import SGDRegressor
# 辅助函数
def cross_val(model,X,Y):
    pred = cross_val_score(model, X, Y, cv=10)
    return pred.mean()

def print_evaluate(true, predicted):
    mae = metrics.mean_absolute_error(true, predicted)
    mse = metrics.mean_squared_error(true, predicted)
    rmse = np.sqrt(metrics.mean_squared_error(true, predicted))
    r2_square = metrics.r2_score(true, predicted)
    print('MAE:', mae)
    print('MSE:', mse)
    print('RMSE:', rmse)
    print('R2 Square', r2_square)
    print('__________________________________')

# 加载数据集
boston=load_boston()
df=pd.DataFrame(boston.data,columns=boston.feature_names)
df['target']=boston.target
#查看数据项
features=df[boston.feature_names]
target=df['target']
#数据归一化处理
min_max_scaler = preprocessing.MinMaxScaler()
features = min_max_scaler.fit_transform(features)
#数据集划分
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:]
#随机梯度下降建模
sgd_reg = SGDRegressor(n_iter_no_change=250, penalty=None, eta0=0.0006, max_iter=100000)
print(cross_val(sgd_reg,X_train, Y_train))
sgd_reg.fit(X_train, Y_train)
test_pred = sgd_reg.predict(X_test)
train_pred = sgd_reg.predict(X_train)
print('Test set evaluation:\n_____________________________________')
print_evaluate(Y_test, test_pred)
print('Train set evaluation:\n_____________________________________')
print_evaluate(Y_train, train_pred)
# 可视化部分
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))),test_pred,marker='*')
plt.legend(['真实值','预测值'])
plt.title('Boston房价随机梯度下降预测值与真实值的对比')
plt.show()

实现效果:

Python回归预测建模实战-随机梯度下降法预测房价(附源码和实现效果)_第1张图片

 

本人读研期间发表5篇SCI数据挖掘相关论文,现在在某研究院从事数据挖掘相关工作,对数据挖掘有一定的认知和理解,会不定期分享一些关于python机器学习、深度学习、数据挖掘基础知识与案例。

致力于只做原创,不追求内容量,只为以最简单的方式让你理解和学习它们,关注我一起交流成长。

关注V订阅号:数据杂坛,即可在后台联系我获取相关数据集和源码,送有关数据分析、数据挖掘、机器学习、深度学习相关的电子书籍。

你可能感兴趣的:(机器学习,可视化分析,数据分析,python,回归,数据分析,数据挖掘)