Я ищу причину ошибки в анализе линейной регрессии с использованием набора данных boston house-picres.
Место, где генерируется ошибка, np.linalg.lstsq () '.
TypeError: Не найдено l oop, совпадающего с речевой подписью, и преобразование было найдено для ufun c lstsq n
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_boston
# Load the boston house-prices dataset
boston = load_boston()
boston_df = DataFrame(boston.data)
# rename columns
boston_df.columns = boston.feature_names
boston_df['Price'] = boston.target
# RM : average number of rooms per dwelling
X = boston_df.RM
# 1*2 matrix transformation
X = np.vstack(boston_df.RM)
X = np.array([[value,1] for value in X])
Y = boston_df.Price
# Return the least-squares solution to a linear matrix equation.
m, b = np.linalg.lstsq(X, Y)[0] # Error occurrence
Возникла проблема с процессом преобразования матрицы 1 * 2. Проблема была решена путем изменения его следующим образом.
до
# 1*2 matrix transformation
X = np.vstack(boston_df.RM)
X = np.array([[value,1] for value in X])
после
X = np.vstack([boston_df.RM,np.ones(len(boston_df.RM))]).T
Результат
plt.plot(boston_df.RM, boston_df.Price, 'o')
x = boston_df.RM
plt.plot(x, m*x + b, 'r', label='Best Fit Line')