使用线性回归对房屋价格数据集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
np.random.seed(42)
# 读取数据
data = np.loadtxt('data1.txt', delimiter=',')
X_train, y_train = data[:350, :5], data[:350, 5]
X_test, y_test = data[351:, :5], data[351:, 5]
# 使用sklearn实现线性回归
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
# 输出评价指标R方和残差平方和
from sklearn.metrics import r2_score, mean_squared_error
print('R方:', r2_score(y_test, y_pred))
print('残差平方和:', mean_squared_error(y_test, y_pred) * len(y_test))
使用最小二乘法实现线性回归:
import numpy as np
np.random.seed(42)
# 读取数据
data = np.loadtxt('data1.txt', delimiter=',')
X_train, y_train = data[:350, :5], data[:350, 5]
X_test, y_test = data[351:, :5], data[351:, 5]
# 使用最小二乘法实现线性回归
def linear_regression(X, y):
X = np.insert(X, 0, 1, axis=1)
w = np.linalg.inv(X.T @ X) @ X.T @ y
return w
w = linear_regression(X_train, y_train)
y_pred = np.insert(X_test, 0, 1, axis=1) @ w
# 输出评价指标R方和残差平方和
from sklearn.metrics import r2_score, mean_squared_error
print('R方:', r2_score(y_test, y_pred))
print('残差平方和:', mean_squared_error(y_test, y_pred) * len(y_test))
``
原文地址: http://www.cveoy.top/t/topic/dXgO 著作权归作者所有。请勿转载和采集!