使用线性回归对房屋价格数据集data1txt进行预测需要使用前350行作为训练351-414行作为测试数据并对测试数据输出评价指标R方和残差平方和。 先用sklearn实现线性回归再用最小二乘法实现。 选用随机种子42:nprandomseed42 再用nploadtxt函数进行读取。注意data1txt中数据的第6列是y值1到5列是属性。
使用sklearn实现线性回归:
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
np.random.seed(42)
# 加载数据
data = np.loadtxt('data1.txt', delimiter=',')
X = data[:, :5]
y = data[:, 5]
# 划分训练集和测试集
X_train = X[:350]
y_train = y[:350]
X_test = X[350:]
y_test = y[350:]
# 使用sklearn实现线性回归
model = LinearRegression()
model.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = model.predict(X_test)
# 输出评价指标
r2 = r2_score(y_test, y_pred)
print('R方:', r2)
print('残差平方和:', np.sum((y_test - y_pred) ** 2))
使用最小二乘法实现线性回归:
import numpy as np
np.random.seed(42)
# 加载数据
data = np.loadtxt('data1.txt', delimiter=',')
X = data[:, :5]
y = data[:, 5]
# 划分训练集和测试集
X_train = X[:350]
y_train = y[:350]
X_test = X[350:]
y_test = y[350:]
# 使用最小二乘法实现线性回归
X_train = np.hstack((np.ones((X_train.shape[0], 1)), X_train))
w = np.linalg.inv(X_train.T @ X_train) @ X_train.T @ y_train
# 在测试集上进行预测
X_test = np.hstack((np.ones((X_test.shape[0], 1)), X_test))
y_pred = X_test @ w
# 输出评价指标
r2 = 1 - np.sum((y_test - y_pred) ** 2) / np.sum((y_test - np.mean(y_test)) ** 2)
print('R方:', r2)
print('残差平方和:', np.sum((y_test - y_pred) ** 2))
``
原文地址: https://www.cveoy.top/t/topic/dXka 著作权归作者所有。请勿转载和采集!