Python机器学习及实践从零开始通往Kaggle竞赛之路之第二章 回归分析之线性回归

前言:前面的几个程序主要是用于对数据集进行分类,本节开始回归分析部分的实验。回归分析是指定量的预测一堆属性和标签属性之间的关系。本部分主要使用的方法有,线性回归分析、支持向量机的回归分析、K近邻回归分析、回归树分析、以及回归分析的测评方式。

 

(LinearRegression, 线性回归)线性回归的目标函数是找到一个最小函数f(x)使得min( f(x) - y)^{^{2}},本节使得数据集为波士顿房价。对于回归分析效果的评价主要有三种方式,第一种方式均方误差mean_absoluate_error统计f(x) - y)的均值,第二种方式mean_squared_error( f(x) - y)^{^{2}}, 第三种方式r2_score =1- \frac{y-f(x))}{y-\bar{y}}^{2},其反应数据集的波动性,如果波动越小表示输出的可能接近无穷小。

 

代码分析:

1、加载数据集,并将数据集划分成训练集和测试集

2、对训练数据集进行标准化变换

3、定义一个LinearRegression()对象,并调用其中的方法fit()训练数据集

4、使用三种方式评价线性回归的效果: r2_score, mean_squared_error, mean_absolute_error

 

 

参考代码:

# -*- coding: utf-8 -*-
# @Time    : 2019/4/8 9:24
# @Author  : YYLin
# @Email   : 854280599@qq.com
# @File    : Seven-Program-LinearRegression-Boston.py
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import SGDRegressor
# 如果数据集具有标签的话,使用以下三个方法评价模型的效果
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error

boston = load_boston()
print ("boston房价的描述:",boston.DESCR,boston)
X = boston.data
y = boston.target

# 随机采样25%的数据构建测试样本,其余作为训练样本。
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)

# 分析回归目标值的差异。
print("The max target value is", np.max(boston.target))
print("The min target value is", np.min(boston.target))
print("The average target value is", np.mean(boston.target))

# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
X_train = ss_X.fit_transform(X_train)
y_train = ss_y.fit_transform(y_train)

X_test = ss_X.transform(X_test)
y_test = ss_y.transform(y_test)

# 使用LinearRegression对测试数据进行回归预测。
lr = LinearRegression()
lr.fit(X_train, y_train)
lr_y_predict = lr.predict(X_test)

# 使用SGDRegressor对测试数据进行回归预测
sgdr = SGDRegressor()
sgdr.fit(X_train, y_train)
sgdr_y_predict = sgdr.predict(X_test)

# 在已有标签的情况下使用mean_squared_error评价模型的效果
print('The value of default measurement of LinearRegression is', lr.score(X_test, y_test))
# 从sklearn.metrics依次导入r2_score、mean_squared_error以及mean_absoluate_error用于回归性能的评估。

#对LinearRegression 使用r2_score模块,mean_squared_error模块,mean_absolute_error模块评价模型的结果
print('The value of R-squared of LinearRegression is', r2_score(y_test, lr_y_predict))
print('The mean squared error of LinearRegression is', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))
print('The mean absoluate error of LinearRegression is', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(lr_y_predict)))

# 对SGDRegressor使用r2_score模块,mean_squared_error模块,mean_absolute_error模块评价模型的结果
print('The value of default measurement of SGDRegressor is', sgdr.score(X_test, y_test))
print('The value of R-squared of SGDRegressor is', r2_score(y_test, sgdr_y_predict))
print('The mean squared error of SGDRegressor is', mean_squared_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(sgdr_y_predict)))
print('The mean absoluate error of SGDRegressor is', mean_absolute_error(ss_y.inverse_transform(y_test), ss_y.inverse_transform(sgdr_y_predict)))

 

实验结果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值