多元线性回归的python代码实现(基于sklearn的波士顿房价boston数据集为例)

基于sklearn自带数据集波士顿房价数据集进行多元线性回归算法代码实现,其数据集包括13个特征向量,共计506个样本集。

本文代码实现步骤如下:

1. 获取数据集

2. 数据集切分,老规矩,80%训练,20%测试

3. 数据预处理(本用例尝试过归一化处理,但发现效果不好,不是每一个算法和模型都适用于归一化处理)

4. 建模并训练

5. 使用并评估

具体代码如下:

# -*- coding: UTF-8 -*-
import numpy as np
from sklearn import datasets
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 1.获取数据集
boston = datasets.load_boston()
print(boston.keys())
print(boston.feature_names)  # 所有特征向量名称
# ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT']
data = boston.data  # (506, 13)
target = boston.target
print(np.shape(data))
print(np.shape(target))

# 2. 数据集切分
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=666)

# 3. 数据预处理
standardscaler = StandardScaler()
standardscaler.fit(X_train)
# X_train = standardscaler.transform(X_train)  # 归一化并不适用于此数据集和模型
# X_test = standardscaler.transform(X_test)
X_train = X_train[y_train < 50]  # 过滤掉上限极值对模型正确性是比较有效的
X_test = X_test[y_test < 50]
y_train = y_train[y_train < 50]
y_test = y_test[y_test < 50]
# 4.建立线形回归模型
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)
A = lin_reg.coef_  # 训练出来的系数
b = lin_reg.intercept_  # 训练出来的截距
print("线性回归模型为:y = {}x1 + {}x2 + {}x3 + {}x4 + {}x5 + {}x6 + "
      "{}x7 + {}x8 + {}x9 + {}x10 + {}x11 + {}x12 + {}x13 + {}.".
      format(A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9], A[10], A[11], A[12], b))

# 5.使用并评估回归模型
train_score = lin_reg.score(X_train, y_train)
test_score = lin_reg.score(X_test, y_test)
print("训练数据集模型得分{}".format(train_score))
print("测试数据集模型得分{}".format(test_score))
y_pred = lin_reg.predict(X_test)
# print(y_pred)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年11月7日
下一篇 2023年11月7日

相关推荐