Мне нужно решить большую систему линейных уравнений методом наименьших квадратов. До сих пор я нашел ответы без ограничений, но хотел бы ограничить свои ответы, чтобы они были неотрицательными. Код, который я использовал, показан ниже. «Лист 1» содержит матрицу размером 30x135, а «Лист 2» — матрицу размером 30x1.
import pandas as pd
import numpy as np
df = pd.read_excel("C:\\example\price_analysis.xlsx", sheet_name = "Sheet1")
print(df)
dg = pd.read_excel("C:\\example\price_analysis.xlsx", sheet_name = "Sheet2")
print(dg)
z = np.linalg.lstsq(df,dg, rcond=None)
print(z)
Я попытался использовать ответ из этого сообщения, но не смог не решить, как найти результат наименьших квадратов, где все значения положительные, а не просто изменить все отрицательные значения на 0.
scipy
, с другой стороны, должен иметь методы для этого. - person ForceBru   schedule 04.01.2019scipy.optimize.minimize
, как указано в вашей ссылке, но в этом случае: пропустите градиенты (и не используйте численное дифференцирование, как это сделано в ссылке). Первый будет быстрее и проще для небольших/плотных инстансов. Для больших/разреженных экземпляров L-BFGS-B внутриminimize
будет намного быстрее. - person sascha   schedule 04.01.2019