代码如下:
#! python3
# -*- encoding: utf-8 -*-
"""
Created on Mon Sep 26 08:02:10 2022
@author: eanson
"""
import pandas as pd
import torch
import math
import os
# 训练集比例
train_proportion = 0.7
#####################################################################
data_file = os.path.join('HW1 linear model', 'data1.txt')
data = pd.read_csv(data_file, header=None, names=[
"Room Size", "Room Amount", "Price"])
# 训练集按照比例划分
m = math.floor(len(data)*train_proportion)
X_train_pd, y_train_pd, X_cv_pd, y_cv_pd = data.iloc[:m, 0:2], data.iloc[:m,
2], data.iloc[m+1:, 0:2], data.iloc[m+1:, 2]
# 转换为张量格式
X_train, y_train = torch.tensor(
X_train_pd.values), torch.tensor(y_train_pd.values)
X_cv, y_cv = torch.tensor(X_cv_pd.values), torch.tensor(y_cv_pd.values)
############################################################################
# 正规方程
"""
$$
w=(X^TX)^{-1}X^Ty
$$
"""
w = X_train.t().mm(X_train).inverse().mm(X_train.t()).mm(y_train)
报错:
(d2l) yanshengdeMacBook-Pro:MachineLearning_HW_CQUT eanson$ cd /Users/eanson/Documents/ml/MachineLearning_HW_CQUT ; /usr/bin/env /Users/eanson/opt/miniconda3/envs/d2l/bin/python /Users/eanson/.vscode/extensions/ms-python.python-2021.2.633441544/pythonFiles/lib/python/debugpy/launcher 59765 -- /Users/eanson/Documents/ml/MachineLearning_HW_CQUT/linear_regression.py
Traceback (most recent call last):
File "/Users/eanson/Documents/ml/MachineLearning_HW_CQUT/linear_regression.py", line 37, in <module>
w = X_train.t().mm(X_train).inverse().mm(X_train.t()).mm(y_train)
RuntimeError: "linalg_inv_out_cpu" not implemented for 'Long'
具体就是调用Inverse函数时,前面的矩阵不可逆😄
代码如下:
报错:
具体就是调用Inverse函数时,前面的矩阵不可逆😄