【sklearn】线性回归 - 预测波士顿房价

目的

本文使用Python的sklearn类库,基于对机器学习线性回归算法的理论学习,利用sklearn中集成的波士顿房价数据,以此来对线性回归的理论知识进行一次实践总结。

本文不以预测的准确率为目的,只是简单的对机器学习的线性回归等理论知识进行一次实践总结,以此来体验下sklearn类库的使用方法。

美国波士顿房价的数据集是sklearn里面默认的数据集,sklearn内置的数据集都位于datasets子模块下。一共506套房屋的数据,每个房屋有13个特征值。

线性回归

线性回归一般用来解决连续值变量预测问题,针对的是数值型的样本。用来探索自变量和因变量之间的线性相关关系。

线性回归就是值利用样本,产生拟合方程,回归的求解就是求这个回归方程的回归系数。一旦我们得到了这个方程,预测的方法当然十分简单,回归系数乘上输入值再全部相加就得到了预测值。

实现

导入数据集:

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
%matplotlib inline
import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split  # 对数据集切分
from sklearn.metrics import r2_score
# 机器算法模型
from sklearn.neighbors import KNeighborsRegressor  # KNN,即K近邻算法
from sklearn.linear_model import LinearRegression  # 多元线性回归算法
from sklearn.linear_model import Ridge  # 线性回归算法Ridge回归,岭回归
from sklearn.linear_model import Lasso  # 线性回归算法Lasso回归,可用作特征筛选
from sklearn.tree import DecisionTreeRegressor  # 决策树,既可以做分类也可以做回归(本文主要用于分类问题)
from sklearn.svm import SVR  # 支持向量机

生成训练数据和测试数据:

# 生成训练数据和测试数据
boston = datasets.load_boston()
train = boston.data  # 样本
target = boston.target  # 标签

# 切割数据样本集合测试集
X_train, x_test, y_train, y_true = train_test_split(train, target, test_size=0.2)  # 20%测试集;80%训练集
# 可视化
data_df = pd.DataFrame(boston.data, columns=boston.feature_names)
data_df['房价值'] = boston.target
data_df.head(10)

# 创建学习模型
knn = KNeighborsRegressor()
linear = LinearRegression()
ridge = Ridge()
lasso = Lasso()
decision = DecisionTreeRegressor()
svr = SVR()

在sklearn中,所有的机器学习算法都以“估计器”的形式来呈现,每一个估计器都是一个类,机器学习模型通过实例化一个估计器的类来进行创建。每一个算法估计器,无论是监督学习算法,还是非监督学习算法,都拥有一个fit()方法,用于接收训练数据集来训练数据。 

# 训练模型
knn.fit(X_train, y_train)  # 学习率、惩罚项都封装好了
linear.fit(X_train, y_train)
ridge.fit(X_train, y_train)
lasso.fit(X_train, y_train)
decision.fit(X_train, y_train)
svr.fit(X_train, y_train)
# 预测数据
y_pre_knn = knn.predict(x_test)
y_pre_linear = linear.predict(x_test)
y_pre_ridge = ridge.predict(x_test)
y_pre_lasso = lasso.predict(x_test)
y_pre_decision = decision.predict(x_test)
y_pre_svr = svr.predict(x_test)

print(linear.coef_)  # w值
print(linear.intercept_)  # b值

w值,b值打印结果一览: 

[-1.03596002e-01  4.39826541e-02  6.64195258e-03  1.99195785e+00
 -1.67453226e+01  3.31670567e+00  1.98640843e-02 -1.35096762e+00
  2.84150975e-01 -1.09763500e-02 -1.07148109e+00  8.62201927e-03
 -5.94514771e-01]
40.52549272350584

 

# 评分,R2 决定系数(拟合优度)。模型越好:r2→1;模型越差:r2→0
knn_score = r2_score(y_true, y_pre_knn)
linear_score = r2_score(y_true, y_pre_linear)
ridge_score = r2_score(y_true, y_pre_ridge)
lasso_score = r2_score(y_true, y_pre_lasso)
decision_score = r2_score(y_true, y_pre_decision)
svr_score = r2_score(y_true, y_pre_svr)
# 绘图
# KNN
plt.plot(y_true, label='true')
plt.plot(y_pre_knn, label='knn')
plt.legend()

# Linear
plt.plot(y_true, label='true')
plt.plot(y_pre_linear, label='linear')
plt.legend()

# Ridge
plt.plot(y_true, label='true')
plt.plot(y_pre_ridge, label='ridge')
plt.legend()

# Lasso
plt.plot(y_true, label='true')
plt.plot(y_pre_lasso, label='lasso')
plt.legend()

# Decision
plt.plot(y_true, label='true')
plt.plot(y_pre_decision, label='decision')
plt.legend()

# SVR
plt.plot(y_true, label='true')
plt.plot(y_pre_svr, label='svr')
plt.legend()

plt.show()

  • 19
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用线性回归模型来预测波士顿房价波士顿房价数据集是一个经典的机器学习数据集,其中包含了影响波士顿地区房价的13个特征,如犯罪率、房间数量、学生与教师比例等。我们可以使用这些特征来训练一个线性回归模型,然后利用该模型来预测其他房屋的价格。 以下是使用Python中的scikit-learn库来实现线性回归模型的示例代码: ```python import numpy as np from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error # 加载波士顿房价数据集 boston = load_boston() X = boston.data y = boston.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建并训练线性回归模型 model = LinearRegression() model.fit(X_train, y_train) # 在测试集上进行预测 y_pred = model.predict(X_test) # 计算均方误差(mean squared error) mse = mean_squared_error(y_test, y_pred) print("均方误差:", mse) ``` 在上述代码中,我们首先加载了波士顿房价数据集,并将数据集划分为训练集和测试集。然后,我们创建了一个线性回归模型并在训练集上进行训练。最后,我们使用训练好的模型在测试集上进行预测,并计算预测结果与真实结果之间的均方误差。 这样,我们就可以使用线性回归模型来预测波士顿房价了。当然,这只是一个简单的示例代码,你可以根据实际需求进行更多的特征工程和模型优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值